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 (); }