到函數內部Django視圖,我創建這樣一個主題:傳遞一個懶惰的翻譯字符串包括可變在Django
subject = _(u"%(user)s has posted a comment") % { 'user': user }
然後我通過這個主題的功能,它可以處理電子郵件通知:
send_notifications(request, subject, url)
在send_notifications中,我遍歷所有訂閱併發送電子郵件。然而,每個用戶可以有不同的語言,所以我通過Django的激活動態激活用戶的語言:
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函數作爲參數,但沒有成功。任何幫助表示讚賞:)
謝謝jpic。這是一個非常好的答案 - 只是投了!然而,問題是:send_notification不知道主題中使用的用戶變量 - 這是一個非常通用的通知函數。所以我無法訪問主題模板中的「用戶」對象:-P – 2012-03-07 20:22:34
哦,非常酷的除了你的原始答案!謝謝!我沒有得到關於這個變化的通知,並且偶然偶然發現了它。 – 2012-05-15 22:40:20