我尝试根据user.language中设置的语言向我的用户发送已翻译的电子邮件。为了做到这一点,我从我的BaseMailerService覆盖了send_mail方法。
from django.utils.translation import override
class BaseTranslatedMailerService(BaseMailerService):
"""
Renders the acutal content of an email according to the users configurated
language.
"""
def send_mail(self, context, attachments=None):
recipient_obj = context.get('recipient').get('user_obj')
# Default for all language settings is 'en'
with override(recipient_obj.language):
return super(BaseTranslatedMailerService, self).send_mail(context=context,
attachments=attachments)
在我的测试中,我根据user.language发送邮件的翻译版本,但在我的服务器环境中,它每次只发送英文邮件。也许它必须用我必须设置的线程语言做点什么?
答案 0 :(得分:0)
出乎意料地,我不小心将所有* .mo文件添加到我的gitignore,导致我的编译语言字符串被排除在部署过程之外。从gitignore中删除* .mo解决了我的问题。