PyQt5 国际化
PyQt5 国际化实现
使用PyQt工具提供的 Linguist.exe 进行翻译操作及pycharm外部工具配置, Linguist.exe该工具在“python37\Lib\site-packages\pyqt5_tools\Qt\bin”内, 以下创建一个简单的国际化程序。
1、使用Qt Designer 创建一个Ui界面文件名为 Ui_main.ui, 并且转换为Ui_main.py。
CMD控制台命令为:pyuic5 Ui_main.ui -o Ui_main.py
2、创建翻译包,将.py文件生成为.ts文件。
CMD控制台命令: pylupdate5 Ui_main.py -ts Ui_main.ts 得到翻译包文件
2.1、 使用Pycharm 生成翻译包的设置。
打开设置-工具-外部工具-添加设置
Program: D:\Anaconda3\envs\python37\Scripts\pylupdate5.exe ( 这里设置为PyQt5文件夹下的pylupdate5.exe 程序。)
Arguments: $FileName$ -ts $FileNameWithoutExtension$.ts
Working directory: $FileDir$
添加外部工具完毕后, 可以点击py文件鼠标右键生成.ts文件。
注意:保存.py程序的路径不能用带中文路径, 不然生成.ts文件,会出错!
3、使用语言家 Linguist.exe 打开.ts 文件, 选择需要翻译字样,并将译文写入,最后发布程序.qm文件。
打开.ts文件。
来源语言默认:任何国家
目标语言:这里设置为中文或者English, 如果你想翻译为其它国家的语言就选择其它国家。
因为我们本身使用的是中文, 所以直接发布保存为cn.qm备用, 文件会生成在该文件路径下。
继续打开Ui_main.ts 文件
打开编辑-翻译文件设置, 修改为目标语言为英国(根据自身需求)
输入译文,输入完毕后,跟之前说的步骤一直保持为.qm文件。
4、准备工作完毕,编写主程序。
# -*- coding: utf-8 -*- """ Creation Time: """ import sys from PyQt5.QtCore import QTranslator from PyQt5.QtWidgets import QApplication,QMainWindow from Ui_main import Ui_MainWindow class name(QMainWindow): def __init__(self): super().__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) self.trans = QTranslator() #实例翻译者 self.ui.pushButton.clicked.connect(self.chinese) self.ui.pushButton_2.clicked.connect(self.english) def english(self): self.trans.load("en") #读取qm语言包 app = QApplication.instance() #应用实例 app.installTranslator(self.trans)#将翻译者安装到实例中 self.ui.retranslateUi(self)#翻译界面 def chinese(self): self.trans.load("cn") app = QApplication.instance() app.installTranslator(self.trans) self.ui.retranslateUi(self) if __name__ == "__main__": app = QApplication(sys.argv) a = name() a.show() sys.exit(app.exec_())
切换效果:
参考链接:
https://www.jianshu.com/p/010bebde9577
https://doc.qt.io/qt-5/qtranslator.html#load
https://doc.qt.io/qt-5/linguist-translators.html#batch-translation