1. 在程式中所有要翻譯的文字都必須在 QObject::tr()之中
ex:
QMessageBox msgb(this);
msgb.setWindowTitle(tr("Illegal"));
msgb.setText(tr("Illegal product!"));
msgb.setIcon(QMessageBox::Warning);
msgb.exec();
2. 在.pro檔中,設定預計產生的翻譯檔語系名稱及其位置 (本例名稱為 test.pro)
ex:
TRANSLATIONS += ./translations/test_en.ts ./translations/test_tw.ts ./translations/test_jp.ts ./translations/test_cn.ts
3. 執行 lupdate 產生 .ts檔
ex:
lupdate test.pro
4. 使用 Qt Linguist 編輯.ts檔
5. 使用 lrelease 產生 .qm檔
ex:
lrelease ./translations/*.ts
6. copy .qm檔到你所指定的目錄
ex: cp -ax ./translations/*.qm /home/daniel/language/qm/*
7. 在主程式 main當中,依據需求載入你所需的qm檔
ex:
QTranslator translator, defTrans;
QLocale g_sysLocale;
//繁體中文
translator.load("test_tw", "/home/daniel/language/qm");
defTrans.load("qt_zh_TW", "/home/daniel/language/qm");
app.installTranslator(&translator);
app.installTranslator(&defTrans);
g_sysLocale = QLocale(QLocale::Chinese, QLocale::Taiwan);
// 簡體中文
/*
translator.load("test_cn", "/home/daniel/language/qm");
defTrans.load("qt_zh_CN", "/home/daniel/language/qm");
app.installTranslator(&translator);
app.installTranslator(&defTrans);
g_sysLocale = QLocale(QLocale::Chinese, QLocale::China);
*/
QLocale::setDefault(g_sysLocale);
MainWindow mainWin(0);
mainWin.setLocale(g_sysLocale);
mainWin.start();
return app.exec();
8. 所有包在 QObject::tr()中的字串,就會依照所載入的qm檔,做文字置換動作
沒有留言:
張貼留言