Noté que el soporte de Drupal 8 {% trans %}
que, de acuerdo con la documentación de Symfony ( The i18n Extension ), agrega soporte de gettext a Twig.
{{ |t }}
, que yo sepa, es la forma tradicional de agregar cadenas traducibles a las plantillas de Drupal. Según la documentación , t()
traduce una cadena al idioma actual o a un idioma determinado.
Ambos admiten sitios web multilingües.
- ¿Cuáles son las diferencias entre esas extensiones?
- ¿Cuándo debo usar uno sobre el otro?
Respuestas:
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 lat()
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.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
fuente