效果显示:

1、英文翻译:


2、中文翻译:

步骤

1、用一个函数用来设置控件的文本信息,因为每次切换语言,就要重新设置控件的文本信息,所以我这里用了一个FunSetText()函数封装(FunSetText()在代码部分有显示,这里只是演示如何用tr("")包裹文本),并且文本信息用tr(“”);如QPushButton p要设置文本

p->setText(tr("Info")); //用tr("")设置,这是重点,不这样设置到时候翻译的时候识别不出来

2、pro文件中添加 ,添加如下语句。这条语句是为了生成两个.ts文件。

TRANSLATIONS = English.ts Chinese.ts

3、点击Qt工程中的更新翻译,如下图所示,更新翻译之后,在你的当前路径下会有两个.ts文件,如果没有生成可以是pro文件中没有添加TRANSLATIONS = English.ts Chinese.ts或者是在其他路径:
生成两个.ts文件:

4、打开QT语言家(如果你的电脑没有装语言家则没有),找到自己编译相对应的语言家版本,以管理员的方式打开,这样更稳定。

5、英–中翻译:如果你要翻译的文本没有用tr("")这样是无法识别的。下图是打开语言家后的界面。
5.1、选择你刚刚生成的.ts文件进行翻译。这里先选择Chinese.ts(也可以一次性同时选择两个ts文件打开,这样我们的翻译的速度就快很多)

5.2、按照步骤设置翻译的内容(这里提及一下,相同的翻译内容设置一次就可以了,当你保存之后再次载入他就能识别)

5.3、当你设置完所有的翻译之后,发布生成qm文件-点击文件下的发布,发布之后会在.ts文件的路径下生成.qm文件

6、英-英翻译;其实相同的语言翻译就把翻译内容和要翻译的问题内容一致即可。因为英-中的步骤我已经写了,英-英的和中-中的翻译一样的步骤就可以,这里就不多加演示了。

7、最后我们就生成了两个.qm文件了

代码:

1、声明一个QTranslator类的变量

QTranslator mTranslator;

2、FunSetText用来给控件设置文本信息,因为每次翻译都需要更新控件文本的内容,所有用一个函数封装起来更方便。

void MainWindow::FunSetText()
{//注意:ui更新要在前面,不然内容会被清空,具体的可以去ui的.h文件中看看retranslateUi()//更新ui中控件的文本信息ui->retranslateUi(this); //更新代码中的文本信息mpSystemMenu->setTitle(tr("System"));mpLanguage->setTitle(tr("Language"));mpSysEnableAction->setText(tr("System Enable"));mpSysCheckAction->setText(tr("System Check"));mpSysExitAction->setText(tr("Exit"));mpLanguageEnglish->setText(tr("English"));mpLanguageChinese->setText(tr("Chinese"));ui->pushButton->setText(tr("ChangeWidget"));
}

3、语言改变事件

protected:void changeEvent(QEvent *event);
void MainWindow::changeEvent(QEvent *event)
{switch (event->type()){case QEvent::LanguageChange:FunSetText(); break;default:QWidget::changeEvent(event);}
}

4、点击了中英文翻译

    //点击切换成英文connect(mpLanguageEnglish, &QAction::triggered,this,[=](){mTranslator.load(":/English.qm");//下面这条语句会触发语言改变事件,调用FunSetText()函数qApp->installTranslator(&mTranslator); //再加载完翻译文件之后更新文本信息});//点击切换成中文connect(mpLanguageChinese, &QAction::triggered,this,[=](){mTranslator.load(":/Chinese.qm");qApp->installTranslator(&mTranslator);});

到此就ok了

注意事项:

1、每次新增或者删除了要翻译的内容,要翻译的时候记得过更新翻译;
2、翻译的本质是重新设置文本,所以向QMessageBox这个点击的时候生成的控件可以不需要提供更新接口,直接加tr()设置即可。

QMessageBox::warning(this,tr("Warning"),tr("Do you want Exit?"),tr("OK"),tr("Cancel"));

3、调用ui->retranslateUi(this)之后再调用FunSetText()重新设置文本,因为ui->retranslateUi(this)用给ui上拉的控件重新设置文本信息,可能会清空文本。
4、加载完翻译文本之后再调用FunSetText()重新设置文本。等翻译文件加载完之后再重新设置才能生效。
5、QT翻译失效问题
6、翻译的本质是,加载完翻译文本之后,当遇到这个用tr()包裹的内容,会和qm中的内容进行一个查找,如果查找到了这个内容,就按照设置的翻译内容翻译,如果没有就不翻译。

程序网盘

为了方便大家使用,我共享在网盘上了,有想要的可以去拿。
第一次完成这么长的一篇文章,喜欢的小伙伴给个支持吧。
提取码:wzds
网盘链接

