直接上步骤:
- 首先定义翻译器,在窗体类的__init__方法中定义翻译器
def __init__(self):
# Desine the translator to translate interface languages.
self.trans = QTranslator(self)
- self.trans这个翻译器需要去load已经翻译好的文件xxxx.qm。xxxx.qm是一个二进制的文件,它由xxxx.ts生成。
self.trans.load('./translation/zh_CN')
这里的xxxx.ts,通过在窗体的这个.ui生成.py文件的目录下,使用pylupdate5 xxx.py -ts zh_CN.ts
命令,就会在该目录下生成zh_CN.ts文件,可以将这个文件放到你想要放到的目录下,然后打开pyqt中的Linguist.exe,如果不知道具体的位置,直接在python目录下搜索,一般在Python的文件夹/Lib/site-packages/pyqt5-tools下面,然后打开zh_CN.ts文件,分别对每个要翻译的英文设置中文译文,每添加好一个后就把前面的对号打上,如果某个不需要翻译,就不做任何操作。
然后点击file下的Release,我这个是中文的,直接点击发布就会在该目录下生成zh_CN.qm文件
- 得到窗体的实例化的QApplication对象
_app = QApplication.instance() # 得到创建的应用程序实例
_app就是在程序中创建的应用程序实例了
- 为了程序中的结构不被破坏,一般使用_app调用它的installTranslator为它"安装"一个"翻译"。installTranslator的参数是定义的翻译器,即self.trans
_app.installTranslator(self.trans)
- 重新翻译界面
self.retranslateUi(self)
核心代码:
from Window import Ui_MainWindow
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
import sys
class MainWindow(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.setupUi(self)
# 翻译家
self.trans = QTranslator()
# 连接到槽函数
self.BtnEn.clicked.connect(self.select_Chinese)
self.BtnCh.clicked.connect(self.select_English)
def select_Chinese(self):
self.trans.load('./translation/zh_CN')
_app = QApplication.instance()
_app.installTranslator(self.trans)
self.retranslateUi(self)
def select_English(self):
_app = QApplication.instance()
_app.removeTranslator(self.trans)
self.retranslateUi(self)
if __name__ == "__main__":
app = QApplication(sys.argv)
mainWindow = MyWindow()
mainWindow.show()
sys.exit(app.exec_())
参考部分内容:https://blog.csdn.net/CholenMine/article/details/80725088