我可以手动将语言代码提供给 Django gettext() 吗?

Can I manually feed the language code to Django gettext()?

我在后端有一些字符串,在使用它们之前偶尔需要翻译成其他语言。我计划将用户语言选择保存到数据库中,这样就可以很容易地从那里获取它。但是,我不清楚的是,如果我实施本地化并拥有几个不同的语言文件,我该如何使用正确的语言版本?我无法从 cookie、url、用户会话等读取语言选择。我可以使用数据库中的语言代码来选择我要使用的翻译吗?

您可以使用 activate 手动激活语言。下面是一个示例,假定用户具有包含有效语言代码的语言属性:

from django.utils.translation import activate, deactivate
from django.utils.translation import gettext as _

user = MyUserModel.objects.get(username=username)
activate(user.language)
my_string_translated_into_users_language = _("Hello")
deactivate()

这样,您就可以覆盖当前的会话语言。然后 deactivate() 将停用当前活动的翻译对象,以便进一步的 _ 调用将再次针对默认翻译对象进行解析。