Öncelikle, gettext
gitmek için iyi bir yoldur, bu yüzden başlangıçta kolay gelmiyorsa reddetmeyin; Ancak bilmeniz gereken başka seçenekler de vardır. Bunu açıklamadan önce önce önerilerinize göz atalım:
Bunu array
yapma yolunuzda, oldukça basit bir çözümünüz var. İyi olan şey, çevirilerinizi bir veri deposunda saklayabilmeniz ve daha sonra PHP betiğinize bir dizi olarak yükleyebilmenizdir. Ancak dizinizi statik olarak bir PHP dosyasında saklamak istiyorsanız, düzenlemek için a) PHP programcısı veya PHP sözdizimine aşina olan deneyimli bir kullanıcı, sadece dosyayı düzenlemek için b) dört veya beş farklı dil dosyası arasında senkronizasyon gerekir oldukça sinir bozucu ve hatalara yatkın olabilir.
Burada dikkate almanız gerekenler: Daha sonra dil dosyasına nasıl yeni öğeler ekleyebilirim? Bir çevirmene bırakabilir miyim yoksa bir PHP programcısı mı olmalı?
Sizin variable
bunu yapmanın -way pratik değildir. Neden? En azından uygulamanızda birkaç işleve sahip olacağınızı varsayıyorum, değil mi? Daha sonra işlevi çağırdığınızda tüm bu değişkenleri iletmeniz veya global
onlara ihtiyacınız vardır. Böyle ondan fazla değişkeniniz olacağını düşünüyorsanız, bunu yapmanızı kesinlikle tavsiye etmiyorum. Ad çakışması da olabilir - aynı ada sahip başka bir değişkenin değerini potansiyel olarak geçersiz kılabilirsiniz, ancak bu, bir alt çizgi kadar basit bir önek ekleyerek çözülebilir, bu nedenle $_welcome
örneğin sahip olacaksınız . Her neyse, sen olsaydım bile düşünmezdim; Yapma.
Bunu yapmanın iyi bir yolu Sabitleri bir önekle tanımlamaktır . Yani örneğin sizin en.lang.php
içinizde bir şey olacak define( 'LABEL_WELCOME', 'Welcome' );
ve sizin no.lang.php
içinizde olacak define ( 'LABEL_WELCOME', 'Velkommen' );
. Değişkenler yerine sabit kullanma ile ilgili en iyi şey, komut dosyasında her zaman kullanılabilir olmasıdır. Yani onları enjekte etmenize ya da küreselleştirmenize gerek yok. Hem dizilere hem de değişkenlere kıyasla, PHP'nin bunları işleme biçimi nedeniyle daha hızlıdır - bellekte daha az yer kaplarlar. Dezavantajı onları çevirmen geçiremezsiniz, bu yüzden tekrar bir PHP geliştirici gerekir. Ayrıca dosyalar arasında senkronizasyon yapmak biraz acı verici olabilir.
Diğer seçenek, çeviriyi almak için bir İşlev veya Sınıf / Yöntem kullanmaktır. Daha az verimli olacaktır - ancak bu tür bir mikro optimizasyona ihtiyacınız olduğunu düşünmüyorum, ancak ek avantaj, çeviriyi alırken özel bir mantık uygulayabilmenizdir. Örneğin, bir gün, sevgili proje yöneticinizin size bu metinlerin tümünü büyük harfe dönüştürüp dönüştüremeyeceğinizi sorduğunu hayal edin. Bunu yapmayı reddedemezsiniz, bu nedenle, aralarında bir işlev olması, tüm çevirilerinize bir desen uygulamanız / değiştirmeniz gerektiğinde size çok yardımcı olabilir.
Özetlemek için:
Çevirmenlerin bunu nasıl kullanabileceğini düşünün ve onlar için çalışan bir KISS çözümü bulun.
Farklı diller arasında nasıl senkronizasyon yapabileceğinizi düşünün.
Aynı çevirinin gerekli olup olmadığını düşünün, mobil uygulama için diyelim. Çapraz platform çözümü zamandan tasarruf edebilir. JSON ve sıradan Veritabanlarını atmayın.
Çevirileri alırken mantığı nasıl uygulayabileceğinizi / değiştirebileceğinizi düşünün.
Performansı unuttum. % 99,9 oranında Constant vs. Değişkenler ve İşlev Çağrıları gibi mikro optimizasyon yapmak için o kadar ileri gitmeyeceksiniz . Bir geliştirici / personel olarak işlemci zamanından ziyade daha pahalı olduğunu düşünüyorum.
Güncelleme # 1
Aman tanrım, bir yaşındaki soruya cevap gönderdim. Neden kimse burada bir şey söylemiyor? Bu durumlar için uyarılara ihtiyacımız var.
Güncelleme # 2
Sağ tarafta bunun eski bir soru olduğunu söylüyor; Ancak iki yıl önce istendi! Burada her şey yanıltıcı!