上文提到了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"));
这样,就完成了显示内容的国际化支持实现,也就能够实现中文的显示,显然该方案更具备扩展性。在源代码中能够只使用英文来完成全部的编写,而后翻译工做留给翻译文件来完成。 工具