ทั้ง{{ |t }}ตัวกรองและ{% trans %} ... {% endtrans %}บล็อกเมื่อใช้ในบริบทของไฟล์เทมเพลต Twig ใน Drupal เป็นส่วนหนึ่งของระบบแปลภาษา Drupal และการแปลสำหรับสตริงที่ประมวลผลด้วยอันใดอันหนึ่งจะได้รับการจัดการในลักษณะเดียวกันและผ่าน localize.drupal.org สำหรับสตริงข้อความธรรมดาพวกเขาสามารถใช้แทนกันได้อย่างไรก็ตาม%transบล็อกมีคุณสมบัติที่มีประโยชน์เพิ่มเติมสำหรับสตริงที่ซับซ้อน
ความแตกต่างก็คือtตัวกรองจะอนุญาตให้ใช้สตริงอย่างง่ายเท่านั้นในขณะที่การใช้%transบล็อกอนุญาตให้ใช้ตัวยึดตำแหน่งแบบไดนามิกในสตริง ชอบใช้t()ฟังก์ชั่นphp มาก
นี่คือตัวอย่างบางส่วน:
การแปลสตริงอย่างง่ายผ่านtตัวกรอง:
{{ 'Hello Stack Exchange!'|t }}
การแปลสตริงด้วยตัวยึดตำแหน่ง:
{% trans %}Hello {{ user.name }}, today's date is {{ date|placeholder }}.{% endtrans %}
ตัวยึดจะถูกหลีกเลี่ยงตามค่าเริ่มต้น แต่ยังสามารถแยกซ้าย{{ var|passthrough }}หรือไม่ใช้รูปแบบเป็นตัวยึดตำแหน่ง{{ var|placeholder }}ได้ นี่เทียบเท่ากับการใช้ @ string,! string และ% string ในฟังก์ชัน t () ตามลำดับ
คุณยังสามารถใช้%transบล็อกเพื่อจัดรูปแบบสตริงพหูพจน์
{% trans %}
There is 1 comment.
{% plural count %}
There are {{ count }} comments.
{% endtrans %}
สำหรับสตริงง่ายมีจริงๆไม่มีกฎระเบียบเกี่ยวกับเมื่อคุณควรใช้กับ|t %transดังนั้นฉันขอแนะนำให้ใช้สิ่งที่อ่านง่ายที่สุดในเทมเพลตของคุณ จากประสบการณ์ของฉันในการใช้|tตัวกรองใช้งานได้ดีกับสตริงสั้น ๆ ในขณะที่%transบล็อกนั้นง่ายขึ้นสำหรับสตริงข้อความที่ยาวขึ้น
ข้อมูลเพิ่มเติมเกี่ยวกับการใช้งานสามารถดูได้ที่นี่: https://www.drupal.org/node/2357633และที่นี่https://www.drupal.org/developing/api/8/localization