Яка різниця між {{| t}} та {% trans%}?


11

Я зауважую, що підтримка Drupal 8, {% trans %}яка відповідно до документації Symfony ( розширення i18n ), додає підтримку gettext до Twig.

{{ |t }}Наскільки я знаю, це старий спосіб додавання рядків, що перекладаються, до шаблонів Drupal. Згідно з документацією , t()перекладає рядок на поточну мову або дану мову.

Обидва підтримують багатомовний веб-сайт.

  • Які відмінності між цими розширеннями?
  • Коли я повинен використовувати один над іншим?

Я використовую транс для множини. Інакше прості т. Наприклад, "{% trans%} предмет {% множина кількість%} елементів {% endtrans%}"

Відповіді:


21

І {{ |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


Дивовижне пояснення. Дякую! Пояснення дій було сильно бракувало (ІМХО). Ваше більш ретельне пояснення з прикладами мені дуже допомогло і дало мені пару ідей. Особливо множинного прикладу рядка. Це досить гладко!
Тайлер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.