QTextEdit、QTextBrowser右键菜单汉化显示
QTextEdit、QTextBrowser右键菜单汉化显示
目录
- QTextEdit、QTextBrowser右键菜单汉化显示
- 问题分析
- 解决方案
- 具体步骤
在我的另一篇博文中讲解了QMessageBox、QColorDialog的汉化显示,现在又发现QTextEdit、QTextBrowser的没有汉化,究其原因就是没有加载汉化文件。
必看关联文章:QMessageBox、QColorDialog、按钮汉化显示
问题分析
在qt_zh_CN.qm中,QTextEdit归属于QTextControl,而qtbase中生成的QTextEdit归属于QWidgetTextControl,因此翻译失效了。
解决方案
在本篇博客关联文章的基础上,在qt_zh_CN.ts中手动增加QWidgetTextControl的xml节点。
具体步骤
注:关联文章中使用的是Qt5.9.9版本,本篇博客使用的是Qt5.14.2,版本不影响翻译效果。
根据你实际使用的Qt版本,下载qtbase源码。例如我当前使用的是Qt5.14.2。
下载地址:https://github.com/qt/qtbase
用QtCreator打开工程qtbase-5.14\src\widgets\widgets.pro
,如下图所示:
在widgets.pro
中增加一行,并保存,此时会自动执行qmake,如果没有自动执行,手动执行qmake即可。
执行完毕后,会在目录下生成widgets.ts
翻译文件。
TRANSLATIONS += widgets.ts
用Qt语言家(Qt Linguist)软件打开widgets.ts
,可以发现是存在QWidgetTextControl
节点的,而原先我们的qt_zh_CN.ts
中却是不存在的。
所以将需要将QWidgetTextControl节点拷贝至qt_zh_CN.ts
中的QTextControl
节点下,并稍作翻译修改即可。
如下图所示:
<context><name>QWidgetTextControl</name><message><location filename="widgets/qwidgettextcontrol.cpp" line="+2317"/><source>&Undo</source><translation>撤消(&U)</translation></message><message><location line="+4"/><source>&Redo</source><translation>恢复(&R)</translation></message><message><location line="+7"/><source>Cu&t</source><translation>剪切(&T)</translation></message><message><location line="+9"/><source>&Copy</source><translation>复制(&C)</translation></message><message><location line="+9"/><source>Copy &Link Location</source><translation>复制链接位置(&L)</translation></message><message><location line="+8"/><source>&Paste</source><translation>粘贴(&P)</translation></message><message><location line="+5"/><source>Delete</source><translation>删除</translation></message><message><location line="+9"/><source>Select All</source><translation>选择全部</translation></message>
</context>
最后,使用Qt语言家->文件->发布,即可生成新的qt_zh_CN.qm
翻译文件。
ends…