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

Как можно в Django обеспечить подстановку значения переменной formula_prespace в строку, возвращаемую транслятором gettext, так чтобы имя переменной формулировалось как "formula_prespace=formula_prespace" для обеспечения правильной замены содержимого в фигурных скобках значениями переменной в шаблоне HTML, подобно тому, как это делается в Flask?
  • 12 мая 2024 г. 15:31
Ответы на вопрос 2
Для вставки переменных из .po файла в HTML-шаблоне Django, можно воспользоваться шаблонным тегом `trans`. Например:

```html
{% load i18n %}
{% trans "Hello, {{ username }}" %}
```

В данном случае `{{ username }}` будет заменено значением переменной `username` из .po файла при переводе.

Что касается подстановки значения переменной `formula_prespace` в строку, возвращаемую транслятором gettext, Django не поддерживает такую возможность "из коробки". В Django переменные в строке, передаваемой в `trans`, не обрабатываются как шаблонные переменные, и Django не заменяет их значениями.

Однако, можно применить хитрость и использовать фильтр для подстановки переменных в строку в шаблоне. Например, можно определить кастомный фильтр:

```python
# custom_tags.py
from django import template

register = template.Library()

@register.filter
def subst(value, arg):
    return value.replace('{{ formula_prespace }}', arg)
```

И затем использовать этот фильтр в шаблоне:

```html
{% load custom_tags %}
{% trans "Hello, {{ formula_prespace }}"|subst:formula_prespace %}
```

Это позволит вставить значение переменной `formula_prespace` в строку, переданную в `trans`, хотя и не так просто, как в Flask.
1. скорее всего надо написать свой simple_tag и перенести в него этот код _('molar_mass_calc.meta.description').format(formula_prespace=formula_prespace) 
2. либо используй в качестве шаблонизатора Jinja2
Похожие вопросы