QT中有些控件,比如QTextEdit、QLineEdit和QWebEnginePage的右键菜单经常没有中文翻译。
比如下面QTextEdit的右键菜单:
那么遇到这种情况我们可以自己创建翻译文件
一、创建.ts文件
- 创建qt_zh_CN.ts文件 ,注意保存格式为UTF-8;
- 复制以下内容qt_zh_CN.ts文件中,并保存。
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="zh_CN">
<context>
<name>QLineEdit</name>
<message>
<source>&Undo</source>
<translation>撤销</translation>
</message>
<message>
<source>&Redo</source>
<translation>重做</translation>
</message>
<message>
<source>Cu&t</source>
<translation>剪切</translation>
</message>
<message>
<source>&Copy</source>
<translation>复制</translation>
</message>
<message>
<source>&Paste</source>
<translation>粘贴</translation>
</message>
<message>
<source>Delete</source>
<translation>删除</translation>
</message>
<message>
<source>Select All</source>
<translation>选中所有</translation>
</message>
</context>
<context>
<name>QWidgetTextControl</name>
<message>
<source>&Undo</source>
<translation>撤销</translation>
</message>
<message>
<source>&Redo</source>
<translation>重做</translation>
</message>
<message>
<source>Cu&t</source>
<translation>剪切</translation>
</message>
<message>
<source>&Copy</source>
<translation>复制</translation>
</message>
<message>
<source>Copy &Link Location</source>
<translation></translation>
</message>
<message>
<source>&Paste</source>
<translation>粘贴</translation>
</message>
<message>
<source>Delete</source>
<translation>删除</translation>
</message>
<message>
<source>Select All</source>
<translation>选中所有</translation>
</message>
</context>
</TS>
二、生成翻译文件
1、使用Qt Linguist(语言家)打开qt_zh_CN.ts文件;
2、检查没问题后发布,生成qt_zh_CN.qm文件;
三、在程序中调用翻译文件
1、将qt_zh_cn.qm放到程序生成路径下;
2、在main函数中调用加载翻译文件;
QTranslator tran;
bool ok = tran.load("qt_zh_CN.qm", QCoreApplication::applicationDirPath());
if(ok)
{
a.installTranslator(&tran);
}
结尾
再次启动程序,就会发现已经是翻译过的内容了。