Qt强的的功能之一就是支持多语言切换,本文主要介绍如何去支持多语言开发。
Qt多语言开发主要流程如下:

1、Qt tr()和qsTr()标记待翻译字符串
2、Pro文件中,添加生成ts的代码
3、Qt语言专家更新ts文件
4、Qt语言专家打开ts文件,填写对应的翻译
5、Qt语言专家将翻译后的ts文件生成qm文件
6、QTranslator加载qm语言文件
7、qApp->installTranslator() 安装语言文件

1、标记待翻译内容

Qt代码包括c++代码和qml代码,不同风格的代码标记字符串的函数不同。C++代码中,使用tr()函数标记字符串;QML代码中,使用qsTr()函数。具体使用方法如下:

C++代码:

int ShowConnectState()
{ui->label->setText(tr("Wired device is disconnected"));return 0;
}
或者
int ShowConnectState()
{QString showInfo = tr("Wired device is disconnected");ui->label->setText(showInfo);return 0;
}

qml代码:

Text {id: stringInfotext: isChinese ? qsTr("Chinese") : qsTr("English")color: "black"anchors.fill: parenthorizontalAlignment: Text.AlignHCenterverticalAlignment: Text.AlignVCenterfont.bold: truefont.pixelSize: 30
}

2、在pro文件中添加命令

TRANSLATIONS = language_zh_EN.ts \language_zh_CN.ts

在pro文件最后面添加上面两行命令,重新编译运行,会自动生成上面的两个ts文件。其中EN代表英文,CN代表中文。如果有其他国家,建议新增其他国家的ts文件。

3、Qt语言专家更新ts文件


点击更新翻译后,会自动将代码中的标识字符串更新到ts文件中。当代码中字符串有修改或者添加时,记得先运行更新翻译。

4、Qt语言专家打开ts文件并填写翻译

Qt语言专家是Qt自带的一种软件工具,在安装QtCreator时就默认已经安装了,下面从windows和linux两个平台教大家运行语言专家:

4.1 linux平台:

打开命令行,输入lin然后tab键自动补全,会出现linguist,然后回车会自动打开语言专家。

root@Xubuntu18:~$ linguist

然后File->open,选择要打开的ts文件

4.2 windows平台

在windows平台,推荐大家使用everything工具去搜索,下面给出常用软件的连接:

程序员提高工作效率的利器(不看你会后悔的)

用everything搜索“linguist”,单机打开对应的exe,注意下你用的是64位编译还是32位编译。

4.3 打开ts文件填写对应的翻译

左侧栏是对应的文件,字符串栏对应识别出来的字符串

选择原文字符串,然后在下面填写对应的翻译

翻译成功后,单机原文的❓,让其变成√

将所有的文件中的字符串翻译完成后保存,并关闭ts文件。

5、Qt语言专家将翻译后的ts文件生成qm文件


在ts目录下会生成同名的qm文件

6、加载和安装qm语言文件

在main函数中,加载qm文件

QTranslator translator;
if (translator.load(":/language/language_zh_CN.qm")) {qApp->installTranslator(&translator);
}

初始化完成后会显示当前加载的语言。

7、页面语言刷新

动态切换语言,例如页面有一个切换语言的按钮,触发按钮后,如何刷新所有的语言?下面分两部分来介绍。
7.1、 QWidget 刷新语言
每个Widget窗口或页面都需要通过UI 调用命令:

ui->retranslateUi(this);

7.2、 QML刷新语言

engine->retranslate();

关于qml刷新,详情可以看 这里

