Qt国际化方法与国际化不完全问题小结

28 篇文章 2 订阅

概述

      最近自己在做项目的时候,由于需要跨平台,防止代码乱码,需要把项目中那些中文字都用英文代替,然后翻译成需要的语言。但是在我按照Qt国际化的步骤后,总是有的汉化成功了,有的却没有成功,因此小结一下。

QT国际化的步骤:

1 把自己需要翻译的地方全部用tr("")函数包含进来。
2 在pro文件中加入 TRANSLATIONS += XXX.ts
3 使用命令生成XXX.ts文件  lupdate XXX.pro 会生成ts文件
4 使用linguist工具翻译ts 然后保存
5 使用命令lrelease XXX.ts 发布生成qm文件
6 在main函数中窗口显示前加入以下代码:
QTranslator translator;
translator.load("XXX.qm");
app.installTranslator(&translator);
注:我的qm文件放在和exe同一级目录下,所以直接这样是可以load成功的

Qt国际化可能遇到的不完全或者失败的问题

1 在父类中继承了Qt的类 并且加入了Q_OBJECT宏,在子类中由于没有用到信号槽等东西,因此用tr(“”)包含好后,编译的时候不会有问题,翻译好发布成功,但就是没有汉化成功。(我项目就是这个问题)
解决办法:这个问题是没有添加Q_OBJECT,所有每个子类都加上Q_OBJECT宏,或者都用QObject::tr(""), 我那时候想着父类的Qt自带的类,就直接用的tr(""),结果遇到问题,加上Q_OBJECT宏就立马解决了。
2 自己没有用tr("")包含好,像QString("中文%1").arg(i)
解决办法:需要把这个拆分开来 QString(tr("中文")) + QString("%1").arg(i)
3 发布的时候用linguist发布,导致汉化不完全。
解决办法:使用命令来发布, lrelease XXX.ts 发布生成qm文件
4 遇到qm文件路径不对,载入不成功, 这个是路径问题导致了。
解决办法:这个是由于文件路径导致的,可以参考本人的路径小结。点击打开链接

    本次Qt国际化问题就小结到这里了,以后在遇到什么问题,再来总结!
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值