前言
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中文