Le {{ |t }}
filtre et les {% trans %} ... {% endtrans %}
blocs, lorsqu'ils sont utilisés dans le contexte du fichier modèle Twig dans Drupal, font partie du système de localisation Drupal. Et la traduction des chaînes traitées avec l'une ou l'autre est gérée de la même manière et via localize.drupal.org. Pour les chaînes de texte simples, elles peuvent être utilisées de manière interchangeable, mais le %trans
bloc possède quelques fonctionnalités supplémentaires utiles pour les chaînes complexes.
La différence est que le t
filtre ne permet que des chaînes simples, tandis que l'utilisation d'un %trans
bloc permet l'utilisation d'espaces réservés dynamiques dans la chaîne. Tout comme l'utilisation de la t()
fonction php .
Voici quelques exemples:
Traduction de chaîne simple via un t
filtre:
{{ 'Hello Stack Exchange!'|t }}
Traduction de chaîne avec espace réservé:
{% trans %}Hello {{ user.name }}, today's date is {{ date|placeholder }}.{% endtrans %}
Les {{ var|passthrough }}
espaces réservés sont échappés par défaut, mais peuvent également être laissés sans échappement ou formatés en tant qu'espaces réservés {{ var|placeholder }}
. Cela équivaut à utiliser @string,! String et% string dans la fonction t () respectivement.
Vous pouvez également utiliser des %trans
blocs afin de formater plusieurs chaînes.
{% trans %}
There is 1 comment.
{% plural count %}
There are {{ count }} comments.
{% endtrans %}
Pour les chaînes simples , il n'y a vraiment pas de règles sur le moment où vous devez utiliser |t
contre %trans
. Je recommanderais donc d'utiliser ce qui est le plus facile à lire dans votre modèle. D'après mon expérience, l'utilisation du |t
filtre fonctionne bien pour les chaînes courtes, tandis que le %trans
bloc est plus facile pour les chaînes de texte plus longues.
Plus d'informations sur l'utilisation peuvent être trouvées ici: https://www.drupal.org/node/2357633 et ici https://www.drupal.org/developing/api/8/localization