Qt实现中英文切换(国际化)
前言
距离上一次发博客,已经又快一个月过去了,今天写一篇有关于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实现中英文切换(国际化)相关推荐
- QT 中英文切换-国际化(解决部分翻译不起作用的问题)
中英文切换-国际化 1.先看效果 2.核心代码(重新赋值刷新翻译文本) 2.0 pro文件配置 2.1 构造函数 2.2 两个按钮点击事件 3.翻译文件的生成与配置 4. 参考链接 1.先看效果 2. ...
- Qt 之 中英文切换的使用
Qt 之 中英文切换的使用 //写的不对的地方请指点 1 在代码中有tr("work") 有需要中英文切换的字符串 ui.cbxPapersType->addItem(t ...
- QT翻译(中英文切换
QT翻译(中英文切换) 工具: Qt Linguist, 一般到Qt Creater的安装目录下的/gcc_64/bin下有一个可执行文件linguist, 双击打开即可 py => ts py ...
- qt 设置中英文切换
点击设置转换 https://www.cnblogs.com/liangtianmanyue/p/14773710.html 自动检测转换 QT国际化示例, 检测系统语言,设置适合语言,按键切换显示语 ...
- SpringBoot中英文切换/国际化——java后端怎么用预置文本的内容替换web网页内容(Resource Bundle)
文章目录 创建预置文件文本内容 Thymeleaf修改前端使其获得预置文本内容 html页面设置跳转标签和传值 创建一个MyLocaleResolver配置文件 在MvcConfiguration中注 ...
- QT 软件中英文切换
本文内容学习自Johan Thelin的<Foundations of Qt Development>,欢迎交流. 本文中的例子是将软件版本在中英文之间动态切换,在书中归属语言国际化的章节 ...
- Qt Quick实现国际化 中英文切换简明图文步骤
目录 前言 一.步骤 1.在pro文件中添加需要生成的ts文件: 2.通过工具-外部-语言家-update 生成zh_CN.ts和en_US.ts 3.通过语言家打开生成的ts文件进行翻译 4.将zh ...
- struts2的国际化(即实现网站整体中英文切换)实例
推荐一个专注于Java的小众技术社区:Java之音 环境要求:Struts2框架环境搭建成功 为了实现程序的国际化,必须先提供程序所需要的资源文件.资源文件的内容基本是key-value对,其中key ...
- uni-app使用vue-i18n实现国际化(中英文切换)
uni-app使用vue-i18n实现国际化(中英文切换) 1.导入vue-i18n(npm install vue-i18n) 2.创建common文件夹 --> lang.js export ...
最新文章
- SQL2005EXPRESS查询关键字出现次数的代码(比常规方法快5倍)
- 宁波工商职业技术学院计算机分数线,浙江工商职业技术学院历年分数线 2021浙江工商职业技术学院录取分数线...
- 用Spark学习FP Tree算法和PrefixSpan算法
- 围绕sqlite构建一个简单的Typescript ORM
- No ‘Access-Control-Allow-Origin‘ header is present on the requested resource.
- 【java】编写一个圆柱体类Cylinder,它继承于Circle类
- java设计模式工厂模式_Java中的工厂设计模式
- originos系统会基于鸿蒙开发吗,originos系统是安卓吗 originos系统什么时候更新[多图]...
- x86下vx6.8软件wind River workbench使用说明
- 2022最新独立版智狐聚合支付V1.0.5.21+聚合支付系统源码
- 高斯滤波(Gauss filtering)
- ubuntu 查找opencv安装路径_ubuntu 查找opencv安装路径_Ubuntu安装opencv详细步骤
- c语言二维数组学习,C语言学习之二维数组的传参
- 线性代数(1)—— 行列式
- JWTUtil工具类使用
- 阳离子铱配合物(Ir1+)|(Ir2-)|Ir(dmecf3ppz)2bpy+(PF6)-齐岳合成
- luffy-(13)
- 虚拟化在防泄密领域的缺点
- nginx集群与高并发
- Oracle中TO_DATE用法
热门文章
- Android 版本适配:9
- 制作WINDOWS图标
- 软件扫描出rsh漏洞,但是并无安装rsh服务,原因是为何?
- java se运行环境_Java运行环境Java SE Runtime Environment (JRE) 下载
- 最喜欢的动画片《长江7号爱地球》
- GGSN - SCP 业务控制点
- 酶促反应动力学_酶促反应动力学中,米氏方程怎么推导出来的?具体怎么应用?...
- elasticsearch 分词器器读写分词
- 关于TKK失败问题(亲测有用 超详细)
- TKK: 更新 TKK 失败,请检查网络连接(亲测有效)