2012-03-24 60 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