上文提到了Qt的國際化支持方案,這裏對這一方案進行簡要的說明。 shell
使用Qt的國際化支持和翻譯機制功能來實現中文的顯示,中文字庫的支持仍是必需的,而後就是使用的Qte庫必須包含了翻譯特性,不能將翻譯特性給裁剪掉,即在qconfig-xxx.h配置文件中不能定義有以下的宏: app
#define QT_NO_TRANSLATION
此外還須要使用Qt配套提供的QT Linguist語言工具來輔助實現翻譯工做的完成。 編輯器
這三個工具的使用會涉及到兩種格式的文件,即上面提到的TS文件和qm文件: 函數
<!DOCTYPE TS><TS> <context> <name>AlarmIOSet</name> <message> <source>Alarm IO Settings</source> <translation>報警IO設置</translation> </message> </context>
TRANSLATIONS = show_zh.ts \ show_fr.ts
int main(int argc, char *argv[]) { QApplication app(argc, argv, QApplication::GuiServer); QTranslator translator(0); translator.load("show-zh.qm","."); app.installTranslator(&translator); //QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); QTextCodec* codec = QTextCodec::codecForName("UTF-8"); app.setFont(QFont("wenquanyi",22,87,FALSE,QFont::Unicode)); app.setDefaultCodec(codec); UserLogin *user_login = new UserLogin(0,"User Login", WIN_FLAGS); app.setMainWidget(user_login); return app.exec(); }
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
這樣,就完成了顯示內容的國際化支持實現,也就能夠實現中文的顯示,顯然該方案更具備擴展性。在源代碼中能夠只使用英文來完成全部的編寫,而後翻譯工做留給翻譯文件來完成。 工具