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

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文件->右键->打开方式

1、用XML文本编辑器打开

这里写图片描述

文件打开之后是这样的

<?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文件

2、用Qt Linguist打开

这里写图片描述

这里写图片描述

选中.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文件的路径正确(如果有多个相似版本的项目,有可能将路径混淆);

翻译未成功的问题

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

点击下载测试程序

猜你喜欢

转载自blog.csdn.net/qq_36391817/article/details/77875728