QT国际化与多语言实现

1.Unicode编码

        Unicode是一种支持世界上绝大多数文字系统的字符编码标准。QT中的QString类用于将字符串存储为Unicode。

2.应用程序如何翻译QT文件

      如果想让应用程序能使用多种语言,必须做2件事情:

      1.确保每一个可见的字符串都使用tr()函数

      2.在应用程序启动时,载入了一个翻译文件(.qm)

      tr()函数是定义在QObject中的一个静态函数,并且可以在任何一个定义了Q_OBJECT宏的子类中重写。在编写QObject子类的代码是,可以不拘泥任何形式直接使用tr()。如果有可以使用的翻译,tr()调用就返回其翻译函数;否则,就返回其原有的文本内容。在不是Qobjec的类中,可是使用带QObject类的前缀方式使用QObject::tr()方式。

3.翻译应用程序

      翻译一个含有tr()调用的QT应用程序就是一个由三步构成的过程:

     1.运行lupdate,从应用程序的源代码提取所有的用户可见的字符串。

     2.使用QT Linguist 翻译该应用程序

     3.运行lrelease,生成二进制的.qm文件,应用程序可以使用QTanslator加载这个文件。

4.QT工具介绍

QT为国际化准备了3个工具
(1)lupdate.exe(用来生成ts文件的工具)                   
(2)lrelease.exe(用来发布qm工具)
(3)linguist.exe  (用来做翻译)


5.ts文件介绍

   ts文件,说白了就是一个xml文件;这个文件包含的提取的需要翻译的源字符串,以及改源对应的翻译串;

下图是使用qt的linguist打开的ts文件,红色框的部分,代表这个需要翻译的字符串的分组,也就是在Qt工具Linguist会根据

QString strans = QT_TRANSLATE_NOOP("GROUP", "Hello World"); 
QT_TRANSLATE_NOOP有2个字符串参数,第一个参数用来分组,为了方便分类整理就是下图的ConfirmForm,第二个参数为源串,也就是需要翻译的字符串

上面说过ts文件就是xml文件,它在xml中这个表示的


6.使用脚本调用生成ts文件和发布qm文件

QT生成ts文件的命令

1.在vs下使用Qt工程时,新建一个项目时,会自动包含QT的trans文件,也就是ts文件


那我们是如何更新ts文件的




使用lupdate更新ts文件,使用lrelease发布qm文件,但是以上是基于vs工具的使用更新,使用,发布;

先来看一下qt的调用命令lupdate的命令的帮助


主要看红色部分的调用 先看一下-pro

-pro命令调用的参数为 lupdate   路径/xx.pro

这个命令的功能的更新xx.pro工程的ts文件,当然前提是xx.pro有ts文件

下图是调用方式以及结果   (楼主的环境变量没有配置好,所以调用lupdate命令时候有问题,所以直接用的lupdate.exe的路径)


看一下结果:

红色部分的warning:没有ts文件

黄色部分的error:ts文件有误

绿色部分调用成功下图是生成的ts文件


补充说明部分:如何给一个工程添加一个ts文件,首先要在pro中添加一个xx.ts,然后保证这个ts文件格式正确,然后执行qmake就好啦


那么,如何在生成一个vs工程的ts文件

2种方法:

1.将xxx.sln生成xxx.pro,再调用lupdate xxx.pro

2.使用 lupdate   .路径\  -ts   生成ts路径  如红色部分所示


生成的ts与lupdate xx.pro结果有一定的区别,生成的ts文件中带有文件信息

l


主要说明一下



1.支持相对路径

2.支持多个文件文件夹参数   include\ stc\ -ts 

3.-recursive 为表示包括该文件夹的子文件夹 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值