• QT 多语言例子的编译和运行——简单几步了解QT翻译的机制


    QT提供了多语言支持,通过它自带的例子,我们可以很简明地了解如何使用QT提供的工具和类库实现便捷的多语言翻译工作。

    第一步 打开 Hello tr() Example 项目

    在 “欢迎” 页面打开 Hello tr() Example 项目

    第二步 配置 Kit

    注意:打开例子之后,直接编译运行是不行的,因为我们没有进行过翻译工作。而例子源代码中有这样的代码:

    1. if (!translator.load("hellotr_la")) {
    2. return 1;
    3. }

    当加载翻译文件失败时,程序直接返回了,什么反应都没有的。

    如果你想试一下的话,可以把 return 1; 这行去掉,这样就算没有成功加载到翻译文件,程序也不会直接返回,而是继续执行,当然,程序显示的语言就是源代码中写的语言,这个例子中是英语 “Hello world!”。

    第三步 生成 .ts 翻译文件

    首先需要用 lupdate 工具帮助我们生成一个翻译文件,lupdate 文件会帮助我们自动将源代码中所有需要翻译的字符串(那些 tr() 包裹的字符串)都找出来,列成一个清单;这样在后面我们就可以使用另一工具逐个对这些字符串进行翻译了。

    第四步 修改 .ts 翻译文件,对字符串进行翻译

    现在,我们可以看到一个新的文件 hellotr_la.ts,这个就是 lupdate 帮我们生成的翻译文件,当然现在里面都是等待翻译的字符串。为了简单起见,我没有去改例子的 .pro 文件,所以我们生成的翻译文件后缀是 la 即拉丁语翻译。想要生成多种语言,可以修改 .pro 文件

    TRANSLATIONS = hellotr_la.ts hellotr_cn.ts

    修改成这样,再 lupdate ,就会生成两个 .ts 翻译文件。

    用 Qt Linguist 工具可以打开 hellotr_la.ts 文件进行文字翻译。 

    第五步 设置翻译文件语言

    每个 .ts 文件打开之后,可以设置它的目标语言,为了简单起见,我直接把 hellotr_la.ts 设置成了简体中文(因为我不会拉丁文)。

    然后,对里面需要翻译的字符串逐个进行翻译,这个例子中我们只有一个字符串需要翻译,就是“Hello world!”。Qt Linguist 同时也显示这个字符串的来历,它来自哪一行源代码,以方便准确地进行翻译。我们把 “Hello world!” 翻译成 “世界我来了!”,然后保存 .ts 文件。

     第六步 发布 .qm 翻译文件

    翻译之后的 .ts 文件还不能为程序所用,运行一下 lrelease,发布成 .qm 文件才能被程序识别。

     

    第七步  把 .qm 文件放到当前工作目录下(即 QDir::currentPath()

    根据手册,“translator.load()” 默认会到当前工作目录下搜索 .qm 文件,所以我们还需要把 .qm 文件复制到工作目录下面(也就是用户启动程序时的目录),QT creator 中运行程序时,工作目录并不是 debug 或者 release 目录,而是它们的上一级目录。

     第八步 编译运行程序,即显示翻译的语言

     大功告成。

  • 相关阅读:
    【unity】网格描边方法
    “就地拼柜”与“海外仓”:跨境电商的黄金组合
    ora-39083 ora-01861
    微信小程序开发--入门
    RFID服装管理系统改善零售供应链
    苹果悄悄推出了一个改变一切的新银行杀手储蓄账户
    看完这篇 教你玩转渗透测试靶机Vulnhub——Grotesque:2
    lc marathon 8.2
    Excel-VBA 快速上手(一、宏、VBA、过程、类型与变量、函数)
    【青书学堂】 2023年第二学期 JavaScript 基础编程(高起专) 作业
  • 原文地址:https://blog.csdn.net/found/article/details/126444824