Hook_menu açıklamasında t () kullanmalı mıyım?


11

Her zaman hook_menus başlık ve böyle bir açıklama için t () kullandık :

$items['some-path'] = array(
    'title' => t('My Page Title'),
    'description' => t('This is a description about what my page is for'),
    'page callback' => 'profile_user_page',
);

Bu, kullanıcıların başlığı ve açıklamayı gerekirse farklı dillere çevirebilmeleri için bana mantıklı geliyor.

Ancak DO üzerinde yapılan bir modül incelemesinde bu yorum şöyle diyor:

Hayır, bu yanlış, bunu yapma - hook_menu () içindeki açıklamalar asla t () kullanmamalıdır.

Bunun sebebi nedir ve bu aslında en iyi uygulamadır?

Ayrıca bu doğruysa, başlık için de t () kullanmamalıyız?


Açıkçası bu o zaman kullanılmamalıdır, ancak hook_menu yardım sayfasında "description '=> t (" için arama yaparsanız 6 olay vardır, bu açıkça yaygın bir hatadır!
Felix Eve

1
Ortak ya da değil, bu bir mazeret değildir;) Ve bu olaylar yorumlarda - insanlar orada yanılmakta özgürdür.
Mołot

1
@ Mołot Orada yanlış anlaşılmakta özgürdürler, ancak birçok yeni kullanıcı bu kodu kopyalayıp yapıştırır, böylece bu yaygın bir hata olmaya devam eder. Ben DO üzerinde yönetici ayrıcalıklarına sahip biri t () kaldırmak için bu yorumları düzenlemek gerektiğini düşünüyorum.
Felix Eve


1
İyi öneri. Yapıldı .
Felix Eve

Yanıtlar:


17

Bilinen yerlerdeki dizeler sayfasına bakın : yerleşik menüler, izinler, günlük iletileri ve .info dosyaları topluluk belgeleri:

Drupal 6 ve 7 menü sistemi menü öğesi başlıklarını ve açıklamalarını İngilizce olarak kaydeder. Bu, sistemin verileri önbelleğe almasına izin verir, ancak isteğe bağlı olarak çeşitli dilleri kullanan kullanıcılara görüntülenir. Bunun çalışması için hook_menu () uygulamanızdaki menü öğelerinin başlığında veya açıklamasında t () kullanmamalısınız . Ayrıca, bu iki anahtar için değişmez bir dize (dinamik dize yerine) kullanmaya çalışmalısınız, böylece çeviri şablonu çıkarıcısı kullandığınız dizeyi bulabilir.

Vurgu madeni.


Ekleyeceğim: Yalnızca title callbackvarsayılan title callbackolarak t()işlev olduğu için ayarlanmadıysa
milkovsky

1
@milkovsky başlık geri çağırma ayarlanmışsa, dikkat etmeli t()ve yine de kullanmamalısınız hook menu()- bilirsiniz, önbellekleme.
Mołot

11

Hook_menu argümanlarının belgelerini görürseniz ..

  • "title": Gerekli. Menü öğesinin çevrilmemiş başlığı.
  • "title callback": Başlık oluşturma işlevi; varsayılan olarak t () şeklindedir. Yalnızca ham dizenin çıkmasını istiyorsanız, bunu FALSE olarak ayarlayın.
  • "title arguments": Yukarıda açıklandığı gibi yol bileşeni ikamesi ile t () veya özel geri aramanıza gönderilecek bağımsız değişkenler.
  • "description": Menü öğesinin çevrilmemiş açıklaması.

Varsayılan olarak başlık geri çağırma işlevi t .. Yani her zaman çevrilir ..


7

Drupal 6 artık gerekli olmadığından.

Lütfen https://drupal.org/node/140311 adresini okuyun . Alıntı:

6.x itibariyle, Drupal menü başlıklarının ve açıklamalarının dahili olarak kullanıcının yerel diline çevirisini işler. Sağlanan açıklamalar, daima t () ile çevrilir; yer tutucu ikamesi için ek veri aktarmanın bir yolu yoktur (D5'te ve daha önce, ikamelerde geçmek cesaret kırıcı bir uygulamadır - bu değişiklikle, menü sistemi bu kuralı doğrudan uygular). Başlıklar varsayılan olarak t () ile çevrilir, ancak yeni 'başlık bağımsız değişkenleri' özelliği kullanılarak t () tarzı dize değiştirme mümkündür. Ayrıca, t () öğesini kendi özel geri aramanızla değiştirmeyi de seçebilirsiniz.


6

Uygulamalarda kullanmamalısınız t(), hook_menu()çünkü t()daha sonra otomatik olarak çağrılır ve bunu yapmak çift çeviriye neden olur.


* title callbackHook_menu içine a eklerseniz ve değilse t, başlık geri aramasının dizeyi çevirmekten sorumlu olduğunu unutmayın.
AyeshK

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.