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
    评论
Qt实现国际化和多语言切换需要以下步骤: 1. 在Qt项目中创建一个“ts”文件,用于存储翻译后的资源。可以使用Qt自带的工具“Qt Linguist”来创建和编辑这些文件。 2. 在Qt项目中使用Qt的翻译API来翻译界面元素。例如,使用tr()函数来标记需要翻译的字符串。 3. 使用lupdate工具来生成一个“.ts”文件,其中包含需要翻译的所有字符串。 4. 使用Qt Linguist编辑器来翻译这些字符串,并将它们保存到“.ts”文件中。 5. 使用lrelease工具来生成一个二进制的翻译文件“qm”文件,其中包含翻译后的资源。 6. 在Qt项目中加载这些翻译文件,并在运行时切换语言。 下面是一个简单的示例代码,演示如何在Qt实现语言切换: ```cpp #include <QApplication> #include <QTranslator> int main(int argc, char *argv[]) { QApplication app(argc, argv); // 加载翻译文件 QTranslator translator; translator.load("myapp_zh.qm"); app.installTranslator(&translator); // 设置界面元素的翻译 QLabel label(tr("Hello World!")); label.show(); return app.exec(); } ``` 在上面的例子中,我们使用了QTranslator类来加载翻译文件,并使用installTranslator()函数将其安装到应用程序中。我们还使用了tr()函数来标记需要翻译的字符串。 当应用程序启动时,它将自动加载当前系统语言对应的翻译文件。如果用户切换了语言,我们只需要重新加载对应的翻译文件即可。 希望这可以帮助你实现Qt中的国际化和多语言切换。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值