在使用Qt作为界面开发有个好处,就是Qt有个机制可以使界面语言翻译成不同国家的语言,这就是Qt国际化。
Qt国际化使用的方式:
1. 首先是把所有需要翻译的字符串都用tr()包起来,因为Qt会在加载的时候通过这个调用去判断是否是需要翻译的字符串,另外也可以使用QTranslator::translate函数翻译。
2.然后需要在pro文件里面指定一个 ts文件,在编译的时候就会把需要翻译的字符串生成到ts文件,然后使用Linguist对文件进行编辑,把字符串翻译成对应的国家的语言。如果是多个国家,可以把刚刚那个文件拷贝多次,然后进行翻译即可。
TRANSLATIONS = zh.ts
3. 最后需要应用程序加载你想要使用的翻译文件。
QtSingleApplication a(argc, argv);
QTranslator qtTranslators[2];
{
if (Options::getInstance()->zh) {
// Qt中文翻译
QDir dir(qApp->applicationDirPath() + "/translations");
dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks);
QFileInfoList list = dir.entryInfoList();
for (int i = 0; i < list.size(); ++i)
{
if (list.at(i).fileName().contains("zh_CN"))
{
qtTranslators[0].load(list.at(i).filePath());
a.installTranslator(&qtTranslators[0]);
break;
}
}
qtTranslators[1].load(qApp->applicationDirPath() + "/zh.qm");
a.installTranslator(&qtTranslators[1]);
}
}
注: 在使用Qt的一些控件的时候,Qt会有一些自己的翻译,比如右键菜单的翻译等。如果需要对这些进行翻译,那就需要加载Qt提供的中文翻译文件。路径为:Qt安装路径\msvc2013\translations\qt_zh_CN.qm. 但是这个文件在Qt5上面发现有QTextEdit等类的右键菜单没有被翻译,可以使用下面链接的翻译文件:https://download.youkuaiyun.com/download/xiaoyan_yt/10308797