Python 为什么pygettext翻译元组中的字符串而不是元组列表中的字符串?

Python 为什么pygettext翻译元组中的字符串而不是元组列表中的字符串?,python,translation,gettext,Python,Translation,Gettext,我使用pygettext来翻译python模块,它正确地创建了po文件,但在翻译时,它并不能翻译所有内容。 例如: txt=(_("Wait"),_("shutting"),_("down...")) 元组中的字符串被正确翻译 Menu_Main = [ (_("Begin Exam"), "test(duration=env['TEST_DURATION'])"), (_("Back to Parameters Monitor"), "menu_return(True)"),

我使用pygettext来翻译python模块,它正确地创建了po文件,但在翻译时,它并不能翻译所有内容。 例如:

txt=(_("Wait"),_("shutting"),_("down..."))
元组中的字符串被正确翻译

Menu_Main = [
    (_("Begin Exam"), "test(duration=env['TEST_DURATION'])"),
    (_("Back to Parameters Monitor"), "menu_return(True)"),
]
此元组列表中的字符串不会被转换。为什么?

我是这样安装语言的:

lang = "it"
gettext.textdomain('domain')
gettext.bindtextdomain('domain', '/usr/share/locale')
la = gettext.translation('domain', '/usr/share/locale',languages=lang.split(),fallback=True)
_ = la.gettext
la.install(names=['gettext'])

我尝试使用xgettext而不是pygettext,但没有任何改变。好的,我找到了问题的解决方案。我将元组嵌套在一个列表中,并使用一个菜单对其进行迭代,因此我必须使用定义的翻译。 在for循环中:

draw.text((dt_x, dt_y) , _(mytext), font=myfont, fill="white")

我必须用函数u()包装我的文本(字符串的元组)。

好的,我找到了问题的解决方案。我将元组嵌套在一个列表中,并使用一个菜单对其进行迭代,因此我必须使用定义的翻译。 在for循环中:

draw.text((dt_x, dt_y) , _(mytext), font=myfont, fill="white")

我必须用函数uz()包装mytext(字符串的元组)。

字符串是否在.mo文件中本地化…?是的,msgfmt编译正确,所有字符串都存在于mo中,但其中一些字符串没有得到translatedDoes
打印(uz(“开始检查”)
在列表工作之外…?将它放在列表表达式内部和外部之间应该没有什么区别…是的,我在python控制台中尝试了它,它在.mo文件中本地化的字符串中工作了…?是的,msgfmt编译正确,所有字符串都存在于mo中,但其中一些没有得到translatedDoes
print((“开始检查”))
列表之外的工作…?将它放在列表表达式内部和外部应该没有什么区别……是的,我在python控制台中尝试了它,它成功了