QT国际化,中英文等多语言界面显示的方法

在网上学习了一下QT的国际化用法,最后将自己试成功的方法总结如下:

其中遇到的问题有:生成的ts文件中 代码中的中文 有的不显示,有的显示乱码。

 

步骤1:

生成.ts文件,在pro项目文件中加入TRANSLATIONS =translate_zh_CN.ts,名字任取。且指定编码。这点很重要,不然可能会在生成的ts 文件中包含乱码,不利于后期翻译。

 

TRANSLATIONS = translate_zh_CN.tstranslate_zh_EN.ts translate_zh_TW.ts

 

CODECFORTR = utf-8 #or gbk

#DEFAULTCODEC = utf-8

#CODEC = utf-8

注意,如果CODECFORTR 没有定义,将找DEFAULTCODEC,如果还没有定义,将找CODEC。3个都没有定义的话,就采用latin1

 

 

步骤2:

在pro文件上右击,选择 “在此打开命令行控制台”

在命令行指定 ts 文件时,还需要在命令行指定编码,保证生成的ts文件中的中文不含乱码。

lupdate hello.pro -codecfortr utf-8

如果你的lupdate 工具所在目录未加入环境变量,将找不到此命令,你可以搜索查找到luddate.exe所在目录,然后执行:

C:\Qt\4.8.0\bin\lupdate.exehello.pro -codecfortr utf-8

 

将会生成之前在.pro文件中指定的三个ts文件translate_zh_CN.tstranslate_zh_EN.ts translate_zh_TW.ts

 

步骤3:

再在命令窗口中输入linguist(翻译工具),打开翻译工具;

C:\Qt\4.8.0\bin\linguist.exe

弹出图形化界面工具。

 

然后就可以一个一个翻译了,最后点击linguist文件菜单中的发布,则会生成一个与ts文件同名的qm文件

 

步骤4:

在代码中需要的地方加载字符文件即可

 

    QTranslatortranslator;

    translator.load("./translate_zh_CN.qm");

   qApp->installTranslator(&translator);

   ui->retranslateUi(this);

 

 

 

注:如是代码中的中文字符,需要翻译的,要用QObject::tr("草稿箱") 将中文字符包含起来,才会显示在ts文件中。

 

 

还有一种生成qm的方法,例如在translate_zh_EN.ts 文件中将“帮助”翻译为“Help

<message>

        <locationfilename="mainwindow.ui" line="347"/>

        <source>帮助</source>

        <translationtype="unfinished">Help</translation>

</message>

 

然后用release 命令生成指定的qm文件。

C:\Qt\4.8.0\bin\lrelease.exe  translate_zh_EN.ts  -qm  translate_zh_EN.qm

 

这样就可以随意调用不同的qm文件,自由转换软件界面的显示语言了。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值