QT实多国语言切换

Posted xyb617

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT实多国语言切换相关的知识,希望对你有一定的参考价值。

一、生成.qm文件

1,生成ts文件

在QT的项目文件(.pro)中添加:TRANSLATIONS = XXX.ts YYY.ts(如果是多行,则用 分割)

技术图片

 

2,构建项目(必须要构建项目编译)

 

3, 然后执行【工具】-》【外部】-》【QT语言家】-》【更新翻译(lupdate)】,如下图所示,执行完之后项目下就会生成对应的XXX.ts、YYY.ts文件。

技术图片

 

 

4. 生成qm文件

    利用QT语言家:Linguist打开生成的ts文件,将里面需要翻译的地方写上对应的语言,点击如下图所示的按钮:

技术图片

 

 

 5,ts文件翻译完成后,执行Qt Creator中的【工具】-》【外部】-》【QT语言家】-》【部署翻译(lrelease)】就会生成最终要用到的qm文件。

二、编写翻译代码(注意翻译代码必须在主窗口实例化之前

 1 #include "mainwindow.h"
 2 #include <QApplication>
 3 #include<QTranslator>
 4 
 5 int main(int argc, char *argv[])
 6 {
 7     QApplication a(argc, argv);
 8     QTranslator m_translator;
 9     bool result=m_translator.load("/home/xiaoyaobin/q_translator/test_zh");//或者 bool result=m_translator.load("/home/xiaoyaobin/q_translator/test_zh.qm");
10     a.installTranslator(&m_translator);
11 
12     MainWindow w;
13     w.show();
14 
15     return a.exec();
16 }

效果对比:

未翻译的

技术图片

 

 翻译之后

技术图片

 注意事项:

1,.在qt中需要在翻译的文字加上tr,例如btn1->setetxt( tr("hello"));

2,    如下图,tr()函数第一个参数是提取翻译串时用到的ID,后一个则是提供注释用的,并且在做不到翻译串时注释串会被采用,用来当作显示。

label->setText(tr("TXT_HELLO_WORLD","hello_world"));

3,应用已经加载翻译器了应当使用app->removeTranslator函数来删除翻译器,然后重新load,重新install。

以上是关于QT实多国语言切换的主要内容,如果未能解决你的问题,请参考以下文章

Qt多国语言国际化

iOS应用内切换多国语言

C#多国语言DataGridView的标题切换问题

uwp - 使用资源字典实现多国语言切换(重启应用生效)

Lvgl(V8.2)自定义字体实现多国语言切换功能

Lvgl(V8.2)自定义字体实现多国语言切换功能