VS版本:VS2010
Qt版本:Qt5.5.1
例 子:英译汉
以下介绍是我站在巨人们的肩膀上,并结合自己在工作中所遇到的问题作出的总结。
在VS中使用Qt编程,VS是不支持中文格式的,所以遇到了语言翻译的问题。例如,一个按钮的名字你是在UI界面上使用中文命名的,现在你要通过代码将该按钮的名字用另一个名字替换,pushButton->setText(“按钮”),这样是不可行的,显示出来的是乱码。这就需要用Qt语言家来翻译文本信息。
翻译的过程主要分为以下三步:
1、lupdate:提取待翻译元素,生成.ts中间文件。
选中.ts文件->右键->lupdate;
2、写翻译内容。
写翻译内容的方法有两种,任选其一即可
① 将.ts文件中所有提取出来的待翻译元素进行翻译。
双击打开.ts文件->找到待翻译元素->在translation标签中填写翻译内容->保存;
② 打开Launch Linguist进行翻译。
Qt5 -> Launch Linguist -> 文件 -> 打开.ts文件 -> 找到待翻译元素进行翻译 -> 保存;
3、lrelease:将翻译好的文件生成qm文件。
选中.ts文件->右键->lrelease;
新建翻译文件
如果当前项目没有翻译文件,需要新增翻译文件则新建.ts文件。
工程右键 -> Create New Translation File -> 英译汉如下图
选择目标语言,这里是英译汉,所以选择中文
点击OK,.ts文件就生成了
选中.ts文件->右键->打开方式
文件打开之后是这样的
<TS version="2.1" language="zh_CN">
<context>
<name>Humanname>
<message>
<location filename="human.ui" line="14"/>
<source>Humansource>
<translation type="unfinished">translation>
message>
<message>
<location filename="human.cpp" line="10"/>
<source>mansource>
<translation type="unfinished">translation>
message>
<message>
<location filename="human.cpp" line="14"/>
<source>womansource>
<translation type="unfinished">translation>
message>
context>
TS>
在translation标签项中填写翻译,保存
<TS version="2.1" language="zh_CN">
<context>
<name>Humanname>
<message>
<location filename="human.ui" line="14"/>
<source>Humansource>
<translation type="unfinished">人类translation>
message>
<message>
<location filename="human.cpp" line="10"/>
<source>mansource>
<translation type="unfinished">男人translation>
message>
<message>
<location filename="human.cpp" line="14"/>
<source>womansource>
<translation type="unfinished">女人translation>
message>
context>
TS>
选中.ts文件->右键->lrelease,这样就生成了.qm文件
选中.ts文件->右键->lrelease,这样就生成了.qm文件
下面在main.cpp中为程序安装翻译文件
#include "test.h"
#include
#include
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTranslator translator;
translator.load("test_zh.qm");
a.installTranslator(&translator);
Test w;
w.show();
return a.exec();
}
无法提取到待翻译元素的问题:
(1)首先,确保在工程代码中所有需要翻译的字符串已用 tr 标示出来。这一点非常重要,没有用 tr 标志的文本将不会翻译,也提取不出来。
(2)lupdate提取待翻译元素时,需要将 待翻译元素所在的.cpp文件保存之后才能提取出来;
(3)如果你是使用Launch Linguist 来进行翻译,请确保你打开的.ts文件的路径正确(如果有多个相似版本的项目,有可能将路径混淆);
翻译未成功的问题
如果项目之前就已经有翻译文件,将项目重新生成一遍,步骤为:生成->重新生成;
点击下载测试程序