Zauważam, że obsługa Drupala 8, {% trans %}
która zgodnie z dokumentacją Symfony ( rozszerzenie i18n ) dodaje obsługę gettext do Twiga.
{{ |t }}
, o ile mi wiadomo, to klasyczny sposób dodawania tłumaczeń do szablonów Drupala. Zgodnie z dokumentacją , t()
przekłada ciąg do języka potocznego lub danego języka.
Oba obsługują wielojęzyczną stronę internetową.
- Jakie są różnice między tymi rozszerzeniami?
- Kiedy powinienem używać jednego na drugim?
Odpowiedzi:
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%trans
blok ma kilka dodatkowych przydatnych funkcji dla złożonych ciągów.Różnica polega na tym, że
t
filtr dopuszcza tylko proste ciągi, a użycie%trans
bloku pozwala na użycie dynamicznych symboli zastępczych w ciągu. Podobnie jak przy użyciut()
funkcji php .Oto kilka przykładów:
Proste tłumaczenie ciągów przez
t
filtr:{{ '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ć
%trans
bloków w celu sformatowania liczby mnogiej.W przypadku prostych ciągów są tam naprawdę nie ma reguły o tym, kiedy należy użyć
|t
Vs.%trans
. Polecam więc korzystanie z tego, co jest najłatwiejsze do odczytania w szablonie. Z mojego doświadczenia wynika, że|t
filtr działa dobrze w przypadku krótkich ciągów, podczas gdy%trans
blok 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
źródło