暂时加载语言文件仅用于特定目的

时间:2018-02-04 16:17:11

标签: python django django-views django-i18n

我正在使用gettext(),根据登录用户的偏好,它可以正常工作。目前,有法语和英语。应用程序是django 1.11 with python 3.4

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

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

1 个答案:

答案 0 :(得分:1)

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

translation.activate(lang)

并且不要忘记导入“翻译”:

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)