ทั้ง{{ |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