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

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2020-09-24 11:56  河岸瓶风  阅读(1035)  评论(0编辑  收藏  举报