仅出于特定目的临时加载语言文件

load language file temporarily for specific purpose only

我正在使用 gettext(),根据登录用户的偏好,它工作得很好。目前,有法语和英语两种语言。该应用程序是 django 1.11 python 3.4

现在,为用户 A 加载了英语。但他想向用户 B 发送预定义的消息,用户 B 已将法语指定为他的首选语言。在不重新加载加载的语言的情况下,是否有一种简单的方法可以为该特定任务加载法语,通过其 msgid 获取所需的消息并将其从内存中销毁?

现有系统中的当前解决方案是为此类任务读取Json 文件。但我期待每种语言 (.po) 都有一个语言文件,而不是 Json 和 po 文件。

如果您的任务在视图中,您可以使用以下代码临时更改语言:

translation.activate(lang)

并且不要忘记导入 "translation":

from django.utils import translation

一个例子:

user_A_lang = translations.get_language()
user_B_lang = "en"
# activate the new language
translation.activate(user_B_lang)
# the way you use to translate
my_translated_string = _("String to be translated")
# activate the original language
translation.activate(user_A_lang)