本项目利用Qt框架翻译原生widgets,并生成widget.qm文件,实现了QPlainTextEdit控件的右键中文菜单功能。
由于QTextEdit使用的对象QWidgetTextControl中的复制、粘贴等右键菜单项在qt_zh_CN.qm文件中没有被翻译,需要自己翻译Qt部件相关的模块为widgets。进入 widgets 源码相关路径(例如 C:\Qt\Qt5.9.1\5.9.1\Src\qtbase\src\widgets),打开 widgets.pro 文件,在其中添加:TRANSLATIONS += widgets.ts。
在 Qt Creator 的系统菜单中,选择工具 -> 外部 -> Qt语言家 -> 更新翻译(lupdate)以生成一个名为widgets.ts的文件。使用Qt Linguist打开此文件,并找到需要翻译的部分进行翻译。例如,对于QTextEdit右键菜单中的复制、粘贴选项,由于这些功能由QWidgetTextControl实现,因此需在该类中寻找并完成相关项的翻译。
保存修改后的翻译内容,在Qt Linguist中选择文件 -> 发布以生成名为widgets.qm的文件。接着使用 QTranslator 加载此文件:QTranslator translator; translator.load(:/qm/widgets.qm); app.installTranslator(&translator); 这样程序就可以显示为指定的语言了。