天天看點

Qt/Qml 多語言翻譯

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檔案檢測的。

Qt/Qml 多語言翻譯

2、更新翻譯(lupdate),産生*.ts檔案;

Qt/Qml 多語言翻譯

3、釋出翻譯(lrelease),産生*.qm檔案;

Qt/Qml 多語言翻譯

注冊翻譯器源碼 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 (); }

繼續閱讀