Sowohl der {{ |t }}Filter als auch die {% trans %} ... {% endtrans %}Blöcke sind, wenn sie im Kontext der Twig-Vorlagendatei in Drupal verwendet werden, Teil des Drupal-Lokalisierungssystems. Die Übersetzung von Zeichenfolgen, die mit einer der beiden Zeichenfolgen verarbeitet wurden, erfolgt auf die gleiche Weise und über localize.drupal.org. Für einfache Textzeichenfolgen können sie austauschbar verwendet werden. Der %transBlock verfügt jedoch über einige zusätzliche nützliche Funktionen für komplexe Zeichenfolgen.
Der Unterschied besteht darin, dass der tFilter nur einfache Zeichenfolgen zulässt, während die Verwendung eines %transBlocks die Verwendung dynamischer Platzhalter in der Zeichenfolge ermöglicht. Ähnlich wie bei der PHP- t()Funktion.
Hier einige Beispiele:
Einfache Stringübersetzung per tFilter:
{{ 'Hello Stack Exchange!'|t }}
String-Übersetzung mit Platzhalter:
{% trans %}Hello {{ user.name }}, today's date is {{ date|placeholder }}.{% endtrans %}
Platzhalter werden standardmäßig maskiert, können aber auch nicht platziert {{ var|passthrough }}oder als Platzhalter formatiert werden {{ var|placeholder }}. Dies entspricht der Verwendung von @string ,! String und% string in der Funktion t ().
Sie können auch %transBlöcke verwenden, um mehrere Zeichenfolgen zu formatieren.
{% trans %}
There is 1 comment.
{% plural count %}
There are {{ count }} comments.
{% endtrans %}
Für einfache Zeichenfolgen gibt es wirklich keine Regeln, wann Sie |tvs. verwenden sollten %trans. Daher würde ich empfehlen, das zu verwenden, was in Ihrer Vorlage am einfachsten zu lesen ist. Nach meiner Erfahrung |tfunktioniert die Verwendung des Filters gut für kurze Zeichenfolgen, während der %transBlock für längere Textzeichenfolgen einfacher ist.
Weitere Informationen zur Verwendung finden Sie hier: https://www.drupal.org/node/2357633 und hier https://www.drupal.org/developing/api/8/localization