Qt提供了便捷的多语言处理工具Linguist, 用法如下:
1、在项目文件.pro中添加语言文件名:
TRANSLATIONS += QQ_zh.ts QQ_en.ts
2、使用lupdate工具生成.ts文件。
Lupdate在安装位置或者QCreator: Tools -> External -> Linguist->Update Translations (lupdate)。
单击后会在工程目录下生成QQ_zh.ts QQ_en.ts。
3、使用Linguist打开.ts文件,翻译。
Linguist命令在安装目录下,为了便于在QCreator中使用,进行如下配置:
Tools -> External ->Configure, 在Linguist目录下And Tool :
设置Executable: %{CurrentProject:QT_INSTALL_BINS}\linguist.
使用该工具可直接打开Linguist。读入.ts文件进行翻译,注意:只有包含在ts()中的字符串才能在.ts中出现。所以,待翻译的字符串应该放在tr()中。
4、发布。翻译完成后,点击发布,生成对应的.qm文件。
5、安装翻译器,需在窗口创建之前:
QApplication a(argc, argv); QTranslator translator; translator.load(":/qm/QQ_zh.qm"); a.installTranslator(&translator); LoginDialog w; w.show(); return a.exec();
以上步骤之后,即可实现多语言化。
以上方法只能在程序开始前切换语言。想要在程序打开且不关闭程序时动态的切换语言,需要重新调用需要翻译的字符串。为了方便起见,一般将需要多语化的设置语言放在一个固定的函数中,切换时再调用一遍。如下:
void SystemTray::retranslate() { showAction->setText(tr("show")); quitAction->setText(tr("quit")); }