QT文本编辑框右键菜单添加中文翻译

(1)使用Qt的单行和多行文本框时,右键菜单一直显示为英文,在中文环境下使用体验非常不好,我们需要将这些英文翻译为中文。Qt对于一部分语言做了上述右键菜单的翻译,这些翻译文件被保存在Qt安装路径类似于“5.8/mingw53_32/translations/qtbase_*.qm" 的文件中,但没有提供对应的中文翻译(即5.8/mingw53_32/translations/路径下找不到qtbase_zh_CN.qm文件)

(2)通过研究得知,QT5并没有将文本框(QLineEdit、QTextEdit)的右键菜单对应的中文翻译qtbase_zh_CN.ts添加到翻译列表中,上述结论可以从官网下载的QT源码和下面的github仓库中查看得知

https://github.com/qt/qttranslations/tree/5.8/translations(切换分支从QT5.0到QT5.15都没有看到qtbase_zh_CN.ts翻译文件)

(3)由于官方不支持,那么只有自己动手将上述翻译整理出来做成自己的翻译文件

(4)查看源码和其他语言的qtbase_*.ts文件可整理出针对QLineEdit和QTextEdit右键菜单的qtbase_partial_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>&amp;Undo</source>
        <translation>撤销</translation>
    </message>
    <message>
        <source>&amp;Redo</source>
        <translation>重做</translation>
    </message>
    <message>
        <source>Cu&amp;t</source>
        <translation>剪切</translation>
    </message>
    <message>
        <source>&amp;Copy</source>
        <translation>复制</translation>
    </message>
    <message>
        <source>&amp;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>&amp;Undo</source>
        <translation>撤销</translation>
    </message>
    <message>
        <source>&amp;Redo</source>
        <translation>重做</translation>
    </message>
    <message>
        <source>Cu&amp;t</source>
        <translation>剪切</translation>
    </message>
    <message>
        <source>&amp;Copy</source>
        <translation>复制</translation>
    </message>
    <message>
        <source>Copy &amp;Link Location</source>
        <translation></translation>
    </message>
    <message>
        <source>&amp;Paste</source>
        <translation>粘贴</translation>
    </message>
    <message>
        <source>Delete</source>
        <translation>删除</translation>
    </message>
    <message>
        <source>Select All</source>
        <translation>选中所有</translation>
    </message>
</context>
</TS>

(5)将上述整理出来的qtbase_partial_zh_CN.ts文件使用Qt语言家Linguist打开,然后发布生成qtbase_partial_zh_CN.qm文件

(6)使用如下代码安装生成的qtbase_partial_zh_CN.qm文件:

#include "mainwidget.h"
#include <QApplication>
#include <QTranslator>

int main(int argc, char* argv[])
{
    QApplication a(argc, argv);

    QTranslator translator;
    if (translator.load(QLocale(QLocale::Chinese, QLocale::China),
        QString("qtbase_partial"),
        QString("_"),
        QString(QApplication::applicationDirPath() + "/translations")))
    {
        a.installTranslator(&translator);
    }

    MainWidget w;
    w.setWindowTitle("文本框右键菜单翻译");
    w.show();

    return a.exec();
}

(7)再次运行,程序右键菜单即可变成中文

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值