Qt多语言翻译

前言

Qt提供了语言翻译的功能,本文以中英文为例介绍它的用法。

一、修改.pro文件

TRANSLATIONS = chinese.ts english.ts

二、生成.ts文件

在这里插入图片描述
点击“更新翻译”后会在项目路径下生成第一步定义的chinese.ts和english.ts文件。

三、翻译

利用工具全局搜索或直接到编译器目录下找到linguist.exe。
在这里插入图片描述
用它打开第二步生成的chinese.ts。
源代码中使用了tr括起来的字符串和ui文件控件的text都会被加载进来。
在这里插入图片描述
在这里插入图片描述
选择字符串,在下方填写相应的译文即可。

四、生成.qm文件

在这里插入图片描述
点击发布后会在同一目录下生成chinese.qm文件。

五、使用.qm文件

在代码中加载.qm文件。

#include <QApplication>
#include <QTranslator>

QTranslator *translator = new QTranslator ;
translator->load(":/chinese.qm");
qApp->installTranslator(translator);

运行。
在这里插入图片描述

六、总结

1、在代码中尽量使用英文字符,比如

ui->label->setText(tr("你好"));

应改为

ui->label->setText(tr("hello"));

再在翻译文件里设置译文,避免不必要的编码问题。

2、在程序运行过程中,不能动态切换译文,如果要切换语言,需要重新加载程序,重新加载程序的时机可以监听QEvent::LanguageChange事件,调用qApp->installTranslator()成功后,会触发改事件。

3、对于非常量的字符串,qt不支持翻译,需要自己去实现翻译,可以参考qt的方式去实现,利用xml或者json等文件格式来存放翻译信息。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值