2012-03-24 37 views
3

可能重复:
Django switching, for a block of code, switch the language so translations are done in one languageDjango的 - 切换语言设置为模板渲染

有一种简单的方法来获得Django的切换语言,一个模板渲染操作?

在我的情况下,用户可能会触发一个事件,需要发送一个不会讲同一种语言的人的信息。

例如 - 用户是说英语的人,但是调用了一个会说西班牙语的人的动作 - 因此我需要用西班牙语生成外发内容。

我知道通过伪造请求和使用RequestContext是可能的,但我更喜欢更短的清洁解决方案。

+0

我不确定请求或请求上下文是如何进入的。当用户A向用户B发送消息时,当用户B请求查看消息(取决于他们的语言设置)时,可以简单地翻译该消息。 – 2012-03-24 17:53:16

+0

我在看:http://djangosnippets.org/snippets/1428/。 问题是我正在发送电子邮件或短信 - 因此收件人永远不会与我的Django应用程序进行交互。不过,我已经知道django.utils.translate.activate/deactivate是正确的答案,正如shanyu指出的那样。使用上下文管理器的 – JanezStupar 2012-03-24 23:26:25

回答

5

您是否正在寻找类似如下:

from django.utils import translation 
language_code = 'xx' 
template_body = Template(some_text_var) 
translation.activate(language_code) 
r = template_body.render(context) 
translation.deactivate() 

为了更好的代码重用,可以重构这是一个上下文管理器。

+0

- http://stackoverflow.com/a/10385085/486209 – yossi 2013-10-16 11:07:45