前言
传统的Qt项目使用 xxx.pro 文件作为项目配置模版,无须额为设置就可以顺畅地使用Qt语言专家(linguist)处理UI界面的多语言问题。使用 CMake的项目配置模版(CMakeLists.txt),就需要额外设置才能方便使用Qt语言专家。
一、使用CMake项目模版创建Qt项目
打开 Qt Creater, 点击菜单 文件 --> New Project ,弹出新建项目窗口,然后选择 [Qt Widgets Application] 模版,如下图:

根据界面提示操作,在下图窗口中选择 CMake 编译工具(传统的pro项目是qmake):

在下图的多语言设置界面,选择 【语言】为 English,意思是将会把设计时界面的语言(即源语言,我们默认使用简体中文)翻译为 English(即目标语言) 。(提示:如果这里不选择,在linguist工具界面也可以设置源语言和目标语言)

按界面提示点击下一步按钮即可完成项目的创建。
二、修改CMake项目模版
1. 修改项目配置
打开 CMakeLists.txt ,按下面的步骤执行增加和修改操作:
- 增加
set(TS_FILES MyApp_en_US.ts)
# 新增开始 , TS_SOURCES 列表就是需要翻译的源文件
set(TS_SOURCES # Add source files need to be translated below
main.cpp
mainwindow.ui
)
qt_add_translations(MyApp
TS_FILES ${TS_FILES}
SOURCES ${TS_SOURCES}
)
# 新增结束
- 修改
找到所有的 qt_create_translation 指令,删除或注释掉;
2. 配置编译命令
按下面两张图片的示意,添加新的编译命令 “update_translations”,该命令扫描源代码和UI设计文件中的界面文本,保存到文件 MyApp_en_US.ts 。代码编译成功之后,将会生成MyApp_en_US.ts文件,可用于后续的翻译。


三、 语言翻译
1. 设置外部工具
按下面图示,将 linguist 工具(语言专家)添加到菜单,方便后续使用:


2. 翻译文本
依次点击:菜单栏 --> 工具 --> 外部 --> Linguist --> linguist.exe , 打开翻译工具,
然后把编译生成的文件 MyApp_en_US.ts(在源代码目录下) 拖到工具界面,按下面的图提完成操作,将会生成翻译后的文件 MyApp_en_US.qm 。



如果还要翻译为其他语言,比如繁体中文,打开文件MyApp_en_US.ts,找到下面的文本:
<TS version="2.1" language="en_US">
将en_US改为zh_TW,然后保存文件,再把文件名改为MyApp_zh_TW.ts,按本节步骤再次执行翻译操作,将会生成另一个翻译后的文件 MyApp_zh_TW.qm 。
四、切换界面语言
1. 使用资源文件
按下面图示,新建资源文件,然后把翻译后的二进制文件 MyApp_en_US.qm 导入资源文件:


2. 使用代码切换界面语言
在main.cpp中,找到下面代码,
代码: translator.load(":/i18n/" + baseName)
修改为: translator.load("://MyApp_en_US.qm")
界面即切换为 English,见下图:

以上只是演示代码,在实际项目中,一般在界面上使用下来列表来选择语言,并把选择结果保存到程序的配置文件中。配置文件的示例如下:
config.ini :
[common]
lang=en_US
在界面切换语言后,广播一个信号给该应用程序的所有顶层窗口,各窗口都执行代码:
ui->retranslateUi(this);
这样就能够立即刷新界面了。
至此,大功告成。
1591

被折叠的 条评论
为什么被折叠?



