Задать вопрос

Django, как в HTML-шаблоне реализовать подстановку переменных в строку из .po файла?

Приступаю к изучению Django. Бьюсь целый день казалось бы с мелкой проблемой в своём приложении Django 5.x:
а) есть файл шаблона molar-mass-calculator.html, содержащий мета-тег:
<meta name="description" content="{{ _('molar_mass_calc.meta.description').format(formula_prespace=formula_prespace) }}">


б) В нём идёт обращение к .po-файлам трансляции, зависящим от выбора русского/английского языка. Файл содержит строки вида:
#: templates/molar-mass-calculator.html:10
msgid "molar_mass_calc.meta.description"
msgstr "Molar mass of{formula_prespace}, calculating of molecular "
"weight{formula_prespace}. Chemical calculators online - Chemcalc. For work "
"in a chemical laboratory, school and student classrooms."


Я бы хотел добиться чтобы шла подстановка значения переменной formula_prespace в то, что возвращается из транслятора gettext с замещением контента в фигурных скобок на значение переменной. Мне нужно чтобы подстановка шла с указанием имени переменной как "formula_prespace=formula_prespace" потому что в другой строке трансляции имя будет другим.

Во Flask работает как раз код приведённый в пункте a), прямо из HTML-шаблона:
<meta name="description" content="{{ _('molar_mass_calc.meta.description').format(formula_prespace=formula_prespace) }}">


В Django так просто не удаётся подставлять имя переменной в строку возвращаемую транслятором, ни один из предлагаемых ChatGPT вариантов (например с использованием фильтра stringformat или с использованием blocktrans) не срабатывает. Как это реализовать?
  • Вопрос задан
  • 58 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@Everything_is_bad
1. скорее всего надо написать свой simple_tag и перенести в него этот код _('molar_mass_calc.meta.description').format(formula_prespace=formula_prespace)
2. либо используй в качестве шаблонизатора Jinja2
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы