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 %trans
bloque tiene algunas características útiles adicionales para cadenas complejas.
La diferencia es que el t
filtro solo permite cadenas simples, mientras que el uso de un %trans
bloque 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 t
filtro:
{{ '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 %trans
bloques 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 |t
vs %trans
. Por lo tanto, recomendaría usar lo que sea más fácil de leer en su plantilla. En mi experiencia, usar el |t
filtro funciona bien para cadenas cortas, mientras que el %trans
bloque 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