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?

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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.