Cả {{ |t }}bộ lọc và {% trans %} ... {% endtrans %}khối, khi được sử dụng trong ngữ cảnh của tệp mẫu Twig trong Drupal, là một phần của hệ thống bản địa hóa Drupal. Và bản dịch cho các chuỗi được xử lý với một trong hai được xử lý theo cùng một cách và thông qua localize.drupal.org. Đối với các chuỗi văn bản đơn giản, chúng có thể được sử dụng thay thế cho nhau, tuy nhiên %transkhối có một số tính năng hữu ích bổ sung cho các chuỗi phức tạp.
Sự khác biệt là tbộ lọc chỉ cho phép các chuỗi đơn giản, trong khi sử dụng một %transkhối cho phép sử dụng các trình giữ chỗ động trong chuỗi. Rất giống như sử dụng t()chức năng php .
Dưới đây là một vài ví dụ:
Dịch chuỗi đơn giản qua tbộ lọc:
{{ 'Hello Stack Exchange!'|t }}
Chuỗi dịch với giữ chỗ:
{% trans %}Hello {{ user.name }}, today's date is {{ date|placeholder }}.{% endtrans %}
Trình giữ chỗ được thoát theo mặc định, nhưng cũng có thể bị bỏ mặc - không được giải thoát {{ var|passthrough }}hoặc được định dạng như một trình giữ chỗ {{ var|placeholder }}. Điều này tương đương với việc sử dụng @ chuỗi ,! Chuỗi và% chuỗi trong hàm t ().
Bạn cũng có thể sử dụng %transcác khối để định dạng chuỗi số nhiều.
{% trans %}
There is 1 comment.
{% plural count %}
There are {{ count }} comments.
{% endtrans %}
Đối với các chuỗi đơn giản, thực sự không có quy tắc nào về thời điểm bạn nên sử dụng |tso với %trans. Vì vậy, tôi khuyên bạn nên sử dụng bất cứ thứ gì dễ đọc nhất trong mẫu của bạn. Theo kinh nghiệm của tôi, việc sử dụng |tbộ lọc hoạt động tốt đối với các chuỗi ngắn, trong khi đó %transkhối dễ dàng hơn đối với các chuỗi văn bản dài hơn.
Thông tin thêm về cách sử dụng có thể được tìm thấy ở đây: https://www.drupal.org/node/2357633 và tại đây https://www.drupal.org/developing/api/8/localization