• PyQt5 国际化


    PyQt5 国际化实现

    使用PyQt工具提供的 Linguist.exe 进行翻译操作及pycharm外部工具配置, Linguist.exe该工具在“python37Libsite-packagespyqt5_toolsQtin”内, 以下创建一个简单的国际化程序。

    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:Anaconda3envspython37Scriptspylupdate5.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

     

  • 相关阅读:
    测试
    pytest -- Windows fatal exception: code 1073807366
    cookie绕过验证码登录操作
    python接口自动化基本流程
    测试-pytest框架
    测试
    flask框架
    阿里巴巴集团面试
    字节跳动一面
    mysql 存储引擎
  • 原文地址:https://www.cnblogs.com/siyun/p/13723440.html
Copyright © 2020-2023  润新知