{{| T}} ve {% trans%} arasındaki fark nedir?


11

{% trans %}Symfony belgelerine ( i18n Uzantısı ) göre Twig'e gettext desteği ekleyen Drupal 8 desteğinin farkına vardım .

{{ |t }}bildiğim kadarıyla, Drupal şablonlarına çevrilebilir dizeler eklemenin en eski yolu. Belgelere göre , t()bir dizeyi geçerli dile veya belirli bir dile çevirir.

Her ikisi de çok dilli web sitesini destekler.

  • Bu uzantılar arasındaki farklar nelerdir?
  • Birini diğerinin üzerinde ne zaman kullanmalıyım?

Çoğullar için trans kullanıyorum. Aksi takdirde basit t. Örneğin, "{% trans%} öğesi {% çoğul sayısı%} öğesi {%

Yanıtlar:


21

Hem {{ |t }}filtre ve {% trans %} ... {% endtrans %}bloklar, Drupal dal şablon dosyasının bağlamında kullanıldığında, Drupal lokalizasyon sisteminin bir parçasıdır. Her ikisiyle de işlenen dizelerin çevirisi de aynı şekilde ve localize.drupal.org üzerinden yapılır. Basit metin dizeleri için birbirlerinin yerine kullanılabilir, ancak %transblok karmaşık dizeler için bazı ek kullanışlı özelliklere sahiptir.

Fark, tfiltrenin yalnızca basit dizelere izin verirken, bir %transblok kullanıldığında dizede dinamik yer tutucuların kullanımına izin verir. Php t()işlevini kullanmak gibi .

İşte birkaç örnek:

tFiltre ile basit dize çevirisi :

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

Yer tutucu ile dize çevirisi:

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

Yer {{ var|passthrough }}tutucular varsayılan olarak kaçar, ancak soluk bırakılmaz veya yer tutucu olarak biçimlendirilebilir {{ var|placeholder }}. Bu, t () işlevinde sırasıyla @string,! String ve% string kullanmaya eşdeğerdir.

Birden çok %transdizeyi biçimlendirmek için blokları da kullanabilirsiniz .

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

Basit dizeler için ne zaman |tvs. kullanmanız gerektiği konusunda hiçbir kural yoktur %trans. Bu nedenle, şablonunuzda okunması en kolay olanı kullanmanızı öneririm. Deneyimde, |tfiltreyi kullanma kısa dizeler için iyi çalışır, %transblok daha uzun metin dizeleri için daha kolaydır.

Kullanımla ilgili daha fazla bilgiyi şu adreste bulabilirsiniz: https://www.drupal.org/node/2357633 ve burada https://www.drupal.org/developing/api/8/localization


Harika bir açıklama. Teşekkür ederim! Yapılacak açıklama ciddi şekilde eksikti (IMHO). Örneklerle daha ayrıntılı bir açıklamanız bana çok yardımcı oldu ve bana birkaç fikir verdi. Özellikle çoğul dizge örneği. Bu çok kaygan!
Tyler Youngblood
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.