Локализация шаблона на фоне - PullRequest
0 голосов
/ 04 октября 2018

Я использую Django-background-tasks для асинхронной отправки электронной почты.Когда я отправляю электронную почту в поле зрения, локализация работает отлично, но когда я пытаюсь отправить ту же электронную почту из фона, шаблон рендеринга Django с локалью по умолчанию.Вот код, который я использую для отправки электронных писем:

Функция, которую я вызываю из views.py

tasks.py

@background()
def send_email_async(email, json):
    send_email_support_request(email, json)

email_utils.py

def send_email_support_request(email, json_data):
    c = {
        'request_id': json_data['request_id']
    }
    template = 'email_support_request.html'
    email_header = {
        'message': "All Data request",
        'subject': "Support request"
    }
    send_email(c, template, email_header, email)
    return

def send_email(context_dict, email_template_name, email_header_data, user_email):
    subject = ''.join(email_header_data['subject'].splitlines())
    email_render = loader.render_to_string(email_template_name, context_dict)
    email = EmailMessage(subject=subject,
                         body=email_render,
                         from_email=settings.EMAIL_HOST_USER,
                         to=[user_email])
    email.content_subtype = "html"
    email.send()
    return

Файл шаблона

<!DOCTYPE html>
{% load i18n %}

<html lang="en" style="background-color: rgb(238,243,246)">

...

<span class="line-text" style="margin-bottom: 20px; display: inline-block;">
{% trans "Thank you for your request!"%}
</span>

Как заставить Django-rest-framework визуализировать шаблон в соответствии сязык, указанный в заголовке Accept-Language?

1 Ответ

0 голосов
/ 04 октября 2018

Я не уверен, что это лучшее решение, но я читаю локаль из представленного запроса, а затем передаю локаль функциям и, наконец, отображаю шаблон:

with translation.override(locale):
    email_render = loader.render_to_string(email_template_name, context_dict)
...