首页 > 解决方案 > 为什么 pygettext 翻译元组中的字符串而不是元组列表中的字符串?

问题描述

我使用 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 但没有任何改变

标签: pythontranslationgettext

解决方案


好的,我找到了问题的解决方案。我将元组嵌套在一个列表中,还有一个迭代它们的菜单,所以我不得不使用延迟翻译。在 for 循环内:

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

我不得不用 _() 函数包装 mytext (字符串元组)。


推荐阅读