Qt翻译原生widgets(QTextEdit右键菜单等)

简介: 简述在国际化的处理中,如果使用 Qt widgets 自带的原生功能,其中很多文本并不会被自行翻译,例如:QTextEdit 右键菜单(复制、粘贴)。最好的方式是 Qt 能提供相关模块的 ts 翻译源,开发者根据所要翻译的内容自行翻译。但是,查找 Qt 安装目录,并没有相关的的翻译源。既然这样,那我们只能自行解决了!简述添加翻译源提取翻译源发布加载

简述

在国际化的处理中,如果使用 Qt widgets 自带的原生功能,其中很多文本并不会被自行翻译,例如:QTextEdit 右键菜单(复制、粘贴)。

最好的方式是 Qt 能提供相关模块的 ts 翻译源,开发者根据所要翻译的内容自行翻译。但是,查找 Qt 安装目录,并没有相关的的翻译源。既然这样,那我们只能自行解决了!

添加翻译源

Qt 部件相关的模块为 widgets,由于需要翻译的文本属于 widgets 的源码,进入 widgets 源码相关路径(例如,D:\Qt\Qt5.7.0\5.7\Src\qtbase\src\widgets),打开 widgets.pro,添加:

TRANSLATIONS += widgets.ts

注意:名字可以随意取 - 由于翻译的内容属于 widgets 模块,为了见名知义,所以起名为 widgets.ts。

提取翻译源

要提取翻译源 widgets.ts,可以通过下面两种方式:

  • 使用命令行,lupdate widgets.pro
  • 在 Qt Creator 的系统菜单中,选择:工具 -> 外部 -> Qt语言家 -> 更新翻译(lupdate)

以命令行为例:

D:\Qt\Qt5.7.0\5.7\Src\qtbase\src\widgets>lupdate widgets.pro
Updating ‘widgets.ts’…
Found 218 source text(s) (218 new and 0 already existing)

D:\Qt\Qt5.7.0\5.7\Src\qtbase\src\widgets>

执行 lupdate 之后,就会在 widgets.pro 所在目录下生成一个 widgets.ts 文件。

发布

用 Qt Linguist 打开 widgets.ts,找到需要翻译的部件,进行翻译。以 QTextEdit 右键菜单(复制、粘贴)为例,由于 QTextEdit 右键菜单通过 QWidgetTextControl 实现,找到 QWidgetTextControl。

翻译相关选项,例如:

&Undo -> 撤销
&Red -> 重做
Cu&t -> 剪贴
&Copy -> 复制
Copy &Link Location -> 复制链接地址
&Paste -> 粘贴
Delete -> 删除
Select All -> 全选

这里写图片描述

保存翻译后的文件,选择:文件 -> 发布,这时会生成一个名为 widgets.qm 的文件(也可使用 lrelease widgets.ts 来生成)。

注意:其他 widgets,例如:QLineEdit 和 QMessageBox 也可以通过相同方式来翻译。

加载翻译文件

使用 QTranslator 加载生成的 widgets.qm 文件:

QTranslator translator;  
translator.load(":/qm/widgets.qm");  
app.installTranslator(&translator); 

这里写图片描述

至此,程序就可以显示为指定的语言了。

目录
相关文章
|
7月前
|
存储 数据安全/隐私保护 C++
Qt 中文文档 Qt5.15 PDF Class (从官网Qt 5.15 翻译)
Qt 中文文档 Qt5.15 PDF Class (从官网Qt 5.15 翻译)
549 0
|
7月前
|
程序员
QT 官方QObject对象翻译要点(纯属个人翻译,不靠谱)
QT 官方QObject对象翻译要点(纯属个人翻译,不靠谱)
86 1
|
7月前
|
XML 自然语言处理 数据格式
Qt国际化翻译解决方案
Qt国际化翻译解决方案
170 0
|
6月前
|
存储 数据安全/隐私保护
Qt Installer Framework翻译(5-3)
Qt Installer Framework翻译(5-3)
|
7月前
|
数据安全/隐私保护 图形学
Qt 输入组控件(Input Widgets)& 显示组控件(Display Widgets)详解
Qt 输入组控件(Input Widgets)& 显示组控件(Display Widgets)详解
|
7月前
|
SQL XML API
Qt C++ 模块 描述列表【从Qt 官网 6.5 版本翻译】
Qt C++ 模块 描述列表【从Qt 官网 6.5 版本翻译】
56 0
QT QTranslator 中英文翻译linguist语言家 翻译过程
QT QTranslator 中英文翻译linguist语言家 翻译过程
QT QTranslator 中英文翻译linguist语言家 翻译过程
|
自然语言处理
【QT】多语言翻译
【QT】多语言翻译
【QT】多语言翻译
Qt [GC9-7]:控制台基本设置及增加鼠标右键菜单和键盘事件
Qt [GC9-7]:控制台基本设置及增加鼠标右键菜单和键盘事件
367 0
Qt [GC9-7]:控制台基本设置及增加鼠标右键菜单和键盘事件
|
存储 安全 API
Qt自定义控件之颜色对话框QColorDialog/Qt Color Widgets
Qt自定义控件之颜色对话框QColorDialog/Qt Color Widgets
718 0
Qt自定义控件之颜色对话框QColorDialog/Qt Color Widgets