Was ist der Unterschied zwischen {{| t}} und {% trans%}?

11

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?
itsdarrylnorris
quelle
Ich benutze trans für Pluralformen. Ansonsten einfach t. Zum Beispiel "{% trans%} item {% plural count%} items {% endtrans%}"

Antworten:

20

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

eojthebrave
quelle
Tolle Erklärung. Vielen Dank! Die Erklärung zu do fehlte stark (IMHO). Ihre gründlichere Erklärung mit Beispielen hat mir sehr geholfen und mir einige Ideen gegeben. Besonders das Plural-String-Beispiel. Das ist ziemlich schlau!
Tyler Youngblood