Internationalization PyGtk3和Gettext-在运行时选择语言时出现问题

Internationalization PyGtk3和Gettext-在运行时选择语言时出现问题,internationalization,pygtk,gettext,Internationalization,Pygtk,Gettext,长话短说,当我以为字符串会被翻译时,什么也没发生 我有一个PyGtk应用程序和一个模块,在其中我存储了我希望以以下方式翻译的所有字符串: ''' Strings module. ''' .... CANCEL_BUTTON_TEXT = _("Cancel") BACK_BUTTON_TEXT = _("Back") .... 等等。因此,它们被用于其他模块,如: ''' View module. ''' import strings # Usage example bu

长话短说,当我以为字符串会被翻译时,什么也没发生

我有一个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文件。这是我的Jerraquy:

  • /地区
    • /es
      • 立法会信息
        • base.mo
        • base.po
    • /嗯
      • 立法会信息
        • base.mo
        • base.po
    • 底锅
正如文档所述(),在my 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()

但是,小部件上仍然使用西班牙语。有人能帮我吗?

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

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

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

ii)当用户选择一种语言时,调用该类的方法,并将所有字符串转换为该语言

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