Django i18n, использование шаблона внутри строки python, как перевести

Мне нужно перевести некоторые электронные письма в приложении django, и я хотел спросить, как лучше всего помечать для перевода что-то вроде этого:

subject_template = (
        'Enlèvement programmé le {{ pickup_date }} {{ pickup.timeslot }} - {{ pickup.display_id }}'
    )

Это часть письма в скрипте pythons, однако шаблон используется внутри строки, поэтому я не могу использовать gettext, не так ли?

Возможно, кто-то из вас оказался в похожей ситуации, если у вас есть решение, было бы здорово.

Я думаю, есть много способов сделать это.

Лично я предпочитаю хранить в html-формате шаблоны писем, которые мне нужно отправить, и генерирую рендеринг в бэкграунде перед их отправкой.

Вы можете использовать такой пакет, как django-anymail: https://github.com/anymail/django-anymail.

Или сделать свою собственную функцию, используя функциональность рендеринга django: некоторая документация по использованию шаблонизатора django: https://docs.djangoproject.com/en/dev/ref/templates/api/#using-the-template-system

Но вы можете использовать функцию render_to_string, предоставляемую фреймворком:

from django.template.loader import render_to_string
t = render_to_string("mail/template.html")

Что касается вашего вопроса об использовании gettext, то в вашем случае, конечно, можно использовать gettext. Вероятно, это не очень просто для большой электронной почты:

subject_template = (
        gettext(f'Enlèvement programmé le {pickup_date} {pickup.timeslot} - {pickup.display_id}')
    )
Вернуться на верх