Zarówno {{ |t }}filtr, jak i {% trans %} ... {% endtrans %}bloki, gdy są używane w kontekście pliku szablonu Twig w Drupal, są częścią systemu lokalizacji Drupal. Tłumaczenie ciągów przetwarzanych za pomocą jednego z nich jest obsługiwane w ten sam sposób i za pośrednictwem localize.drupal.org. W przypadku prostych ciągów tekstu można ich używać zamiennie, jednak %transblok ma kilka dodatkowych przydatnych funkcji dla złożonych ciągów.
Różnica polega na tym, że tfiltr dopuszcza tylko proste ciągi, a użycie %transbloku pozwala na użycie dynamicznych symboli zastępczych w ciągu. Podobnie jak przy użyciu t()funkcji php .
Oto kilka przykładów:
Proste tłumaczenie ciągów przez tfiltr:
{{ 'Hello Stack Exchange!'|t }}
Tłumaczenie ciągów znaków z symbolem zastępczym:
{% trans %}Hello {{ user.name }}, today's date is {{ date|placeholder }}.{% endtrans %}
Symbole zastępcze są domyślnie oznaczone {{ var|passthrough }}znakiem ucieczki, ale można je również pozostawić bez kształtu lub sformatować jako symbol zastępczy {{ var|placeholder }}. Jest to równoważne z użyciem odpowiednio @string,! String i% string w funkcji t ().
Możesz także użyć %transbloków w celu sformatowania liczby mnogiej.
{% trans %}
There is 1 comment.
{% plural count %}
There are {{ count }} comments.
{% endtrans %}
W przypadku prostych ciągów są tam naprawdę nie ma reguły o tym, kiedy należy użyć |tVs. %trans. Polecam więc korzystanie z tego, co jest najłatwiejsze do odczytania w szablonie. Z mojego doświadczenia wynika, że |tfiltr działa dobrze w przypadku krótkich ciągów, podczas gdy %transblok jest łatwiejszy w przypadku dłuższych ciągów tekstu.
Więcej informacji na temat użytkowania można znaleźć tutaj: https://www.drupal.org/node/2357633 i tutaj https://www.drupal.org/developing/api/8/localization