基于CMake编译链的Qt项目的多语言配置

前言        

        传统的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);

这样就能够立即刷新界面了。

        至此,大功告成。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值