當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > qt化步驟
一.代碼編寫注意:
將需要翻譯的字符串用 QObject::tr("Hello world!").
或者QApplication::translate("Dialog", "Hello world!", 0); 包含
例如:
第一種:
lab = new QLabel(tr("trans_text","text"), this);
tr參數(shù)第一個(gè)表示翻譯字符(標(biāo)識(shí)),第二個(gè)為翻譯提示
第二種(一般為UI編輯器方式):
pushButton->setText(QApplication::translate("Widget", "click", 0));
二.生成翻譯文件
1.在pro文件中加入關(guān)鍵字,例如:
TRANSLATIONS += XXX/en.ts \
XXX/zh.ts
表示要在XXX目錄生成相應(yīng)的翻譯文件。
2.保存項(xiàng)目后運(yùn)行:
菜單欄->工具->外部->Qt語言家->lupdate
相當(dāng)于執(zhí)行了lupdate *.pro
會(huì)自動(dòng)在目錄生成兩個(gè)文件:en.ts zh.ts
3.運(yùn)行l(wèi)inguist工具加載en.ts zh.ts兩個(gè)文件并分別進(jìn)行相應(yīng)的翻譯。
每一個(gè)翻譯完了按ctrl+ENTER確認(rèn)下即可。
4.翻譯完成后運(yùn)行:
菜單欄->工具->外部->Qt語言家->release
相當(dāng)于執(zhí)行了 lrelease *.pro
會(huì)自動(dòng)在相應(yīng)目錄生成兩個(gè)文件:en.qm zh.qm
三、語言切換
1.在程序啟動(dòng)時(shí)候已經(jīng)確定,不需要?jiǎng)討B(tài)切換
//可定義成靜態(tài)
QTranslator translator;
translator.load(Global::rootPath+Global::langPath+"zh.qm");
qApp->installTranslator(&translator); //qApp是全局的變量
注意上面語句一定要在頁面實(shí)例化之前。
2.動(dòng)態(tài)語言切換:每個(gè)類重寫LanguageChange事件
void XXX::changeEvent(QEvent *e)
{
if(e->type()==QEvent::LanguageChange){ //如果是語言事件
label->setText(tr("trans_we")); //定義所有需要自動(dòng)改變的部件
}else{
QWidget::changeEvent(e);
}
}
相應(yīng)的觸發(fā)槽中重新加載語言文件即可,會(huì)自動(dòng)觸發(fā)所有對(duì)象的changeEvent事件
translator->load("XXX/zh.qm");
qApp->installTranslator(translator); //qApp是全局的變量