Я заметил, что поддержка Drupal 8, {% trans %}
которая, согласно документации Symfony ( расширение i18n ), добавляет поддержку gettext в Twig.
{{ |t }}
Насколько я знаю, это устаревший способ добавления переводимых строк в шаблоны Drupal. Согласно документации , t()
переводит строку на текущий язык или заданный язык.
Оба поддерживают многоязычный сайт.
- Каковы различия между этими расширениями?
- Когда я должен использовать один над другим?
Ответы:
И
{{ |t }}
фильтр, и{% trans %} ... {% endtrans %}
блоки, используемые в контексте файла шаблона Twig в Drupal, являются частью системы локализации Drupal. И перевод для строк, обработанных любой из них, обрабатывается таким же образом и через localize.drupal.org. Для простых строк текста их можно использовать взаимозаменяемо, однако%trans
блок имеет некоторые дополнительные полезные функции для сложных строк.Разница в том, что
t
фильтр допускает только простые строки, а использование%trans
блока позволяет использовать динамические заполнители в строке. Очень похоже на использованиеt()
функции php .Вот несколько примеров:
Простой перевод строки через
t
фильтр:{{ 'Hello Stack Exchange!'|t }}
Перевод строки с заполнителем:
{% trans %}Hello {{ user.name }}, today's date is {{ date|placeholder }}.{% endtrans %}
Заполнители по умолчанию экранированы, но их также можно оставить неэкранированными
{{ var|passthrough }}
или отформатировать как заполнитель{{ var|placeholder }}
. Это эквивалентно использованию @string,! String и% string в функции t () соответственно.Вы также можете использовать
%trans
блоки для форматирования множественных строк.Для простых строк действительно нет правил о том, когда вы должны использовать
|t
против%trans
. Поэтому я бы порекомендовал использовать все, что проще всего читать в вашем шаблоне. По моему опыту, использование|t
фильтра хорошо работает для коротких строк, в то время как%trans
блок легче для длинных строк текста.Более подробную информацию об использовании можно найти здесь: https://www.drupal.org/node/2357633 и здесь https://www.drupal.org/developing/api/8/localization.
источник