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

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

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

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

第二步 配置 Kit

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

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

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

如果你想试一下的话,可以把 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 目录,而是它们的上一级目录。

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

 大功告成。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值