Symfony2 HTML в фильтре трансверса
Я использую Symfony2.1 и имею по умолчанию config.yml
Документация указана:
{# but static strings are never escaped #}
{{ '<h3>foo</h3>'|trans }}
Но если я скопирую и вставим его в мой пустой шаблон (без каких-либо дополнительных автоаршрутов или другого), я получил строку с экранированием <h3>foo</h3>
. Что я делаю неправильно?
Ответы
Ответ 1
Попробуйте использовать фильтр ветки ветки:
{{ '<h3>foo</h3>' | trans | raw }}
Однако не используйте фильтр raw
, если вы обрабатываете любой пользовательский ввод! Это позволяет использовать атаки с использованием межсайтовых скриптов, в соответствии с создателями Symfony. См. этот аналогичный вопрос для безопасной, но более утомительной альтернативы.
Ответ 2
Удержание HTML-материала в переводах неверно, потому что переводчики обычно нарушают его. Но если вам это действительно нужно:
{% trans %}<h3>foo</h3>{% endtrans %}
https://github.com/symfony/symfony/issues/2713#issuecomment-12510417