在工程中,新建一个资源文件,命名为translator
资源文件在工程目录中的结构
2. 修改pro
在pro文件中添加
TRANSLATIONS += resources/tr_zh.ts \resources/tr_en.ts
3.代码中所有需要翻译的字符串用tr("")包含 eg: tr(“中文”)
4.如下图,点击更新翻译(lupdate)
此时会在工程目录新建一个resources文件夹 ,并在其中生成了 tr_en.ts 和 tr_zh.ts 两个文件
5. 打开tr_zh.ts (翻译成中文)
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE TS><TS version="2.1" language="en_US"><context><name>Form</name><message><location filename="../form.cpp" line="10"/><source>中文</source><translation type="unfinished"></translation></message></context></TS>
修改 <translation type="unfinished"></translation> 为 <translation type="unfinished">中文</translation>
打开tr_en.ts(翻译成英文)
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE TS><TS version="2.1" language="en_US"><context><name>Form</name><message><location filename="../form.cpp" line="10"/><source>中文</source><translation type="unfinished"></translation></message></context></TS>
修改<source>中文</source><translation type="unfinished"></translation> 为<source>中文</source><translation type="unfinished">Chinese</translation>
除了上述手动修改,还可以使用Qt Linguist 工具进行编辑
如下图,点击发布翻译(lrelease)
会在resources中 生成 tr_en.qm 和tr_zh.qm两个文件将qm文件添加到工程中
切换
#include <QTranslator>private:QTranslator translator;
if(!qApp->removeTranslator(&translator)){qDebug()<<"remove error....";}if( 中文显示 ){if(translator.load(":/resources/tr_zh.qm")){qApp->installTranslator(&translator);}else{qDebug()<<"load Chinese file error";}}else if(英文显示){if(translator.load(":/resources/tr_en.qm")){qApp->installTranslator(&translator);}else{qDebug()<<"load English file error";}}
**
注:翻译文件加载的位置必须在界面实例化之前完成,否则是没有效果的
**