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

翻译未成功的问题

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

点击下载测试程序

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt实现国际化和多语言切换需要以下步骤: 1. 在Qt项目创建一个“ts”文件,用于存储翻译后的资源。可以使用Qt自带的工具“Qt Linguist”来创建和编辑这些文件。 2. 在Qt项目使用Qt翻译API来翻译界面元素。例如,使用tr()函数来标记需要翻译的字符串。 3. 使用lupdate工具来生成一个“.ts”文件,其包含需要翻译的所有字符串。 4. 使用Qt Linguist编辑器来翻译这些字符串,并将它们保存到“.ts”文件。 5. 使用lrelease工具来生成一个二进制的翻译文件“qm”文件,其包含翻译后的资源。 6. 在Qt项目加载这些翻译文件,并在运行时切换语言。 下面是一个简单的示例代码,演示如何在Qt实现多语言切换: ```cpp #include <QApplication> #include <QTranslator> int main(int argc, char *argv[]) { QApplication app(argc, argv); // 加载翻译文件 QTranslator translator; translator.load("myapp_zh.qm"); app.installTranslator(&translator); // 设置界面元素的翻译 QLabel label(tr("Hello World!")); label.show(); return app.exec(); } ``` 在上面的例子,我们使用QTranslator类来加载翻译文件,并使用installTranslator()函数将其安装到应用程序。我们还使用了tr()函数来标记需要翻译的字符串。 当应用程序启动时,它将自动加载当前系统语言对应的翻译文件。如果用户切换了语言,我们只需要重新加载对应的翻译文件即可。 希望这可以帮助你实现Qt的国际化和多语言切换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值