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 %transbloco possui alguns recursos úteis adicionais para cadeias de caracteres complexas.
A diferença é que o tfiltro permite apenas cadeias simples, enquanto o uso de um %transbloco 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 tfiltro:
{{ '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 %transblocos 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 |tvs. %trans. Portanto, eu recomendaria usar o que for mais fácil de ler em seu modelo. Na minha experiência, o uso do |tfiltro funciona bem para cadeias curtas, enquanto o %transbloco é 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