PyQt5中的界面语言翻译

前言

PyQt是Python语言环境的GUI编程解决方案之一,另外还有PyGTK、wxPython等也较为常用。PyQt作为Qt语言的Python扩展,可以用来方便快速的开发界面应用。
在这里插入图片描述

PyQt5中的界面语言翻译

在使用PyQt编写应用时,通常情况下,界面上的大部分提示和显示内容均使用英文进行编码,而在应用时通常会提供其他语言的翻译文件,编写好的软件在运行时加载这些翻译文件,可以很好的完成界面翻译。

翻译格式和工具

在做PyQt环境下的语言翻译工作时,.ts.qm格式是需要用到的翻译文件格式,制作翻译文件的工具是PyQt5自带的.py文件翻译部分抓取工具pylupdate5.exe,和qt5_applications中的linguist.exe工具,其中linguist.exe和用于界面拖拽式设计的工具designer.exe均在qt5_applications工具包中。

在这里插入图片描述

翻译过程

编写界面窗口说明

import os.path as osp
from qtpy import QtCore
from qtpy import QtWidgets


# TracelessLe注:代码示例,不可直接执行
translator = QtCore.QTranslator()  # 加载翻译器
translator.load(
    QtCore.QLocale.system().name(),
    osp.dirname(osp.abspath(__file__)) + "/translate",
)
app = QtWidgets.QApplication()
app.setApplicationName(__appname__)
icons_dir = osp.dirname(osp.abspath(__file__))
icon = QtGui.QIcon(osp.join(":/", icons_dir, "%s.png" % 'test'))
app.setWindowIcon(icon)
app.installTranslator(translator)


class struct(object):
    def __init__(self, **kwargs):
        self.__dict__.update(kwargs)


class MainWindow(QtWidgets.QMainWindow):

	self.menus = struct(
            file=self.menu(self.tr("&File")),
            edit=self.menu(self.tr("&Edit")),
            view=self.menu(self.tr("&View")),
            help=self.menu(self.tr("&Help")),
            recentFiles=QtWidgets.QMenu(self.tr("Open &Recent")),
        )

	def menu(self, title):
	    menu = self.menuBar().addMenu(title)
	    return menu

注:所有待翻译的内容均需要用self.tr()方法包含起来,用于后续工具抓取。

工具抓取待翻译文本

使用pyqt自带的pylupdate5.exe抓取Python脚本中的待翻译文本:

cd D:\ProgramData\Anaconda3\envs\dev\Scripts>

pylupdate5.exe C:\Users\Username\Desktop\app.py  -ts C:\Users\Username\Desktop\default.ts

人工翻译文本

进入D:\ProgramData\Anaconda3\envs\dev\Lib\site-packages\qt5_applications\Qt\bin目录中,打开linguist.exe工具,并打开刚刚生成的default.ts文件:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

另存为zh_CN.ts

在这里插入图片描述

在这里插入图片描述

发布.qm文件

在这里插入图片描述

在这里插入图片描述

补充翻译

在版本迭代后,如果增加了部分功能及需要翻译的文本,可以不用重新按完整步骤翻译。只需要在zh_CN.ts的内容中对应区域添加需要翻译的文本,重新生成.qm文件即可。
在这里插入图片描述
注:.ts实际上是xml格式文件。文件中的line不需要和代码中的行数对应。只需要确保source和待翻译内容完全对应即可。

版权说明

本文为原创文章,独家发布在blog.csdn.net/TracelessLe。未经个人允许不得转载。如需帮助请email至tracelessle@163.com
在这里插入图片描述

参考资料

[1] Qt | Cross-platform software development for embedded & desktop
[2] What is PyQt?
[3] PyQt - 维基百科,自由的百科全书
[4] QT中的TS文件与QM文件_woniuye的博客-CSDN博客_qt的ts文件
[5] qt5_applications-5.15.2.2.2-py3-none-win_amd64.whl
[6] PyQt教程——程序语言切换(Qt Linguist和pylupdate的使用) - 简书
[7] pyqt界面语言中英文转换_学到就是赚到-CSDN博客_pyqt中文

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TracelessLe

❀点个赞加个关注再走吧❀

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值