Python 特定地区的gettext

Python 特定地区的gettext,python,django,internationalization,Python,Django,Internationalization,我可以使用当前语言环境中的翻译 from django.utils.translation import ugettext as _ _("password") 然而,在我的代码(具体的形式)中,我希望获得特定语言的翻译。我想说 ugettext_magic("de", "password") 我已经用我需要的语言翻译了字符串。有一个解决方法: from django.utils import translation from django.utils.translation import

我可以使用当前语言环境中的翻译

from django.utils.translation import ugettext as _
_("password")
然而,在我的代码(具体的形式)中,我希望获得特定语言的翻译。我想说

ugettext_magic("de", "password")
我已经用我需要的语言翻译了字符串。

有一个解决方法:

from django.utils import translation
from django.utils.translation import ugettext

def get_translation_in(string, locale):
    translation.activate(locale)
    val = ugettext(string)
    translation.deactivate()

print get_translation_in('text', 'de')
或者简单地说:

gettext.translation('django', 'locale', ['de'], fallback=True).ugettext('text')
上下文管理器在进入时激活新语言,在退出时重新激活以前的活动语言

from django.utils import translation

def get_translation_in(language, s):
    with translation.override(language):
        return translation.gettext(s)

print(get_translation_in('de', 'text'))

如果您之前已经设置了区域设置。。。这能消除它吗?我从没见过这个。。。python3使用:
gettext.translation('django','locale',['de'],fallback=True)。gettext('text')
它将始终返回unicoderelated:这个答案比投票率更高的答案更可取。它不涉及激活和停用翻译,这会导致我的代码出现问题,是解决这个问题的一个优雅的解决方案。