2015-09-28 3 views

ответ

5

Можно ли включать теги HTML в теги шаблонов trans?

Нет, мы не должны включать в себя HTML-теги внутри trans тег шаблона, как вы делаете в своем 1-ом подходе {% trans "Hold <em><strong>Ctrl</strong></em>" %}. Это неправильный подход

Из docs:

{% trans %} шаблонный тег переводится как постоянная строка (заключена в одинарные или двойные кавычки) или содержимое переменной.

Нельзя смешивать переменную шаблона внутри строки в пределах {% trans %}. Если для ваших переводов требуются строки с переменными (заполнители), используйте вместо этого {% blocktrans %}.

<title>{% trans "This is the title." %}</title> # example 1 

<title>{% trans "myvar" noop %}</title> # example 2 

Solution-1: Использование trans шаблонный тег

Вместо того, чтобы HTML-код внутри trans тега, вы можете сделать что-то вроде ниже, чтобы получить желаемый результат (хотя это не рекомендуемый подход).

{% trans "Hold" %} <em><strong>{% trans "Ctrl" %}</strong></em> # using trans tag 

Solution-2: Использование blocktrans тега вместо

лучше вариант заключается в использовании blocktrans тега шаблона вместо trans тега, чтобы включить HTML-тег.

blocktrans тег позволяет пометить сложные предложения, состоящие из литералов и содержимого переменной для перевода путем использования заполнителей:

Вы можете просто сделать:

{% blocktrans %} 
Hold <em><strong>Ctrl</strong></em> 
{% endblocktrans %} 
+0

Какая неприятность. – Daniel

+1

Это не похоже на принцип DRY. – Daniel

+0

В какой-то степени вы можете сказать. –

1

Как сказал Рахул в своем ответе, не следует включать теги HTML внутри тега транс-шаблона. Однако, согласно Translating text blocks with Django .. what to do with the HTML? (который я только что нашел), можно поместить теги HTML внутри тегов шаблонов блоктрансов. Таким образом, мне не нужно делать {% trans "Hold" %} <em><strong>{% trans "Ctrl" %}</strong></em>". Я не смог найти такие инструкции в the Django 1.8 docs.

+0

Да, мы не можем использовать теги HTML внутри тега шаблона 'trans', но мы можем использовать тег blocktrans. Решение с использованием шаблона 'trans' не является лучшим решением. Мы можем использовать тег шаблона blocktrans вместо нашего случая. Я обновил ан, пожалуйста, проверьте. –

 Смежные вопросы

  • Нет связанных вопросов^_^