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 %trans
khố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à t
bộ lọc chỉ cho phép các chuỗi đơn giản, trong khi sử dụng một %trans
khố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 t
bộ 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 %trans
cá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 |t
so 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 |t
bộ lọc hoạt động tốt đối với các chuỗi ngắn, trong khi đó %trans
khố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