Qt国际化翻译(中英切换)步骤:可子界面翻译相关推荐

  1. 前端页面语言国际化,实现中英切换

    之前web项目一直都是中文为主的,现在随着业务的需求,需要将网站语言支持多语言,这个着实给不管是前台还是后台都增加了不小的挑战,因为之前做的时候根本没有考虑多语言的问题,导致很多页面写的不是很灵活,样 ...

  2. ajax中英文切换,vue-i18n中英切换插件使用

    虽然现在的浏览器都能实现翻译功能,但没有什么是比甲方爸爸说话更有权威的了. 问:如果实现后端数据传送前端时中英切换? 答:可以通过请求头设置一个为lang的值传送给后台,然后后台对lang=1进行判断 ...

  3. Google Cartographer 《Real-Time Loop Closure in 2D LIDAR SLAM》翻译 (中英对照)

    Google Cartographer <Real-Time Loop Closure in 2D LIDAR SLAM>翻译 (中英对照) 作者: Wolfgang Hess, Damo ...

  4. Windows10恢复任务栏中的“中/英”切换图标

    问题描述 一时手残点到任务栏中中/英切换标志下的[显示语言栏],然后我的中/英切换按钮就不见了,而且多出了一个丑的一批的语言栏. 点击语言栏右侧的最小化,这个语言栏倒是消失了,但是中/英切换标志还是没 ...

  5. 哪款中英翻译器简单实用?在线翻译的简单方法

    如何利用中英翻译器轻松完成中英翻译?英语作为一种国际通用语言,当你出国旅游时无论去哪,只要掌握了英语都很方便,但如果你的英文很差时该怎么办呢?当然是利用中英翻译器来解决翻译问题,今天小编将要教大家如何 ...

  6. 7、SpringBoot之实现登陆界面的中英切换

    项目地址:https://github.com/Chakid/SpringBoot-example 1.第一步,创建一个SpringBoot项目 2.导入资料中的一些写到的代码和静态页面 1)在con ...

  7. eclipse汉化方式(下载,安装,中英切换)

    按照下面的步骤完成Eclipse的汉化,对初学java的小伙伴们很有帮助哦,愿大家能够学习进步! eclipse汉化的两种方式 第一种方式 第二种方式 第一种方式 一.第一步准备工作: 打开eclip ...

  8. Parser Generator Tips翻译(中英对译) by Joshua Xu

    You can use the ParserWizard command from the Project menu to help you create initial YACC and Lex s ...

  9. 微信按钮翻译中英对照表

    申明:发文方便自己查阅,当然如对看到的朋友有所帮助,也是乐事一件. 代码中需要调用微信,翻译连续翻车,比如朋友圈,做个记录方便查阅: /** * 微信 中英文对照 * 微信         wecha ...

最新文章

  1. 通达信板块监控指标_【精选指标】通达信创业板涨停变色主图指标,助你股海捉龙擒牛!...
  2. requests.exceptions.TooManyRedirects: Exceeded 30 redirects
  3. 梦有感 2009-10
  4. Excel电子表格的使用技巧!很实用
  5. 【视频课】零基础免费38课时深度学习+超60小时CV核心算法+15大Pytorch CV实践案例助你攻略CV...
  6. Spring MVC 中的基于注解的 Controller
  7. php 字符串的比较大小,php怎么比较两个字符串的大小
  8. 第3节 中间层创建与设置
  9. Redis经典面试题
  10. 堆排序的应用-优先级队列
  11. Android-Device supports x86,but APK only supports armeabi-v7a,armeabi,x86_64
  12. python实现app自动签到器_python实现网页自动签到功能
  13. Intel 80286微处理器功能结构
  14. 李开复写给中国大学生的信
  15. MySQL中的自增主键用完了怎么办?
  16. 网页提示504 gateway time-out是什么意思?如何解决?
  17. 用Excel做直方图(2):频率分布直方图
  18. UART和RS232/RS485的关系是什么?
  19. 一文看懂智慧城市,解码25万亿大市场的机遇与格局
  20. css33d图片轮播_通过html+css3实现图片轮播切换

热门文章

  1. Git系列(2)pycharm使用git提交代码
  2. 向量的相关运算和几何意义(扫盲篇)
  3. 云业CMS开源企业建站系统v2.1.6源码
  4. 使用VSCode搭建Markdown写作平台
  5. vue+typescript怎么写computed
  6. 希望不是我的神话-coder's_life(转)
  7. SRT协议的Wireshark解析器编写(Lua)
  8. 每周一个前端动画之五:B站视频预览动画
  9. WPS for linux移动云文档
  10. 杰理 AC692N系列 ---时钟闹钟开发流程 做一个简单的闹钟