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实多国语言切换的主要内容,如果未能解决你的问题,请参考以下文章