How can I dynamically switch between languages in my application
来源:百度文库 编辑:神马文学网 时间:2024/04/18 15:49:42
How can I dynamically switch between languages in my application using e.g a QComboBox?
Answer:
In order to achieve this, you can create a function, called e.g retranslateUi() that sets the user visible text for your widgets. It is not possible to switch between the languages without having such a function that gets called everytime the language is changed and that returns a translated version of the text by wrapping it with tr().
Now you can connect the triggered(const QString &) signal of your QComboBox to a slot which will load and install the correct translator. Finally you also need to reimplement the changeEvent() to check for a LanguageChange event and call retranslateUi() when it occurs .
See the documentation:
http://doc.trolltech.com/4.3/qevent.html#Type-enumSee the following example for a demonstration:
#includeclass MainWindow : public QMainWindow{ Q_OBJECTpublic: MainWindow() { translator1 = new QTranslator(this); translator2 = new QTranslator(this); menu = new QMenu(this); menuBar()->addMenu(menu); fileAction = new QAction(this); menu->addAction(fileAction); QComboBox *combo = new QComboBox(this); setCentralWidget(combo); combo->addItem("fr"); combo->addItem("en"); combo->addItem("sp"); connect(combo, SIGNAL(activated(const QString &)), this, SLOT(changeMyLanguage(const QString &))); retranslateUi(); } void retranslateUi() { menu->setTitle(tr("File")); fileAction->setText(tr("First action")); } void changeEvent ( QEvent * event ) { if (event->type() == QEvent::LanguageChange) { retranslateUi(); } QMainWindow::changeEvent(event); } public slots: void changeMyLanguage(const QString & string) { if(string == QString("fr")) { translator1->load("t1_fr", "."); qApp->installTranslator(translator1); } if(string == QString("sp")) { translator2->load("t1_sp", "."); qApp->installTranslator(translator2); } if(string == QString("en")){ qApp->removeTranslator(translator1); qApp->removeTranslator(translator2); } }private: QAction *fileAction; QMenu *menu; QTranslator *translator1; QTranslator *translator2;};#include "main.moc"int main(int argc, char **argv){ QApplication a(argc, argv); MainWindow window; window.resize(50, 50); window.show(); return a.exec();}
How can I dynamically switch between languages in my application
I can make my own money!
How to add a column in a Listview dynamically using WPF
How can i get to Yiwu city? - Yiwu export age...
How to switch careers
I Think I Can
How do I get Dropbox to work on my corporate network?
java.net: Sprinkle Some AJAX Magic in Your Struts Web Application part I
Speaking in 65 different languages胶南
Google Wave是什么? - Out of 8 hours - I have a dream that one day I can finish in 8 hours
我将如何奉献(How can I serve)?——耶鲁大学校长在2010届毕业典礼上的讲话
my diaries in English
China in My Eyes
SHADOWS IN MY DREAM
告诉世界:“Yes,I can!”
How to Create an HTML Editor Application
InfoQ: An Approach to Internal Domain-Specific Languages in Java
Static Detection of Security Vulnerabilities in Scripting Languages
how can you more effectively take notes?
Don't see how it can
Analysis: How multimedia can improve learning
How can l keep From Singing -- Enya
I love my Outlook tickler
I miss my highschool time.