如何在 pyqt 中解决国际化 tr() 函数不起作用的问题
2023-02-18 16:32:03 时间
前言
有些时候我们在父类中使用了 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 文件即可。
相关文章
- [NetWork] 数据封装与解封装流程
- 深度学习-LeNet(第一个卷积神经网络)
- Java跨域-Redirect的跨域问题解决
- 十年前,AlexNet就预定了今天的NeurIPS 2022时间检验奖
- 无需新型token mixer就能SOTA:MetaFormer视觉基线模型开源,刷新ImageNet记录
- 推荐一款神仙颜值的Redis客户端工具
- 首个在ImageNet上精度超过80%的二值神经网络BNext问世,-1与+1的五年辛路历程
- Redis+Guava,性能炸裂!这组合真的太顶了....
- 【eureka问题:已解决】Request execution failed with message: java.net.ConnectException: Connection refused:
- 【已解决】Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon runnin
- 【已解决】springboot在使用redisTemplate的测试的时候报空指针
- 差两个像素让我很难受,这问题绝不允许留到明年!
- React DevUI 18.0 正式发布🎉
- 好慌,我代码没了!不会是变基变出问题了吧?
- 老板:你为什么要选择 Vue?
- 实用的 Bash 快捷键
- Quill基本使用和配置 - DevUI
- Quill富文本编辑器的实践 - DevUI
- 如何解决异步接口请求快慢不均导致的数据错误问题? - DevUI
- 让我们一起建设 Vue DevUI 项目吧!🥳