Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Qt Quick 项目实现根据操作系统语言自动显示指定翻译

Qt Quick 项目实现根据操作系统语言自动显示指定翻译

作者头像
我与梦想有个约会
发布于 2020-01-04 05:16:52
发布于 2020-01-04 05:16:52
1.7K00
代码可运行
举报
文章被收录于专栏:jiajia_dengjiajia_deng
运行总次数:0
代码可运行

Qt 提供了一整套的翻译引擎,讲你需要翻译的内容使用 qsTr(“”) 包括起来就可以通过工具来扫描这些待翻译的内容。我们用 Qt 创建的 Empty 项目来做演示,创建完成后,main.qml 中只有如下代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import QtQuick 2.12
import QtQuick.Window 2.12

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")
}

其中 Hello World 文字就使用 qsTr() 括起来了,我们首先需要做的就是让 Qt 翻译工具可以扫描到这些带翻译的文件。

将待翻译文件添加到扫描列表

在 Qt 项目的 pro 文件中添加如下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 告诉 Qt 翻译处理工具扫描所有当前目录下的 qml 文件
lupdate_only {
    SOURCES  += *.qml
}


# 你要生成几种语言的模板文件,这里指示生成两种,一种英文、一种中文
TRANSLATIONS = app_zh_cn.ts \
               app_en_us.ts

如如上注释,lupdate_only 要告诉 Qt 翻译工具你要扫描所有目录下的 qml 文件,TRANSLATIONS 指示要生成几种语言的翻译模板。

生成 .ts 中间文件

点击 Qt Creaetor 菜单栏的工具->外部->Qt语言专家->更新翻译(lupdate),生成中间的 .ts 文件。

此时看下面概要信息生成了如下内容:

到项目目录下就能看到这两个中间待翻译的 .ts 文件了:

开始翻译

到你的 Qt 安装目录下找到 Qt5.12.3\5.12.3\msvc2017\bin\linguist.exe 文件,不同的编译器路径可能不一样,自己仔细找一下。打开 linguist.exe 将我们要翻译的文件拖进去,比如我要翻译刚刚生成的 app_zh_cn.ts 文件。选择你要翻译的内容,然后在下面输入翻译的文字,最后点击上面的绿色勾确认翻译。

完成后记得保存文件(切记切记)

生成目标二进制文件

在翻译中间文件完成后,返回 Qt Creator,还是点击 工具->外部->Qt语言专家->发布翻译(lrelease),此时你会看到生成了两个后缀为 .qm 的文件:

这就是最终的目标翻译文件了,接下来就是加载翻译了。

加载翻译

打开 main.cpp 文件,在实例化 app 对象后面加入如下代码(别忘了 include QTranslator):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
QTranslator translator;
if (translator.load(QLocale(), QLatin1String("app"), QLatin1String("_"), QGuiApplication::applicationDirPath())) {
    app.installTranslator(&translator);
}

