VS中使用QT,多国语言翻译问题

来源:互联网 发布:淘宝店铺导航条背景色 编辑:程序博客网 时间:2024/05/01 21:05

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文件->右键->打开方式,设置默认打开方式为该项
这里写图片描述

文件打开之后是这样的

<?xml version="1.0" encoding="utf-8"?><!DOCTYPE TS><TS version="2.1" language="zh_CN"><context>    <name>Human</name>    <message>        <location filename="human.ui" line="14"/>        <source>Human</source>        <translation type="unfinished"></translation>    </message>    <message>        <location filename="human.cpp" line="10"/>        <source>man</source>        <translation type="unfinished"></translation>    </message>    <message>        <location filename="human.cpp" line="14"/>        <source>woman</source>        <translation type="unfinished"></translation>    </message></context></TS>

在translation标签项中填写翻译,保存

<?xml version="1.0" encoding="utf-8"?><!DOCTYPE TS><TS version="2.1" language="zh_CN"><context>    <name>Human</name>    <message>        <location filename="human.ui" line="14"/>        <source>Human</source>        <translation type="unfinished">人类</translation>    </message>    <message>        <location filename="human.cpp" line="10"/>        <source>man</source>        <translation type="unfinished">男人</translation>    </message>    <message>        <location filename="human.cpp" line="14"/>        <source>woman</source>        <translation type="unfinished">女人</translation>    </message></context></TS>

选中.ts文件->右键->lrelease,这样就生成了.qm文件

下面在main.cpp中为程序安装翻译文件

#include "test.h"#include <QtWidgets/QApplication>#include <QTranslator>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文件的路径正确(如果有多个相似版本的项目,有可能将路径混淆);

翻译未成功的问题

如果项目之前就已经有翻译文件,将项目重新生成一遍,步骤为:生成->重新生成;

点击下载测试程序

原创粉丝点击