У меня есть проект 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 translations/gettext на конкретный код языка, чтобы _()
использовал этот код языка?