前言

距离上一次发博客,已经又快一个月过去了,今天写一篇有关于Qt程序如何实现中英文切换的例子,之所以写这个,是因为这是最近项目的一个需求。Qt国际化,网上的例子,很多很多.... 看似很简单,但是真正去做的时候,总是会遇到各种各样的问题,说实话,挺让人头疼的。今天,把自己遇到的一些问题,分享一下,当做笔记,记录一下;要是也能帮助到你,那就太好啦~

一、Qt国际化具体步骤:

1、在项目文件(xxx.pro)中添加如下代码,(备注:en_tr.ts代表英文的文件,zh_tr.ts代表中文文件)

TRANSLATIONS += en_tr.ts \zh_tr.ts

2、生成.ts文件

说明:.ts文件的生成,有2种方式,分别如下:

a、在Qt Creator中,依次点击:工具→外部→Qt语言家→更新翻译(lupdate),具体如图所示:执行后,你会发现项目文件夹中多了2个ts文件。

b、找到Qt命令行工具(如图),打开,进入到你项目的文件目录,,然后输入命令:

      lupdate -verbose xxx.pro,同样的,你会发现项目文件夹多了2个.ts文件;

3、翻译成指定语言,生成.qm文件

找到Qt语言家工具,翻译,翻译完后,点击保存,发布,这样就生成了.qm文件

同样的,发布的时候,也可以用命令lrelease  xxx.pro

4、加载qm文件,load(),installTranslator()

按照以上的步骤来,就可以进行中英文切换了。

二、遇到的一些问题:

1、在生成.ts文件的时候,发现直接按照上述第一种方式,没有成功;

原因分析:应该是当初安装软件的时候,环境没有装好吧,这个目前没有深入的去分析,后续找到原因会更新~

解决方法:改用上述方式二

2、涉及到一些new 生成的变量啥的,没有被正确的中英文化。

原因分析:这个还没真没有找到原因。

解决方法:在changeEvent函数中,重新setText();【此处:感谢罗大佬~】