Qt多语言开发--Qt语言专家相关推荐

  1. c开发 易语言支持库,易写易库-用易语言开发易语言支持库.pdf

    易写易库-用易语言开发易语言支持库 易写易库(EXEK)用户手册 版本:0.2 作者:liigo,/liigo 时间:2008.10 概述 EXEK EXEK "易写易库(EEXXEEKK) ...

  2. “易写易库(EXEK)”项目启动,用易语言开发易语言支持库

    "易写易库"(EXEK,E Xie E Ku)项目已经启动,用易语言开发易语言支持库.我(liigo)准备用一个月左右的业余时间,完成本项目的一期工程. 用易语言开发易语言支持库, ...

  3. linux下软件多语言开发,Qt,多语言软件,开发流程【总结】

    环境 系统版本:ubuntu Qt版本:Qt 5.12 开始 步骤1:先编写一段Qt代码 如下,这个意思就是创建一个Qlabel.其内容 要写成 tr("hello111"),tr ...

  4. 使用Go语言开发Qt界面

    Go 的 UI 库 Go 语言本身是没有 UI 库的,不过有许多第三方的库支持将 Go 语言绑定到其他 UI 库,比如 Qt.GTK.参考地址 环境搭建 非 windows 或者需要参数说明的可以参考 ...

  5. qt开发linux界面软件,利用Qt Designer开发Qt界面

    因为这篇文章主要是告诉大家如何利用QT Design来达到快速学习QT的.,所以您最也要做到:您需要有一台可以跑Linux的电脑或者Microsoft Windows的电脑足够的RAM和HardDis ...

  6. t2c用什么语言编程,MC96F8316应用及C语言开发环境.pdf

    MC96F8316应用及C语言开发环境,c语言开发环境,ubuntuc语言开发环境,c语言开发环境搭建,c语言集成开发环境,macc语言开发环境,c语言的开发环境,linuxc语言开发环境,c语言开发 ...

  7. PySide是Python语言的Qt框架的一个绑定。PySide支持跨平台和本地GUI应用程序开发,是在Python 2.6、2.7和3.x版本下可用。

    PySide是Python语言的Qt框架的一个绑定.PySide支持跨平台和本地GUI应用程序开发,是在Python 2.6.2.7和3.x版本下可用. 在开始使用PySide之前,需要在你的机器上安 ...

  8. Qt中,软件多语言国际化翻译的方法与步骤

    Qt中,软件多语言国际化翻译的方法与步骤 在Qt的项目开发过程中,有时软件要翻译成多语言版本,这就涉及到国际化方面的操作.虽然Qt对这方面集成了很多工具,操作起来比较方便,本文还是总结一下国际化的方法 ...

  9. Qt Quick的多国语言翻译

    一.翻译Qt Quick应用软件 1.对所有用户界面中的文字字符串使用qsTr() QML中的字符串可以使用qsTr().qsTranslate().qsTrId().QT_TR_NOOP().QT_ ...

  10. c语言代码大全_从学生到专家,C语言开发必读的8本书

    本号总结了在C语言实际开发中必读的8本书,当然这8本书并不能囊括开发的方方面面,但就作者亲身体验来看,这8本书确实每个C语言开发者都必须要读的书,并且是应该深入精读的书. C程序设计语言 相信大家都学 ...

最新文章

  1. Tachyon 0.7.1伪分布式集群安装与测试
  2. SQL Server Profiler (SQL跟踪器)的简单使用
  3. 如何删除需要管理员权限才能删除的文件夹
  4. 科学小世界,婚姻大殿堂
  5. js/jquery循环提取table单元格值
  6. 暴跌300亿,“撤离”中国!乔布斯12年前憋的大招,又把一个巨头逼下神坛
  7. 玩转 SpringBoot 2 快速整合 Filter 注解版
  8. 绝对不能错过!计算机视觉Polygon Mesh Processing读书笔记——4微分几何中的曲线
  9. Tomcat 部署多个项目出现错误
  10. 账龄分析表excel模板_这种高端表格模板你会做吗?Excel制作带照片的员工信息查询表...
  11. 浅谈软件需求分析中的参与者
  12. Python图像处理库PIL的基本概念介绍
  13. [每日一氵] openCV resize函数直接按比例缩放
  14. 福师大 1309 计算机应用基础 在线作业答案二,福师大 1309 计算机应用基础 在线作业答案二...
  15. 国内云通讯渗透率不足3% 容联云SaaS业务迈入高速发展期
  16. python按指定概率抽样_python:抽样和抽样方法
  17. BM开发出量子计算机,迄今错误率最低量子比特面世,有望推进量子计算机研发工作...
  18. WIN10恢复旧版edge(原版edge)
  19. 扬州二手机器人_扬州靠谱的智能维修机器人,正规的abb机器人电源维修
  20. Http请求工具类:Get/Post

热门文章

  1. svn 分支上新增文件合并发生冲突_windows 下svn 创建分支 合并分支 冲突
  2. 360 os3.0 android7.1,【360 N6 Pro】360OS安卓7.1系统V3.0.087付费纯净版ROOT刷机包
  3. 《OpenCV3编程入门》毛星云编著
  4. java实现AES密钥生成
  5. keil5写c语言的步骤,keil5使用C51的详细步骤讲述
  6. 斗鱼主播后台礼物数据爬取
  7. si4438+efm32g210f128
  8. 易语言高级表格如何右击选择当前项,再弹出右击菜单?
  9. 图文详解YUV420数据格式
  10. MT4跟单系统如何查询交易品种的合约规格?