01 背景
【WordBN字远笔记】是天恩软件工作室开发的一款免费笔记软件;WordBN基于VS2019、Qt6.5开发,使用Qt Quick(QML)开发语言。
本课程将以【WordBN字远笔记】的界面为实战基础,详细介绍如何基于Qt/QML开发语言,从零开始开发一套真正的程序,包括国际化、版本发布、安装包制作等项目实战技巧。
本课程重点不是教你如何开发一个笔记软件,而是教你如何利用Qt/QML+C++开发一个完整的程序,整套课程规划有40+章节,敬请关注!
本章内容《#05 实现国际化多语言功能;生成和编辑ts文件,发布qm文件》
02 课程目标
- 修改CMakeLists.txt使自动生成ts文件。
- 学会使用Qt语言家工具,翻译ts文件,发布qm文件。
- 加载qm多语言文件,实现中文界面功能。
03 知识点
- .ts文件:.ts 文件通常与翻译(Translation)和国际化(Internationalization)相关,.ts 文件是Qt的翻译源文件(Translation Source file),它们包含了应用程序中用于翻译的字符串。
- .qm文件:.qm文件是Qt国际化过程中生成的二进制翻译文件,用于存储已翻译的文本字符串。
- Qt Linguist工具:Qt Linguist是Qt开发框架中的一个强大工具,专门用于开发人员在编写多语言应用程序时进行本地化和翻译。在Windows下工具名称是linguist.exe。
04 编辑CMakeLists.txt文件,使能自动生成ts翻译文件
- 在YourWordBN文件夹下,新建resource/translations文件夹:
- 修改CMakeLists.txt文件,添加以下代码生成ts翻译文件:
# 生成ts文件的文件夹
set(TS_DIR "${CMAKE_SOURCE_DIR}/resource/translations")
set(TS_FILES
"${TS_DIR}/zh_CN.ts"
"${TS_DIR}/zh_TW.ts"
"${TS_DIR}/en_US.ts"
)
# 模拟更新和发布的命令代码
find_program(LUPDATE_EXECUTABLE lupdate)
find_program(LRELEASE_EXECUTABLE lrelease)
# 生成ts和qm文件
foreach(_ts_file ${TS_FILES})
execute_process(
COMMAND ${LUPDATE_EXECUTABLE} -recursive ${CMAKE_SOURCE_DIR} -ts ${_ts_file})
execute_process(
COMMAND ${LRELEASE_EXECUTABLE} ${_ts_file})
endforeach()
- 每次有新增需要翻译文本,重新执行CMake,自动生成ts翻译文件:
- 生成翻译文件列表:
05 翻译ts文件,生成zh_CN.qm文件
- 因为界面上默认使用英文文本,所以只需要翻译中文文本。
- 使用Qt语言家程序(linguist.exe)打开zh_CN.ts文件,找到指定条目进行翻译,如下图例子:
- 保存,点击发布,生成qm文件。
06 程序加载zh_CN.qm文件
- 修改CMakeLists.txt文件,在 qtaddqml_module 位置添加以下代码:
RESOURCES resource/translations/zh_CN.qm
- 使用QTranslator加载qm文件,并注册到qApp,核心加载语言文件代码如下:
#include <QTranslator>
#include <QApplication>
static QTranslator theTranslator;
QCoreApplication::instance()->removeTranslator(&theTranslator);
theTranslator.load(":/YourWordBN/resource/translations/zh_CN.qm");
QCoreApplication::instance()->installTranslator(&theTranslator);
- 最终程序执行中文效果:
07 课后练习
- 增加更多菜单顶,重新生成ts文件,翻译文本和发布生成新qm文件。
-End-
#想了解更多精彩内容,关注下方公众号,还有示例源码、开发工具免费下载。
本人小杨哥:
超20年C++开发经验;著名开源产品高并发C++应用服务器MYCP作者;开源企业即时通讯软件Entboost首席架构师;开发有WordBN字远笔记等共享软件产品。
长期招收C++开发学员,欢迎关注咨询。