脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - 详解pyqt中解决国际化tr()函数不起作用的问题

详解pyqt中解决国际化tr()函数不起作用的问题

2022-09-12 11:48之一Yo Python

本文主要介绍了pyqt中解决国际化tr()函数不起作用的问题,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

前言

有些时候我们在父类中使用了 self.tr('XXX'),使用 Qt Linguist 完成翻译并导出 qm 文件后,发现子类中仍然是英文原文。比如下面这段代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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 文件中,有这样一段代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
<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 为子类,那么只需添加下述代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
<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 文件即可。

到此这篇关于详解pyqt中解决国际化tr()函数不起作用的问题的文章就介绍到这了,更多相关pyqt tr()不起作用内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://www.cnblogs.com/zhiyiYo/p/15862675.html

延伸 · 阅读

精彩推荐
  • Pythonpython--字典(dict)和集合(set)详解

    python--字典(dict)和集合(set)详解

    本文通过实例给大家介绍了python中字典和集合的知识小结,非常不错,具有参考借鉴价值,需要的的朋友参考下吧,希望能够给你带来帮助...

    带你去网吧里偷耳机6512022-01-03
  • Pythonpython中字符串前面加r的作用

    python中字符串前面加r的作用

    这篇文章主要介绍了python中字符串前面加r的作用,实例分析了Python通过字符串前面加r实现禁止字符串转义的功能,需要的朋友可以参考下 ...

    MaxOmnis4432020-07-12
  • Python详解Python如何批量采集京东商品数据流程

    详解Python如何批量采集京东商品数据流程

    这不快过年了,又是要买年货,又是要给女朋友买礼物的,分析一下价格,看看哪些是真的降价了...

    轻松学Python5722022-08-30
  • Python用 Python 理清编码问题:Unicode万国码

    用 Python 理清编码问题:Unicode万国码

    为解决语言各自为政的编码,人们提出了Unicode编码方案,这个方案简单粗暴:把世界上所有语言字符统一编码。Unicode的两种方案UCS-2和UCS-4,可使用空间分...

    Python中文社区6212021-04-11
  • Python一篇文章带你了解python标准库--os模块

    一篇文章带你了解python标准库--os模块

    在本篇内容里小编给大家整理的是关于Python中os模块及用法相关知识点,有兴趣的朋友们可以学习下,希望能给你带来帮助...

    wakeyo_J4012021-12-21
  • Pythonpython实现多人聊天服务器以及客户端

    python实现多人聊天服务器以及客户端

    这篇文章主要为大家详细介绍了python实现多人聊天服务器以及客户端,带图形化界面,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙...

    一个没有姓名的咸鱼10872021-12-11
  • Pythonpython用pyecharts实现地图数据可视化

    python用pyecharts实现地图数据可视化

    这篇文章主要介绍了python用pyecharts实现地图数据可视化,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下...

    阿橙FM5752021-09-25
  • Pythonpython生成带有表格的图片实例

    python生成带有表格的图片实例

    今天小编就为大家分享一篇python生成带有表格的图片实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    秋枫-山高人为峰13312021-05-26