Ich stelle fest, dass Drupal 8-Unterstützung, {% trans %}
die laut Symfony-Dokumentation ( The i18n Extension ) Twig gettext-Unterstützung hinzufügt.
{{ |t }}
Soweit ich weiß, ist dies die bisherige Möglichkeit, übersetzbare Zeichenfolgen in Drupal-Vorlagen einzufügen. Gemäß der Dokumentation , t()
übersetzt einen String in der aktuellen Sprache oder eine bestimmte Sprache.
Beide unterstützen mehrsprachige Websites.
- Was sind die Unterschiede zwischen diesen Erweiterungen?
- Wann sollte ich eins über das andere verwenden?
Antworten:
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.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
quelle