Je remarque que le support de Drupal 8 {% trans %}
qui, selon la documentation Symfony (l' extension i18n ), ajoute le support gettext à Twig.
{{ |t }}
, pour autant que je sache, est la manière traditionnelle d'ajouter des chaînes traduisibles dans les modèles Drupal. Selon la documentation , t()
traduit une chaîne dans la langue actuelle ou une langue donnée.
Les deux prennent en charge un site Web multilingue.
- Quelles sont les différences entre ces extensions?
- Quand devrais-je en utiliser un par-dessus l'autre?
Réponses:
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 lat()
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.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
la source