【问题标题】:PyGtk3 and Gettext - problem choosing the language at run-timePyGtk3 和 Gettext - 在运行时选择语言的问题
【发布时间】:2020-01-09 18:58:34
【问题描述】:

长话短说,当我认为字符串会被翻译时,什么都没有发生。

我有一个 PyGtk 应用程序和一个模块,我在其中存储了我想以下列方式翻译的所有字符串:

'''
    Strings module.
'''

....
CANCEL_BUTTON_TEXT = _("Cancel")
BACK_BUTTON_TEXT = _("Back")
....

等等。然后它们被其他模块使用,例如:

'''
    View module.
'''

import strings

# Usage example
button.set_label(strings.CANCEL_BUTTON_TEXT)
button.set_tooltip(strings.TOOLTIP)
window_title.set_title(strings.WINDOW_TITLE)
...

我已经创建了必要的 .mo 文件。这是我的杰拉基:

  • /语言环境
    • /es
      • LC_MESSAGES
        • base.mo
        • base.po
    • /zh
      • LC_MESSAGES
        • base.mo
        • base.po
    • base.pot

正如文档所说 (https://docs.python.org/3/library/gettext.html),在我的 main.py 中,我有以下几行:

import gettext
gettext.install('myapplication')

es_lang = gettext.translation('base', localedir='locales', languages=['es'])
en_lang = gettext.translation('base', localedir='locales', languages=['en'])

es_lang.install()

然后,在我的应用程序中,我有一个按钮,当按下该按钮时,将执行以下行:

en_lang.install()

但小部件仍使用西班牙语。谁能帮帮我?

【问题讨论】:

    标签: internationalization pygtk gettext


    【解决方案1】:

    所以,我做错了什么是我翻译了字符串,但我没有更新 GTK 小部件标签等。

    我解决这个问题的方法是:

    i) 创建了一个类,当用户选择一种语言时,我在其中放置了我想要翻译的所有字符串。该类是唯一导入 gettext 模块的类。

    ii) 当用户选择一种语言时,会调用该类的方法并将所有字符串翻译成该语言。

    iii) 该类之外的另一个方法会更新所有使用这些字符串的标签和小部件。

    【讨论】:

      猜你喜欢
      • 2023-04-07
      • 2021-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-20
      • 1970-01-01
      相关资源
      最近更新 更多