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 %trans
Block verfügt jedoch über einige zusätzliche nützliche Funktionen für komplexe Zeichenfolgen.
Der Unterschied besteht darin, dass der t
Filter nur einfache Zeichenfolgen zulässt, während die Verwendung eines %trans
Blocks die Verwendung dynamischer Platzhalter in der Zeichenfolge ermöglicht. Ähnlich wie bei der PHP- t()
Funktion.
Hier einige Beispiele:
Einfache Stringübersetzung per t
Filter:
{{ '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 %trans
Blö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 |t
vs. verwenden sollten %trans
. Daher würde ich empfehlen, das zu verwenden, was in Ihrer Vorlage am einfachsten zu lesen ist. Nach meiner Erfahrung |t
funktioniert die Verwendung des Filters gut für kurze Zeichenfolgen, während der %trans
Block 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