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}')
)