translator.load() 的参数说明如下(也可以参考 Qt 官网:https://doc.qt.io/qt-5/qtranslator.html#load-1):

  • 第一个参数指定当前系统语言,使用 QLocale 就可以获取到。
  • 第二个参数设置当前翻译文件的前缀名字,我们名字前缀是 app。
  • 第三个参数设置前缀名字和实际语言中间的分割符号。
  • 第四个参数指定翻译文件的位置,就是程序当前目录。

最终组成的就是 前缀+分隔符号+系统语言+.qm。这样编译出来的程序就可以根据系统语言自动切换翻译文件了。讲我们刚刚生成的两个 .qm 文件复制到 exe 所在目录:

然后运行程序,在 Windows 10 中文系统中最终运行效果如下:

相关

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年11月1日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
qt动态切换语言教程
在C++ GUI Qt4一书中,动态语言切换也就是Qt的国际化是属于Qt的高级部分,今天就来让高级的部分简单化。
用户5908113
2019/07/30
5.9K1
qt动态切换语言教程
Qt5实战第十三篇:Qt5的国际化与本地化
国际化(Internationalization,简称i18n)和本地化(Localization,简称l10n)是软件开发过程中的重要环节。国际化是指将软件设计为支持多种语言和地区,而本地化则是将软件适应特定语言和文化的过程。Qt5作为一个跨平台的C++框架,提供了全面的国际化支持,使得开发者能够在软件中轻松添加多语言支持。
china马斯克
2025/01/06
5020
【QT】多语言翻译
解决方法——https://www.cnblogs.com/ybqjymy/p/13552032.html
半生瓜的blog
2023/05/13
7060
【QT】多语言翻译
PyQt 语言国际化
用Qt语言家(Linguist)打开zh_CN.ts文件。可以对相应的字符串进行翻译。 点击“发布”可获得zh_CN.qm文件。这就是qt的语言资源文件,是一个二进制文件。
AnRFDev
2021/02/01
1.1K0
Qt多语言翻译示例
一个基础的翻译示例和一些注意事项 ---- 示例目录 QtTranslation/ ├── Languages │ ├── en.qm │ ├── en.ts │ ├── Languages.qrc │ ├── zh_CN.qm │ └── zh_CN.ts ├── main.cpp └── QtTranslation.pro 注意事项 将翻译文件(ts后缀)生成的qm后缀文件用资源文件( Languages.qrc)包括以供程序引用; translator.load(":/zh_CN.
Qt君
2019/07/15
2.2K0
Qt附加工具--多语言国际化
Qt Assistant是可配置且可重新发布的文档阅读器,可以方便地进行定制并与Qt应用程序一起重新发布。Qt Assistant已经被整合进Qt Creator,就是前面介绍的Qt帮助。
DeROy
2020/07/03
1.8K0
Qt附加工具--多语言国际化
QT程序打包发布Release时的注意事项
如果一个个的拷贝,不知道要哪些,不要哪些Dll,一个个找也麻烦。好在QT提供了windeployqt.exe程序专门用来提取相关的DLL。但是这还是有个坑,这里记录下留作以后使用注意。
杨永贞
2022/04/13
2.3K0
QT程序打包发布Release时的注意事项
qt国际化
Translate_CN.ts 汉语­>汉语(一般不用改,我们使用的是汉语,只需要改汉译英的)
DeROy
2020/05/08
1.4K0
qt国际化
Qt:windows下Qt安装教程
Qt5.12下载网址: http://download.qt.io/archive/qt/5.12/5.12.2/
全栈程序员站长
2022/08/29
6.9K0
Qt:windows下Qt安装教程
使用Qt installer framework制作安装包
一、介绍     使用Qt库开发的应用程序,一般有两种发布方式: (1)静态编译发布。这种方式使得程序在编译的时候会将Qt核心库全部编译到一个可执行文件中。其优势是简单单一,所有的依赖库都集中在一起,其缺点也很明显,可执行程序体量较大,光Qt核心库加起来就得十多兆。 (2)制作安装包发布。这种方式的原理也简单,就是将可执行程序和其依赖的库文件一起打包压缩,制作成安装包发布。制作安装包的工具挺多,今天要说的是Qt官方的安装包制作框架Qt installer framework.这个框架由Qt官方出品,广泛应用
24K纯开源
2018/01/18
2.9K0
使用Qt installer framework制作安装包
Qt Quick实践系列-多语言切换
  上面一顿操作猛如虎,一看效果二百五。怎么没反应的,没变化呀。似乎有细心的人发现了一些奇怪的地方就是:
Qt君
2023/03/17
2.3K0
Qt Quick实践系列-多语言切换
发布QtCsv文件转语言翻译文件工具
将Csv格式文件转换为qm翻译文件,中间无需干预手动干预ts文件即可完成翻译文件的制作。 直接生成qm文件的工具 我们做Qt翻译文件时候一般使用 lupdate xx.pro生成ts文件,再根据翻译使用Qt Linguist Manual工具修改ts后再使用 lrelease*.ts生成对应的qm文件。这一过程略显繁琐,作者的本意是简化该流程并能提供一个通用的翻译文本格式(csv)给翻译人员使用; 本工具是通过csv翻译文件翻译到qm文件的工具,简单易用; 文尾附部分源码与源码地址。 实现 Csv解析实现使
Qt君
2019/07/15
1.1K0
12.QT4.7.4-解决WIN平台和Linux平台中文乱码,QLineEdit右击菜单中文显示
1.解决Win平台中文显示 1.1首先解决win平台上中文显示乱码问题 1)首先查看qt creator的编码格式 通过->编辑->选择编码 查看. 2)如果qt creator的编码格式是utf8,并且项目里的汉字是utf8类型时 需要添加头文件: #include <QTextCodec> 在main()函数加入:   QTextCodec *codec = QTextCodec::codecForName("utf8");   QTextCodec::setCodecForTr(codec);
诺谦
2018/05/28
2.8K0
【专业技术】还有人在用Qt开发app嘛?
编者按: 这个世界不缺工程师,但是缺大师。如果在Qt里写个app,传统做法,需要熟悉API,熟悉C++,熟悉Qt本身的实现,同时还要熟悉编程环境。 现在出现了一种类似于脚本Javascript的语言,利用它,我们可以少编写一些程序逻辑。可不,最近我就利用它开发出了个浏览器。大家都没有。 欢迎来到声明式UI语言QML的世界.在本入门教程中,我们使用QML创建一个简单的文本编辑器.阅读这个教程后,就可以使用QML和Qt C++开发应用程序了. 安装 首先需要安装包含Qt Quick的Qt最新版本,现在是Qt4.
程序员互动联盟
2018/03/14
5.1K0
【专业技术】还有人在用Qt开发app嘛?
在使用Qt5.8完成程序动态语言切换时遇到的问题
因为之前了解过一些Qt国际化的东西,所以在写程序的时候需要显示给用户的字符都使用了 tr(" ")的形式,然后使用 Qt Linguist得到相应的 qm(Qt message)文件,再通过网上介绍的方式,在 main函数中使用 installTranslator,即可让程序在启动时自动判断语言环境,加载相应语言。 至此,静态语言切换已经完成,下面要做的是动态切换(即不需要重启软件)。 1.首先,令语言能够切换的 GUI组件用的是 QComboBox,信号是 currentIndexChanged,在于这个
用户1653704
2018/06/07
1.9K0
https://jaredtao.gitee.io/2019/09/02/Qt实用技能6-程序发布指南/
有很多人向涛哥询问,Qt程序发布的相关问题,网络上虽然可以搜到一大堆教程,但是可靠的比较少。
用户3519280
2023/07/06
4170
https://jaredtao.gitee.io/2019/09/02/Qt实用技能6-程序发布指南/
Qt | CMake(Qt5 VS Qt6)
【2】将CMake缓存中的Qt5_DIR设置为Qt5Config.cmake文件的位置。
Qt历险记
2024/10/16
5410
Qt | CMake(Qt5 VS Qt6)
无法启动 Maya 集成的 qt des
  Maya 集成了 PySide,同时集成了qt designer,在 Maya 的安装目录下的 bin 文件夹中可以找到 designer.exe。
py3study
2020/01/19
1.2K0
Qt开发-使用Python进行桌面端开发
离线安装包网址:http://download.qt.io/archive/qt/
码客说
2021/11/10
2.6K0
【QT】:QT(介绍、下载安装、认识 QT Creator)
所谓客户端就是直接和用户打交道的一端从程序,就比如 chrome,cctalk,……
IsLand1314
2024/12/20
10K0
【QT】:QT(介绍、下载安装、认识 QT Creator)
相关推荐
qt动态切换语言教程
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验