Apa perbedaan antara {{| t}} dan {% trans%}?

11

Saya perhatikan bahwa dukungan Drupal 8 {% trans %}yang, menurut dokumentasi Symfony ( The i18n Extension ), menambahkan dukungan gettext ke Twig.

{{ |t }}, sejauh yang saya tahu, adalah cara lama untuk menambahkan string yang dapat diterjemahkan ke dalam template Drupal. Menurut dokumentasi , t()menerjemahkan string ke bahasa saat ini atau bahasa yang diberikan.

Keduanya mendukung situs web multi-bahasa.

  • Apa perbedaan antara ekstensi itu?
  • Kapan saya harus menggunakan yang satu di atas yang lain?
itsdarrylnorris
sumber
Saya menggunakan trans untuk bentuk jamak. Jika tidak sederhana t. Misalnya "{% trans%} item {% plural count%} item {% endtrans%}"

Jawaban:

20

Kedua {{ |t }}filter dan {% trans %} ... {% endtrans %}blok, bila digunakan dalam konteks file template Ranting di Drupal, merupakan bagian dari sistem lokalisasi Drupal. Dan terjemahan untuk string yang diproses dengan salah satunya ditangani dengan cara yang sama, dan via localize.drupal.org. Untuk string teks sederhana, mereka dapat digunakan secara bergantian, namun %transblok ini memiliki beberapa fitur berguna tambahan untuk string kompleks.

Perbedaannya adalah bahwa tfilter hanya memungkinkan untuk string sederhana, sementara menggunakan %transblok memungkinkan penggunaan placeholder dinamis dalam string. Sama seperti menggunakan t()fungsi php .

Berikut beberapa contoh:

Terjemahan string sederhana melalui tfilter:

{{ 'Hello Stack Exchange!'|t }}

Terjemahan string dengan placeholder:

{% trans %}Hello {{ user.name }}, today's date is {{ date|placeholder }}.{% endtrans %}

Placeholder diloloskan secara default, tetapi juga dapat dibiarkan begitu saja {{ var|passthrough }}atau diformat sebagai placeholder {{ var|placeholder }}. Ini sama dengan menggunakan @string,! String, dan% string dalam fungsi t ().

Anda juga dapat menggunakan %transblok untuk memformat string jamak.

{% trans %}
  There is 1 comment.
{% plural count %}
  There are {{ count }} comments.
{% endtrans %}

Untuk string sederhana ada benar-benar ada aturan tentang kapan Anda harus menggunakan |tvs %trans. Jadi saya akan merekomendasikan menggunakan apa pun yang paling mudah dibaca di template Anda. Dalam pengalaman saya menggunakan |tfilter berfungsi dengan baik untuk string pendek, sedangkan %transblok lebih mudah untuk string teks yang lebih panjang.

Informasi lebih lanjut tentang penggunaan dapat ditemukan di sini: https://www.drupal.org/node/2357633 dan di sini https://www.drupal.org/developing/api/8/localization

eojthebrave
sumber
Penjelasan luar biasa. Terima kasih! Penjelasan tentang do sangat kurang (IMHO). Penjelasan Anda yang lebih teliti dengan contoh-contoh sangat membantu saya dan memberi saya beberapa ide. Terutama contoh string jamak. Itu cukup bagus!
Tyler Youngblood