У меня есть проект django, который использует рабочий процесс, который отправляет электронные письма пользователям.Рабочий процесс прослушивает сервер rabbitmq и получает все сведения об отправляемом электронном письме, переменных шаблона, адресе электронной почты для отправки и т. Д. Тело электронной почты создается с помощью шаблонов django и render_to_string .
Однако я хочу интернационализировать это.Некоторые из наших пользователей будут использовать веб-сайт на английском языке, некоторые на других языках.Они должны получать электронные письма на своем языке.Я попытался включить рабочий процесс электронной почты (используя django.utils.translations.ugettext / ugettext_lazy), чтобы тема и тело письма имели _ (...) или {% blocktrans%} соответственно.
Однако, поскольку электронное письмо отрисовывается и отправляется в другом фоновом рабочем процессе, обычный процесс определения языка django , похоже, не применяется.Там нет ни пользовательского сеанса, ни файлов cookie, ни http-заголовков для просмотра.При отправке сообщения на сервер rabbitmq я могу сохранить код языка
Но как мне сказать django / gettext использовать этот язык в точке.
напримерМоя функция отправки электронной почты может выглядеть следующим образом:
def send_email(details):
lang = details['lang']
name = details['name']
email_address = details['email_address']
switch_gettext_to_this_language_what_goes_here(lang):
# ?????
email_subject = _("Welcome to $SITE")
Что я вставлю, чтобы переключить переводы / перевод текста в Django на определенный код языка, чтобы _()
использовал этот код языка?