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 为表示包括该文件夹的子文件夹