Tanto el {{ |t }}filtro como los {% trans %} ... {% endtrans %}bloques, cuando se usan en el contexto del archivo de plantilla Twig en Drupal, son parte del sistema de localización de Drupal. Y la traducción de cadenas procesadas con cualquiera de las dos se maneja de la misma manera y a través de localize.drupal.org. Para cadenas de texto simples se pueden usar indistintamente, sin embargo, el %transbloque tiene algunas características útiles adicionales para cadenas complejas.
La diferencia es que el tfiltro solo permite cadenas simples, mientras que el uso de un %transbloque permite el uso de marcadores de posición dinámicos en la cadena. Muy parecido a usar la t()función php .
Aquí hay algunos ejemplos:
Traducción de cadena simple a través del tfiltro:
{{ 'Hello Stack Exchange!'|t }}
Traducción de cadenas con marcador de posición:
{% trans %}Hello {{ user.name }}, today's date is {{ date|placeholder }}.{% endtrans %}
Los {{ var|passthrough }}marcadores de posición se escapan de forma predeterminada, pero también se pueden dejar sin escapes o formatear como un marcador de posición {{ var|placeholder }}. Esto es equivalente a usar @string,! String y% string en la función t () respectivamente.
También puede usar %transbloques para formatear cadenas plurales.
{% trans %}
There is 1 comment.
{% plural count %}
There are {{ count }} comments.
{% endtrans %}
Para las cadenas simples en realidad no hay reglas acerca de cuándo se debe utilizar |tvs %trans. Por lo tanto, recomendaría usar lo que sea más fácil de leer en su plantilla. En mi experiencia, usar el |tfiltro funciona bien para cadenas cortas, mientras que el %transbloque es más fácil para cadenas de texto más largas.
Puede encontrar más información sobre el uso aquí: https://www.drupal.org/node/2357633 y aquí https://www.drupal.org/developing/api/8/localization