Qt/Qml 多語言翻譯
1、cpp檔案中的翻譯内容需要使用QObject(或繼承它的對象)的tr()方法;
例如: QString str = QObject::tr("please lupdate me");
2、qml檔案中的翻譯内容需要使用qsTr()方法;
例如:var str =qsTr("this is qml");
翻譯幾處配置及操作:
1、項目的.pro或.pri檔案中有TRANSLATIONS +=....編譯時會生成*.ts檔案,
lupdate_only是針對qml檔案的,不然lupdate不會對qml檔案檢測的。
2、更新翻譯(lupdate),産生*.ts檔案;
3、釋出翻譯(lrelease),産生*.qm檔案;
注冊翻譯器源碼 main.cpp #include <QTranslator> #include <QDir> #include <QFileInfoList> // ========================================== // load the language // ========================================== void loadLanguage ( const QString &lang_dir ) { QDir qm_dir( lang_dir ); QFileInfoList qm_list = qm_dir.entryInfoList ( QStringList () << QStringLiteral ( "*_zh_CN.qm" ), QDir :: Files | QDir :: Readable ); if ( qm_list.size () > 0 ) { QTranslator *trans = new QTranslator ; if ( trans->load ( qm_list[ 0 ].baseName (), lang_dir )) { QCoreApplication ::installTranslator ( trans ); } else { qInfo ( "load zh_CN qm file failed. switch to default language" ); delete trans; } } }
int main ( int argc, char *argv[]) { QApplication a(argc, argv);
loadLanguage ( QApplication ::applicationDirPath () );
MainWindow w; w.show ();
return a.exec (); }