django отправляет локализованные электронные письма в зависимости от данных поля UserProfile.language () - PullRequest
3 голосов
/ 31 декабря 2011

В моих предложениях пользователи сайта могут устанавливать оповещения по электронной почте, если предложение соответствует некоторым требованиям (фильтры указаны в модели).

Поэтому, когда пользователь «А» добавляет предложение, сигнал post_save отправляется сельдерею, и применяется проверка на наличие фильтров пользовательских предупреждений и, если они есть, отправляются электронные письма.

Проблема в том, что я понятия не имею, как безопасно устанавливать содержимое для каждого отправленного электронного письма. Услуга предоставляется на нескольких языках. Пользователь может изменить язык в своем профиле (через поле User <- Userprofile.language ()), поэтому в каждом письме должен быть установлен язык UserProfile.language () ... </p>

Пробовал с translation.activate (userinstance.UserProfile.language), но это не работает, как я ожидаю. Как я вижу translation.activate () выполняет активацию перевода для всей цепочки?

PS: содержимое электронной почты отображается из шаблона.

1 Ответ

10 голосов
/ 15 февраля 2012

translation.activate у меня работает:

$ ./manage.py shell
Python 2.7.2 (default, Jan 20 2012, 15:23:49) 
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from django.utils import translation
>>> translation.get_language()
'en-us'
>>> translation.ugettext('E-mail address')
u'E-mail address'
>>> translation.activate('fr')
>>> translation.ugettext('E-mail address')
u'Adresse électronique'

Шаблоны тоже работают:

>>> from django.template import Context, Template
>>> Template('{% load i18n %}{% trans "E-mail address" %}').render(Context())
u'Adresse électronique'

Я не знаю, почему это не работает для вас. Какие значения возвращает ваша UserProfile.language() функция?

...