【发布时间】:2011-07-12 15:17:34
【问题描述】:
我有一个使用工作进程向用户发送电子邮件的 django 项目。工作进程监听 rabbitmq 服务器并获取有关要发送的电子邮件、模板变量、要发送到的电子邮件地址等的所有详细信息。电子邮件正文是使用 django 模板和render_to_string 创建的。
但是我想将其国际化。我们的一些用户将使用英语网站,一些用户使用其他语言。他们应该收到以他们的语言发送的电子邮件。我已尝试 i18n 电子邮件工作进程(使用 django.utils.translations.ugettext/ugettext_lazy),以便电子邮件主题和电子邮件正文分别具有 _(...) 或 {% blocktrans %}。
但是,由于电子邮件是在不同的后台工作进程中呈现和发送的,因此普通的django language detection process 似乎并不适用。没有用户会话、cookie 或 http 标头可供查看。发送消息到rabbitmq服务器时,我可以存储语言代码
但是我如何告诉 django/gettext 在某一时刻使用该语言。
例如我发送电子邮件的函数可能如下所示:
def send_email(details):
lang = details['lang']
name = details['name']
email_address = details['email_address']
switch_gettext_to_this_language_what_goes_here(lang):
# ?????
email_subject = _("Welcome to $SITE")
如何将 django 翻译/gettext 切换为特定语言代码,以便 _() 使用该语言代码?
【问题讨论】:
标签: python django internationalization translation gettext