爲QT5.8.0的文本編輯框右鍵菜單添加中文翻譯

(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)如下圖所示,程序右鍵菜單變成了中文

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章