【发布时间】:2012-03-07 18:25:54
【问题描述】:
在 Django 视图中,我创建了一个这样的主题:
subject = _(u"%(user)s has posted a comment") % { 'user': user }
然后我将这个主题传递给一个处理电子邮件通知的函数:
send_notifications(request, subject, url)
在 send_notifications 中,我遍历所有订阅并发送电子邮件。但是,每个用户可以有不同的语言,所以我通过 Django 的 activate 动态激活用户的语言:
def send_notifications(request, subject, url):
from django.utils.translation import activate
for s in Subscription.objects.filter(url=url):
activate(s.user.userprofile.lang)
send_mail(subject, render_to_string('notification_email.txt', locals()), settings.SERVER_EMAIL, [s.user.email])
模板以每个用户的正确语言呈现。但是,主题作为评估和翻译的字符串传递给 send_notifications,因此不会被翻译。
我尝试使用惰性翻译和 lambda 函数作为参数,但没有成功。任何帮助表示赞赏:)
【问题讨论】:
标签: django internationalization translation lazy-evaluation