Переключение Django для блока кода переключает язык, поэтому переводы выполняются на одном языке

У меня есть проект django, который использует рабочий процесс, который отправляет электронные письма пользователям. Рабочие процессы слушают сервер rabbitmq и получают всю информацию об отправляемом электронном письме, переменных шаблона, адресе электронной почты для отправки и т. Д. Тело письма создается с помощью шаблонов django и render_to_string .

] Однако я хочу интернационализировать это. Некоторые из наших пользователей будут использовать веб-сайт на английском языке, некоторые на других языках. Они должны получать электронные письма на своем языке. Я попытался настроить рабочий процесс электронной почты (с помощью django.utils.translations.ugettext / ugettext_lazy), чтобы в теме и теле письма было _ (...) или {% blocktrans%} соответственно .

Однако, поскольку электронное письмо обрабатывается и отправляется в другом фоновом рабочем процессе, обычный процесс определения языка django , похоже, неприменим. Нет ни сеанса пользователя, ни файлов cookie, ни HTTP-заголовков для просмотра. При отправке сообщения на сервер rabbitmq я могу сохранить код языка

Но как мне указать django / gettext использовать этот язык в какой-то момент.

например, Моя функция, отправляющая электронную почту, может выглядеть следующим образом : Пользователи должны войти в систему, иначе они должны перенаправить на страницу входа. Я использовал для этого атрибут Authorize (). [Авторизовать] public ActionResult ...

Я использовал функцию jquery ajax для отправки формы. Пользователи должны войти в систему, иначе они должны перенаправить на страницу входа. Я использовал для этого атрибут Authorize ().

[Authorize]
public ActionResult Creat()
{
....
}

Если пользователь не вошел в систему, действие возвращает страницу входа в систему для функций jquery ajax, и она отображается в та же страница, но я хочу перенаправить пользователя на страницу входа. Есть ли какое-нибудь решение?

34
задан Ghooti Farangi 10 March 2011 в 11:00
поделиться