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 %trans
blocco ha alcune funzioni utili aggiuntive per stringhe complesse.
La differenza è che il t
filtro consente solo stringhe semplici, mentre l'uso di un %trans
blocco consente l'uso di segnaposto dinamici nella stringa. Proprio come usare la t()
funzione php .
Ecco alcuni esempi:
Semplice traduzione delle stringhe tramite t
filtro:
{{ '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 %trans
blocchi 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 |t
vs %trans
.. Quindi consiglierei di usare ciò che è più facile da leggere nel tuo modello. Nella mia esperienza l'uso del |t
filtro funziona bene per stringhe brevi, mentre il %trans
blocco è 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