O {{ |t }}
filtro e os {% trans %} ... {% endtrans %}
blocos, quando usados no contexto do arquivo de modelo Twig no Drupal, fazem parte do sistema de localização do Drupal. E a tradução de strings processadas com qualquer uma delas é realizada da mesma maneira e via localize.drupal.org. Para cadeias de texto simples, elas podem ser usadas de forma intercambiável, no entanto, o %trans
bloco possui alguns recursos úteis adicionais para cadeias de caracteres complexas.
A diferença é que o t
filtro permite apenas cadeias simples, enquanto o uso de um %trans
bloco permite o uso de espaços reservados dinâmicos na cadeia. Muito parecido com o uso da t()
função php .
Aqui estão alguns exemplos:
Tradução simples de strings via t
filtro:
{{ 'Hello Stack Exchange!'|t }}
Tradução de string com espaço reservado:
{% trans %}Hello {{ user.name }}, today's date is {{ date|placeholder }}.{% endtrans %}
Os espaços reservados são escapados por padrão, mas também podem ser deixados sem escape {{ var|passthrough }}
ou formatados como espaços reservados {{ var|placeholder }}
. Isso é equivalente a usar @string,! String e% string na função t (), respectivamente.
Você também pode usar %trans
blocos para formatar seqüências de caracteres plurais.
{% trans %}
There is 1 comment.
{% plural count %}
There are {{ count }} comments.
{% endtrans %}
Para strings simples realmente não há regras sobre quando você deve usar |t
vs. %trans
. Portanto, eu recomendaria usar o que for mais fácil de ler em seu modelo. Na minha experiência, o uso do |t
filtro funciona bem para cadeias curtas, enquanto o %trans
bloco é mais fácil para cadeias longas de texto.
Mais informações sobre o uso podem ser encontradas aqui: https://www.drupal.org/node/2357633 e aqui https://www.drupal.org/developing/api/8/localization