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

发布于:2023-09-14 ⋅ 阅读:(117) ⋅ 点赞:(0)

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


网站公告

今日签到

点亮在社区的每一天
去签到