详解pyqt中解决国际化tr()函数不起作用的问题
作者:之一Yo 发布时间:2021-03-31 05:15:56
标签:pyqt,tr()
前言
有些时候我们在父类中使用了 self.tr('XXX'),使用 Qt Linguist 完成翻译并导出 qm 文件后,发现子类中仍然是英文原文。比如下面这段代码:
class AlbumCardBase(QWidget):
? ? """ 专辑卡基类 """
? ? def __init__(self, parent=None):
? ? ? ? super().__init__(parent=parent)
? ? ? ? self.playButton = BlurButton(
? ? ? ? ? ? self,
? ? ? ? ? ? (30, 65),
? ? ? ? ? ? ":/images/album_tab_interface/Play.png",
? ? ? ? ? ? self.coverPath,
? ? ? ? ? ? self.tr('Play')
? ? ? ? )
? ? ? ? self.addToButton = BlurButton(
? ? ? ? ? ? self,
? ? ? ? ? ? (100, 65),
? ? ? ? ? ? ":/images/album_tab_interface/Add.png",
? ? ? ? ? ? self.coverPath,
? ? ? ? ? ? self.tr('Add to')
? ? ? ? )
父类 AlbumCardBase 中有两处使用了 tr 函数,分别翻译为 播放 和 添加到,但是在子类中这些文本仍然会显示为 Play 和 Add to,下面来看看如何解决这个问题。
解决过程
生成的 ts 文件中,有这样一段代码:
<context>
? ? <name>AlbumCardBase</name>
? ? <message>
? ? ? ? <location filename="../../components/album_card/album_card_base.py" line="50"/>
? ? ? ? <source>Add to</source>
? ? ? ? <translation>添加到</translation>
? ? </message>
? ? <message>
? ? ? ? <location filename="../../components/album_card/album_card_base.py" line="43"/>
? ? ? ? <source>Play</source>
? ? ? ? <translation>播放</translation>
? ? </message>
</context>
可以看到上述代码描述了源文的位置和内容以及译文,但是只对父类 AlbumCardBase 起作用。要想对子类应用上述规则,只需粘贴再修改 <name> 标签中的类名即可,比如 AlbumCard 为子类,那么只需添加下述代码:
<context>
? ? <name>AlbumCard</name>
? ? <message>
? ? ? ? <location filename="../../components/album_card/album_card_base.py" line="50"/>
? ? ? ? <source>Add to</source>
? ? ? ? <translation>添加到</translation>
? ? </message>
? ? <message>
? ? ? ? <location filename="../../components/album_card/album_card_base.py" line="43"/>
? ? ? ? <source>Play</source>
? ? ? ? <translation>播放</translation>
? ? </message>
</context>
完成上述步骤后导出 qm 文件即可。
来源:https://www.cnblogs.com/zhiyiYo/p/15862675.html


猜你喜欢
- 需求背景一个统计接口,前端需要返回两个数组,一个是0-23的小时计数,一个是各小时对应的统计数。思路 直接使用group by查询要统计的表
- 插值主要用于物理学数学中,逼近某一确定值的方法(1)插值是通过已知的离散数据求未知数据的方法。(2)与拟合不同,插值要求曲线通过所有的已知数
- Bulk 方式进行目标数据的Load,是Informatica提供的一种高性能的Load数据方式。它利用数据库底层机制,依靠调用数据库本身提
- 自己写了一下,适用而已,不太好,应该还能优化。先自己记录一下。不说废话了,直接贴代码最好:/* * 获得时间差,时间格式为 年-月
- 本文实例讲述了python读取json文件并将数据插入到mongodb的方法。分享给大家供大家参考。具体实现方法如下:#coding=utf
- 这篇文章主要介绍了Python检查 云备份进程是否正常运行代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价
- GIT作为源码管理的方式现在是越来越流行了,在VisualStudio 2012中,就通过插件的现实对GIT进行了官方支持,并且这个插件在V
- 先以一个大牛的一段关于Python Metapgramming的著名的话来做开头:Metaclasses are deeper magic
- 目录1.用途2.语法3.实操1.用途通常,如果发生错误,脚本就会立即停止,并在控制台将错误打印出来。有了这个语句就可以捕获错误并执行合理操作
- 方法一:局部刷新我们讲述到最多的是ajax 了,当然也可以不使用ajax来刷新页面了,我们可以使用jquery中的append来给指定内容加
- 前言:在软件测试中,为项目编写接口自动化用例已成为测试人员常驻的测试工作。本文以python为例,基于笔者曾使用过的三种用例数据读取方法:x
- 1. 使用readline模块逐行读取流数据1.1. 创建Interface对象在readline模块中,通过Interface对象的使用来
- 有一道题: 比较两个列表范围,如果包含的话,返回TRUE,否则FALSE。 详细题目如下:Create a function, this f
- 本次测试基于MovieLens数据集实现的基于物品的协同过滤,目前只是在小样本上实现,主要问题是计算太耗内存,后期代码继续优化与完善。 数据
- 前言:jieba是优秀的中文分词第三方库,由于中文文本之间每个汉字都是连续书写的,我们需要通过特定的手段来获得其中的每个词组,这种手段叫做分
- 本文实例讲述了SQL Server日期加减函数DATEDIFF与DATEADD用法。分享给大家供大家参考,具体如下:SQL Server 日
- isnull()Null 值指出变量不包含有效数据。Null 与 Empty 不同,后者指出变量未经初始化。Null 与零长度字符串 (&q
- 本文实例讲述了python实现备份目录的方法。分享给大家供大家参考。具体如下:备份脚本1:#!/usr/bin/python# Filena
- 本文主要介绍了数据处理方面的内容,希望大家仔细阅读。一、数据分析得到了以下列字符串开头的文本数据,我们需要进行处理二、回滚我们需要对http
- 简单类型内置到 Python 编程语言中的简单数据类型包括: bool