我有一个django项目,使用一个worker进程向用户发送电子邮件。Worker进程侦听rabbitmq服务器并获取有关要发送的电子邮件、模板变量、要发送到的电子邮件地址等所有详细信息。使用django模板和render_to_string创建电子邮件正文。
然而,我想要国际化这个项目。我们的一些用户将在英语中使用网站,另一些用户将在其他语言中使用。他们应该用他们的语言接收电子邮件。我尝试i18n电子邮件worker进程(使用django.utils.translations.ugettext/ugettext_lazy),使电子邮件主题和电子邮件正文具有_(...)或{% blocktrans %} 等响应内容。
然而,由于电子邮件是在不同的后台工作进程中呈现和发送的,普通的django语言检测过程似乎不适用。没有用户会话,也没有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 到特定语言代码,以便_()
会使用该语言代码?