Qt多语言翻译

Qt多语言翻译概述


Qt提供了非常简单易用的多语言翻译机制,其核心类为QTranslator.概括来说就是利用Qt的lupdate工具将项目中所有tr函数包裹的字符串提取到.ts文件中,然后使用Qt Linguist由专门的翻译人员对提取的.ts文件进行逐个单词短语的翻译工作. 翻译完成后输出对应的.qm文件;代码中使用QTranslator的load方法加载.qm文件即可.

Qt多语言翻译步骤


以一个简单的Demo来说明
1> 编写代码,过程中需要注意两个点,第一点是所有需要翻译的单词/短语需要用tr函数包裹;第二点就是.pro文件中需要加入lupdate生成的.ts文件

#include <QApplication>
#include <QLabel>
#include <QString>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QLabel label(nullptr);
    label.setText(QObject::tr("Translate Test"));
    label.show();

    return a.exec();
}

代码很简单,就是单纯的label显示一个字符串,然后需要在项目的.pro文件中加入生成的.ts文件

TRANSLATIONS = demo_zh_CN.ts

2> 使用lupdate生成.ts文件

lupdate ${项目名}.pro

对应生成的.ts文件内容如下:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="zh_CN">
<context>
    <name>QObject</name>
    <message>
        <location filename="main.cpp" line="10"/>
        <source>Translate Test</source>
        <translation type="unfinished"></translation>
    </message>
</context>
</TS>

根据文件内容可以看到我们用tr包裹起来待翻译的字符串已经被提取到.ts文件中;type表示是否已经翻译;未翻译为unfinished,翻译完成则显示对应翻译的译文.

3> 使用linguist翻译.ts文件
打开linguist软件,使用"Open"菜单打开我们需要翻译的.ts文件,对提取到的单词/短语逐个进行翻译
在这里插入图片描述
翻译完成之后点击"文件"菜单下"发布"即可生成对应的.qm文件到.ts同级目录下

4> 界面中当用户点击语言切换的时候只需要添加上以下代码即可完成英->汉的翻译

QTranslator translator;
if (translator.load("demo_zh_CN.qm")) {
    QCoreApplication::installTranslator(&translator);
}

相关推荐

  1. Qt 翻译工具:使用 tr() 函数实现语言支持

    2024-02-05 01:58:01       20 阅读
  2. QT 如何让语言翻译变得简单,提高效率?

    2024-02-05 01:58:01       26 阅读
  3. Python机器翻译包Translate:语种翻译利器

    2024-02-05 01:58:01       13 阅读
  4. QT基础篇(15)QT5语言国际化

    2024-02-05 01:58:01       29 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-05 01:58:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-05 01:58:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-05 01:58:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-05 01:58:01       18 阅读

热门阅读

  1. 阿里云入门

    2024-02-05 01:58:01       33 阅读
  2. K8s之configMap

    2024-02-05 01:58:01       28 阅读
  3. 常见code review问题

    2024-02-05 01:58:01       31 阅读
  4. MySQL中SQL查询语句优化

    2024-02-05 01:58:01       35 阅读
  5. 开源协议介绍

    2024-02-05 01:58:01       36 阅读
  6. 【华为机试】2023年真题C卷(python)-字符串拼接

    2024-02-05 01:58:01       39 阅读
  7. Docker 大纲

    2024-02-05 01:58:01       29 阅读
  8. 【递归】 92. 反转链表 II

    2024-02-05 01:58:01       33 阅读
  9. h.264与h.263的区别

    2024-02-05 01:58:01       32 阅读
  10. C# 更改系统的屏保设置

    2024-02-05 01:58:01       32 阅读