QT多语言冷实现以及注意事项

目录

  • 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互转

你可能感兴趣的:(Qt,qt,开发语言)