Sia il {{ |t }}filtro che i {% trans %} ... {% endtrans %}blocchi, se utilizzati nel contesto del file modello Twig in Drupal, fanno parte del sistema di localizzazione Drupal. E la traduzione per le stringhe elaborate con una delle due viene gestita allo stesso modo e tramite localize.drupal.org. Per semplici stringhe di testo possono essere utilizzate in modo intercambiabile, tuttavia il %transblocco ha alcune funzioni utili aggiuntive per stringhe complesse.
La differenza è che il tfiltro consente solo stringhe semplici, mentre l'uso di un %transblocco consente l'uso di segnaposto dinamici nella stringa. Proprio come usare la t()funzione php .
Ecco alcuni esempi:
Semplice traduzione delle stringhe tramite tfiltro:
{{ 'Hello Stack Exchange!'|t }}
Traduzione stringa con segnaposto:
{% trans %}Hello {{ user.name }}, today's date is {{ date|placeholder }}.{% endtrans %}
I segnaposto vengono salvati per impostazione predefinita, ma possono anche essere lasciati senza caratteri di escape {{ var|passthrough }}o formattati come segnaposto {{ var|placeholder }}. Ciò equivale all'utilizzo di @string,! String e% string nella funzione t () rispettivamente.
Puoi anche usare i %transblocchi per formattare stringhe plurali.
{% trans %}
There is 1 comment.
{% plural count %}
There are {{ count }} comments.
{% endtrans %}
Per stringhe semplici non ci sono regole su quando usare |tvs %trans.. Quindi consiglierei di usare ciò che è più facile da leggere nel tuo modello. Nella mia esperienza l'uso del |tfiltro funziona bene per stringhe brevi, mentre il %transblocco è più semplice per stringhe di testo più lunghe.
Ulteriori informazioni sull'utilizzo sono disponibili qui: https://www.drupal.org/node/2357633 e qui https://www.drupal.org/developing/api/8/localization