І {{ |t }}фільтр, і {% trans %} ... {% endtrans %}блоки, коли вони використовуються в контексті файлу шаблонів Twig в Drupal, є частиною системи локалізації Drupal. І переклад рядків, оброблених будь-якою з них, обробляється однаково і через localize.drupal.org. Для простих рядків тексту їх можна використовувати взаємозамінно, однак %transблок має деякі додаткові корисні функції для складних рядків.
Різниця полягає в тому, що tфільтр допускає лише прості рядки, тоді як використання %transблоку дозволяє використовувати динамічні заповнювачі в рядку. Дуже схоже на використання функції php t().
Ось кілька прикладів:
Простий переклад рядка через 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блоки для форматування множини рядків.
{% trans %}
There is 1 comment.
{% plural count %}
There are {{ count }} comments.
{% endtrans %}
Для простих рядків там дійсно немає правил про те, коли слід використовувати |tVS. %trans. Тому я рекомендую використовувати все, що найпростіше читати у вашому шаблоні. На мій досвід використання |tфільтра добре працює для коротких рядків, тоді як %transблок легший для довших рядків тексту.
Більше інформації про використання можна знайти тут: https://www.drupal.org/node/2357633 та тут https://www.drupal.org/developing/api/8/localization