安裝
pip install pyqt5-tools
配置PylUpdate
用於將需要翻譯的內容轉換爲翻譯源文件.ts,PyCharm配置步驟如下:
File→Settings→Tools→External Tools→+
- Name填
PylUpdate
- Program選
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\Scripts\pylupdate5.exe
- Arguments填
$FileName$ -ts $FileNameWithoutExtension$.ts
- Working directory填
$FileDir$
配置Qt語言家
用於進行具體翻譯,PyCharm配置步驟如下:
File→Settings→Tools→External Tools→+
- Name填
QtLinguist
- 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語言家
- 啓動:點擊Tools→External Tools→QtLinguist
- 打開對應.ts文件
- Source language設爲English和Any Country,Target language設爲Chinese和China
- 在第一個欄填入翻譯內容
完成操作後,對應的.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文件來翻譯