为QT5.8.0的文本编辑框右键菜单添加中文翻译

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

为QT5.8.0的文本编辑框右键菜单添加中文翻译_第1张图片

(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翻译文件,内容如下所示:





    QLineEdit
    
        &Undo
        撤销
    
    
        &Redo
        重做
    
    
        Cu&t
        剪切
    
    
        &Copy
        复制
    
    
        &Paste
        粘贴
    
    
        Delete
        删除
    
    
        Select All
        选中所有
    


    QWidgetTextControl
    
        &Undo
        撤销
    
    
        &Redo
        重做
    
    
        Cu&t
        剪切
    
    
        &Copy
        复制
    
    
        Copy &Link Location
        
    
    
        &Paste
        粘贴
    
    
        Delete
        删除
    
    
        Select All
        选中所有
    


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

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

#include "mainwidget.h"
#include 
#include 

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)如下图所示,程序右键菜单变成了中文

为QT5.8.0的文本编辑框右键菜单添加中文翻译_第2张图片

(----------------完---------------)

你可能感兴趣的:(Qt)