zoukankan      html  css  js  c++  java
  • 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

     

  • 相关阅读:
    上传图片,将图片保存在腾讯云(2种方式)
    由ping所引发的思考~
    php面试上机题(2018-3-3)
    【八】jqeury之click事件[添加及删除数据]
    【七】jquery之属性attr、 removeAttr、prop[全选全不选及反选]
    【六】jquery之HTML代码/文本/值[下拉列表框、多选框、单选框的选中]
    【五】jquery之事件(focus事件与blur事件)[提示语的出现及消失时机]
    小白懂算法之基数排序
    mysql_sql199语法介绍
    Python基本编程快速入门
  • 原文地址:https://www.cnblogs.com/siyun/p/13723440.html
Copyright © 2011-2022 走看看