void xxx::changeEvent(QEvent *e)
{if(e->type() == QEvent::LanguageChange){//这里重新写一次setText//比如: ui->tabWidget->setTabText(1,tr("系统设置"));ui->retranslateUi(this);}
}

三、根据系统语言,确定初始语言:

代码如下:

#include "mwidget.h"
#include "login.h"
#include <QApplication>
#include <QLocale>
#include <QTranslator>int main(int argc, char *argv[])
{QApplication a(argc, argv);QTranslator translator;QLocale locale;if( locale.language() == QLocale::English )  //获取系统语言环境{qDebug() << "English system" ;translator.load(":/res/en_tr.qm");a.installTranslator(&translator);}else if( locale.language() == QLocale::Chinese ){qDebug() << "中文系统";translator.load(":/res/zh_tr.qm");a.installTranslator(&translator);}Login login;login.show();return a.exec();}

四、一些建议:

1、用于中英文切换的字符串,控件啥的,在代码中,尽量用中文显示。这样做,是为了减少乱码的可能性。

五、后记:

嗯,好像写得不够详细,后面有空了,上个例子吧。如果还有疑问的小可爱们,可以先参考下别的博客,或者欢迎留言呀~

嗯,最后感谢路遇的大佬!

Qt实现中英文切换(国际化)相关推荐

  1. QT 中英文切换-国际化(解决部分翻译不起作用的问题)

    中英文切换-国际化 1.先看效果 2.核心代码(重新赋值刷新翻译文本) 2.0 pro文件配置 2.1 构造函数 2.2 两个按钮点击事件 3.翻译文件的生成与配置 4. 参考链接 1.先看效果 2. ...

  2. Qt 之 中英文切换的使用

    Qt 之 中英文切换的使用 //写的不对的地方请指点 1  在代码中有tr("work") 有需要中英文切换的字符串  ui.cbxPapersType->addItem(t ...

  3. QT翻译(中英文切换

    QT翻译(中英文切换) 工具: Qt Linguist, 一般到Qt Creater的安装目录下的/gcc_64/bin下有一个可执行文件linguist, 双击打开即可 py => ts py ...

  4. qt 设置中英文切换

    点击设置转换 https://www.cnblogs.com/liangtianmanyue/p/14773710.html 自动检测转换 QT国际化示例, 检测系统语言,设置适合语言,按键切换显示语 ...

  5. SpringBoot中英文切换/国际化——java后端怎么用预置文本的内容替换web网页内容(Resource Bundle)

    文章目录 创建预置文件文本内容 Thymeleaf修改前端使其获得预置文本内容 html页面设置跳转标签和传值 创建一个MyLocaleResolver配置文件 在MvcConfiguration中注 ...

  6. QT 软件中英文切换

    本文内容学习自Johan Thelin的<Foundations of Qt Development>,欢迎交流. 本文中的例子是将软件版本在中英文之间动态切换,在书中归属语言国际化的章节 ...

  7. Qt Quick实现国际化 中英文切换简明图文步骤

    目录 前言 一.步骤 1.在pro文件中添加需要生成的ts文件: 2.通过工具-外部-语言家-update 生成zh_CN.ts和en_US.ts 3.通过语言家打开生成的ts文件进行翻译 4.将zh ...

  8. struts2的国际化(即实现网站整体中英文切换)实例

    推荐一个专注于Java的小众技术社区:Java之音 环境要求:Struts2框架环境搭建成功 为了实现程序的国际化,必须先提供程序所需要的资源文件.资源文件的内容基本是key-value对,其中key ...

  9. uni-app使用vue-i18n实现国际化(中英文切换)

    uni-app使用vue-i18n实现国际化(中英文切换) 1.导入vue-i18n(npm install vue-i18n) 2.创建common文件夹 --> lang.js export ...

最新文章

  1. SQL2005EXPRESS查询关键字出现次数的代码(比常规方法快5倍)
  2. 宁波工商职业技术学院计算机分数线,浙江工商职业技术学院历年分数线 2021浙江工商职业技术学院录取分数线...
  3. 用Spark学习FP Tree算法和PrefixSpan算法
  4. 围绕sqlite构建一个简单的Typescript ORM
  5. No ‘Access-Control-Allow-Origin‘ header is present on the requested resource.
  6. 【java】编写一个圆柱体类Cylinder,它继承于Circle类
  7. java设计模式工厂模式_Java中的工厂设计模式
  8. originos系统会基于鸿蒙开发吗,originos系统是安卓吗 originos系统什么时候更新[多图]...
  9. x86下vx6.8软件wind River workbench使用说明
  10. 2022最新独立版智狐聚合支付V1.0.5.21+聚合支付系统源码
  11. 高斯滤波(Gauss filtering)
  12. ubuntu 查找opencv安装路径_ubuntu 查找opencv安装路径_Ubuntu安装opencv详细步骤
  13. c语言二维数组学习,C语言学习之二维数组的传参
  14. 线性代数(1)—— 行列式
  15. JWTUtil工具类使用
  16. 阳离子铱配合物(Ir1+)|(Ir2-)|Ir(dmecf3ppz)2bpy+(PF6)-齐岳合成
  17. luffy-(13)
  18. 虚拟化在防泄密领域的缺点
  19. nginx集群与高并发
  20. Oracle中TO_DATE用法

热门文章

  1. Android 版本适配:9
  2. 制作WINDOWS图标
  3. 软件扫描出rsh漏洞,但是并无安装rsh服务,原因是为何?
  4. java se运行环境_Java运行环境Java SE Runtime Environment (JRE) 下载
  5. 最喜欢的动画片《长江7号爱地球》
  6. GGSN - SCP 业务控制点
  7. 酶促反应动力学_酶促反应动力学中,米氏方程怎么推导出来的?具体怎么应用?...
  8. elasticsearch 分词器器读写分词
  9. 关于TKK失败问题(亲测有用 超详细)
  10. TKK: 更新 TKK 失败,请检查网络连接(亲测有效)