目录
- 1 引言
- 2 实现步骤
- 3 问题
- 4 工具
1 引言
冷实现需要重启软件才会刷新软件显示资源。
2 实现步骤
创建Qt多语言翻译文件.ts,比如命名为Project_zh.ts。
可以通过Qt Creator
直接创建翻译文件,也可以通过VS QT Tools
进行生成。如果是Qt Creator工程。记得在pro配置文件中添加:
#QT语言家
TRANSLATIONS = Project_zh.ts
ts文件会将工程中携带了tr()函数包裹的字符串统计起来,可以对这些资源进行翻译。
如:
string BarTools = tr("修改");
则后续在ts文件中可以对这个字符串进行翻译更改。
而在代码中加载的翻译资源文件主要是.qm文件。
通过以下方式:
QTranslator translator;
string LangFilePath = m_laguage + ".qm"; //这里添加路径,使用绝对路径或者添加到qrc资源文件中
translator.load(QString::fromStdString(LangFilePath));
a.installTranslator(&translator);
其中m_laguage
是想实现的语言,比如中文、英语、俄语,分别都配置一个文件。
3 问题
若添加tr()
之后在ts文件中没发现翻译资源,是由于以下原因:
- 头文件.h中没有添加Q_OBJECT,因为ts文件的实现方式是遍历当前文件中有Q_OBJECT的文件进行收集,所以未添加会出现识别不到的现象。
- 宏定义不能添加tr()字符串,可能和编译实现的方式有关。
4 工具
TS文件和EXCEL互转