前言
Qt提供了语言翻译的功能,本文以中英文为例介绍它的用法。
一、修改.pro文件
TRANSLATIONS = chinese.ts english.ts
二、生成.ts文件
点击“更新翻译”后会在项目路径下生成第一步定义的chinese.ts和english.ts文件。
三、翻译
利用工具全局搜索或直接到编译器目录下找到linguist.exe。
用它打开第二步生成的chinese.ts。
源代码中使用了tr括起来的字符串和ui文件控件的text都会被加载进来。
选择字符串,在下方填写相应的译文即可。
四、生成.qm文件
点击发布后会在同一目录下生成chinese.qm文件。
五、使用.qm文件
在代码中加载.qm文件。
#include <QApplication>
#include <QTranslator>
QTranslator *translator = new QTranslator ;
translator->load(":/chinese.qm");
qApp->installTranslator(translator);
运行。
六、总结
1、在代码中尽量使用英文字符,比如
ui->label->setText(tr("你好"));
应改为
ui->label->setText(tr("hello"));
再在翻译文件里设置译文,避免不必要的编码问题。
2、在程序运行过程中,不能动态切换译文,如果要切换语言,需要重新加载程序,重新加载程序的时机可以监听QEvent::LanguageChange事件,调用qApp->installTranslator()成功后,会触发改事件。
3、对于非常量的字符串,qt不支持翻译,需要自己去实现翻译,可以参考qt的方式去实现,利用xml或者json等文件格式来存放翻译信息。