PyQt5实战之二维码生成器(四):界面的国际化与管理打包资源

前言

经过上一章,我们实现了二维码的生成及样式修改,并将其显示在界面中。本章将实现界面的国际化,并说明如何管理打包资源。

一、界面的国际化

在之前的代码中可以发现,有些文本用 self.tr() 括了起来,这些文本就是要被翻译的内容。通过这种方法对待翻译文本做好标记后,进入命令行:

pylupdate4 我的程序.py - ts zh_CN.ts

如此便将待翻译文本剥离出来,生成了一个 .ts 文件。然后通过 Qt 语言家来打开它, PyQt5 中语言家的执行程序路径如下图所示:
在这里插入图片描述
打开后可以看到一段段的待翻译文本,在下方填写相应译文后再打个勾即可完成对一段文本的翻译,全部翻译完后保存。
在这里插入图片描述
该翻译文件本质上是一个 xml,也可以直接打开它修改内部文本。
在这里插入图片描述
通过修改xml能够更快地完成反译操作,即英译中后,再来一份中译英的文件,命名为 en.ts。生成两份翻译好的 ts 文件后通过 Qt 语言家发布,生成两个后缀名为 qm 的文件,其为 Qt 语言包。
在这里插入图片描述
完成了以上基础准备后即可在界面程序中添加代码,编写两个方法来实现英汉互译。

def trans_cn(self): # 汉化
    self.actionChinese.setChecked(True) # 勾选Chinese
    self.actionEnglish.setChecked(False) # 取消勾选English
    try:
        self.trans = QTranslator()
        self.trans.load(":resource/zh_CN.qm") # 加载语言包
        _app = QApplication.instance()  # 获取app实例
        _app.installTranslator(self.trans) # 将翻译家安装到实例中
        self.retranslateUi(self)  # 重新翻译界面
        self.setWindowTitle(strTitle)
    except:
        pass

def trans_en(self): # 英化
    self.actionChinese.setChecked(False)
    self.actionEnglish.setChecked(True)
    try:
        self.trans = QTranslator()
        self.trans.load(":resource/en.qm")
        _app = QApplication.instance()
        _app.installTranslator(self.trans)
        self.retranslateUi(self)
        self.setWindowTitle(strTitle)
    except:
        pass

将它们绑定到菜单栏的动作信号上。

self.actionEnglish.setChecked(True) # 默认选中English
self.actionChinese.triggered.connect(self.trans_cn) # 菜单栏-汉化
self.actionEnglish.triggered.connect(self.trans_en)  # 菜单栏-英化

翻译效果如下:
在这里插入图片描述

二、管理打包资源

对于界面用到的图标文件和翻译文件,可以利用qrc文件对其进行打包。按照下面的格式在文本编辑器中编写,保存后修改文件的后缀名为 qrc

<RCC>
    <qresource prefix="resource/">
        <file alias="icon.ico">images/icon.ico</file>
       <file alias="url.ico">images/url.ico</file>
       <file alias="text.ico">images/text.ico</file>
        <file alias="card.ico">images/card.ico</file>
        <file alias="html.ico">images/html.ico</file>
        <file alias="x.ico">images/x.ico</file>
        <file alias="zh_CN.qm">zh_CN.qm</file>
        <file alias="en.qm">en.qm</file>
    </qresource>
</RCC>

之后在命令行中进入该 qrc 文件目录(笔者命名为 resource),通过以下命令将其转为 py文件:

pyrcc5 resource.qrc -o resource.py

接着在自己的界面主程序中导入,通过 : qrc文件名/资源文件名 引用,如下表示使用resource 资源文件中的 icon.ico 文件

import resource
widget.setWindowIcon(QIcon(":resource/icon.ico"))

三、本章小结

第四章我们利用 Qt 语言家实现了界面中文本的翻译,并说明了如何利用 qrc 文件管理打包资源。下一章将对本项目的待优化处作出改进,敬请关注!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值