【问题标题】:Django - Switch language setting for template rendering [duplicate]Django - 模板渲染的切换语言设置[重复]
【发布时间】:2012-03-24 17:34:07
【问题描述】:

可能重复:
Django switching, for a block of code, switch the language so translations are done in one language

有没有简单的方法让 Django 为单个模板渲染操作切换语言?

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

例如 - 用户是说英语的人,但调用了一个向说西班牙语的人发送消息的操作 - 因此我需要生成西班牙语的传出内容。

我知道可以通过伪造 Request 和使用 RequestContext 来实现,但我更喜欢更短/更简洁的解决方案。

【问题讨论】:

  • 我不确定 Requests 或 RequestContexts 是如何出现的。当然,如果用户 A 向用户 B 发送消息,则可以在用户 B 请求查看消息时简单地翻译该消息(取决于他们的语言设置)。
  • 我在看:djangosnippets.org/snippets/1428。问题是我正在发送电子邮件或 SMS 消息 - 因此收件人永远无法与我的 Django 应用程序交互。但是我后来了解到 django.utils.translate.activate/deactivate 是 shanyu 指出的正确答案。

标签: django internationalization


【解决方案1】:

您是否正在寻找类似以下的内容:

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()

为了更好地重用代码,您可以将其重构为上下文管理器。

【讨论】:

猜你喜欢
  • 2017-04-26
  • 2022-07-22
  • 1970-01-01
  • 2017-12-06
  • 1970-01-01
  • 1970-01-01
  • 2012-10-01
  • 2018-05-20
  • 2018-11-05
相关资源
最近更新 更多