QT实多国语言切换

时间:2020-04-07 00:14:49   收藏:0   阅读:98

一、生成.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。

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!