PyQt國際化多語言

安裝

pip install pyqt5-tools




配置PylUpdate

用於將需要翻譯的內容轉換爲翻譯源文件.ts,PyCharm配置步驟如下:

  1. File→Settings→Tools→External Tools→+
  2. Name填PylUpdate
  3. Program選C:\Users\Administrator\AppData\Local\Programs\Python\Python36\Scripts\pylupdate5.exe
  4. Arguments填$FileName$ -ts $FileNameWithoutExtension$.ts
  5. Working directory填$FileDir$
    在這裏插入圖片描述




配置Qt語言家

用於進行具體翻譯,PyCharm配置步驟如下:

  1. File→Settings→Tools→External Tools→+
  2. Name填QtLinguist
  3. Program選C:\Users\Administrator\AppData\Local\Programs\Python\Python36\Lib\site-packages\pyqt5_tools\Qt\bin\linguist.exe

在這裏插入圖片描述

可一鍵啓動QtLinguist(Qt語言家)

在這裏插入圖片描述
在這裏插入圖片描述

需要中文自行下載——Qt語言家(QtLinguist)v5.5.0中文版




步驟

1. 界面編程

程序中需要翻譯的內容用self.tr()指定,即QCoreApplication.translate

test.py

# -*- coding: utf-8 -*-
import sys
from PyQt5.QtCore import QRect
from PyQt5.QtWidgets import QApplication, QPushButton, QDialog


class Mwindow(QDialog):
    def __init__(self):
        super(Mwindow, self).__init__()
        self.resize(100, 60)
        self.down1 = QPushButton(self.tr('download'), self)
        self.down1.setGeometry(QRect(10, 5, 90, 23))

        self.down2 = QPushButton(self.tr('upload'), self)
        self.down2.setGeometry(QRect(10, 30, 90, 23))


if __name__ == '__main__':
    app = QApplication(sys.argv)
    mainWin = Mwindow()
    mainWin.show()
    sys.exit(app.exec_())

在這裏插入圖片描述

2. 轉換爲翻譯源文件.ts

.ts是翻譯源文件(translation source)的簡稱。

選中test.py→點擊Tools→External Tools→PylUpdate

執行命令pylupdate5 test.py -ts test.ts

獲得一個轉換好的.xml文件

test.ts

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS><TS version="2.0">
<context>
    <name>Mwindow</name>
    <message>
        <location filename="test.py" line="11"/>
        <source>download</source>
        <translation type="unfinished"></translation>
    </message>
    <message>
        <location filename="test.py" line="14"/>
        <source>upload</source>
        <translation type="unfinished"></translation>
    </message>
</context>
</TS>

3. Qt語言家

  1. 啓動:點擊Tools→External Tools→QtLinguist
  2. 打開對應.ts文件
  3. Source language設爲English和Any Country,Target language設爲Chinese和China
  4. 在第一個欄填入翻譯內容

在這裏插入圖片描述

完成操作後,對應的.ts文件發生了變化

test.ts

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="zh_CN" sourcelanguage="en">
<context>
    <name>Mwindow</name>
    <message>
        <location filename="test.py" line="11"/>
        <source>download</source>
        <translation>下載</translation>
    </message>
    <message>
        <location filename="test.py" line="14"/>
        <source>upload</source>
        <translation>上傳</translation>
    </message>
</context>
</TS>

4. 發佈翻譯文件.qm

Qt語言家→File→Release
在這裏插入圖片描述

5. 加載翻譯文件

導入QTranslator類,並給QApplication實例加載翻譯文件

from PyQt5.QtCore import QTranslator

if __name__ == '__main__':
    app = QApplication(sys.argv)
    trans = QTranslator()
    trans.load('test.qm')
    app.installTranslator(trans)
    mainWin = Mwindow()
    mainWin.show()
    sys.exit(app.exec_())

完整代碼

test.py

# -*- coding: utf-8 -*-
import sys
from PyQt5.QtCore import QRect, QTranslator
from PyQt5.QtWidgets import QApplication, QPushButton, QDialog


class Mwindow(QDialog):
    def __init__(self):
        super(Mwindow, self).__init__()
        self.resize(100, 60)
        self.down1 = QPushButton(self.tr('download'), self)
        self.down1.setGeometry(QRect(10, 5, 90, 23))

        self.down2 = QPushButton(self.tr('upload'), self)
        self.down2.setGeometry(QRect(10, 30, 90, 23))


if __name__ == '__main__':
    app = QApplication(sys.argv)
    trans = QTranslator()
    trans.load('test.qm')
    app.installTranslator(trans)
    mainWin = Mwindow()
    mainWin.show()
    sys.exit(app.exec_())

在這裏插入圖片描述

PS:多國語言可以通過創建多個.ts文件來翻譯




參考文獻

  1. PyQt教程——程序語言切換(Qt Linguist和pylupdate的使用)
  2. Pyqt 國際化多語言支持
  3. 《快速掌握PyQt5》第二十九章 國際化
  4. PyQt5入門
  5. QCoreApplication.translate
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章