І {{ |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 %}
Для простих рядків там дійсно немає правил про те, коли слід використовувати |t
VS. %trans
. Тому я рекомендую використовувати все, що найпростіше читати у вашому шаблоні. На мій досвід використання |t
фільтра добре працює для коротких рядків, тоді як %trans
блок легший для довших рядків тексту.
Більше інформації про використання можна знайти тут: https://www.drupal.org/node/2357633 та тут https://www.drupal.org/developing/api/8/localization