Netleştirmek için:
- I'm not using the gettext php module / uzatma, ben gettext php-gettext farkında değilim ama bu sadece ben birden kütüphaneleri kullanmak zorunda olduğu şeyleri zorlaştırıyor, dahil olduğu sunucular ile uğraşmak zorunda çünkü neden olma. Dahası ben gerekli yerel ayarlar yüklü olan kullanıcı bağlı istemiyorum, ve bazı sunucular bunu yapmak için root erişimi olmayacaktır. Ben de genel olarak yerel ile ilgili sorunlar çok var biliyoruz.
- I-have to support PHP4. Evet, öldü. Evet, bunu nefret ediyorum. Ama bir seçeneğim yok.
Ben, bir "sunucu-düzey" Geçerli dil (varsayılan tr) dayalı .mo
gettext dosya ayrıştırmak bir sınıf var dolaşır her msgstr ve msgid ve msgstr tuşları / değerleri ile bir dizi doldurur ve msgstr.
Daha sonra ben bir "uygulama seviyesi" .mo
dosya ayrıştırır ve ilk dizi ayarlanan birlikte iki birleştirir bir yöntemi var, bu yüzden uygulama düzeyinde çeviriler sunucu tarafı genel çeviriler önceliklidir.
Benim dize çeviriler için birleştirilmiş dizi kullanıyorum, ve ben aslında bu önbelleğe ve önbelleğe alınmış sürümünü {[(0) kullanmak için bir yol gerekir okumak her sayfada. Mo dosyalarını okumak istemiyorum beri }] okunan sayfa önbelleğe alınan sürüm olarak aynı dil / yerel bir.
Yani benim web sitesine gittim ve varsayılan dil İngilizce oldu ise, ingilizce sunucu / uygulama mo dosyalarını okumak onları birleştirmek, dizi, önbellek bunu yapmak istiyorum. Kullanıcı tıklandığında sonraki sayfa İngilizce ise, önbelleğe alınan sürüm kullanılacaktır. Sözgelimi İspanyol oldu Aksi takdirde, birleştirme yeniden gerçekleşir ve ispanyolca önbelleğe sürümü kullanılır.
Yani temelde, nasıl önbelleğe dil / yerele özgü birleştirilen diziler hakkında gitmek istiyorsunuz? Aslında kendimi önbelleğe uygulamaya hiç, ama yapmam gereken istediğiniz tüm serialize
Benim dizisi, sonra bir uygulama-seviye önbellek dizinine yazmak olduğunu varsayalım, ve 'gibi bir şey olarak dosya kaydetmek istiyorsunuz Çeviri-{$ yerel} sonra önbelleğe alınmış bir sürümü mevcut olmadığını görmek o dayalı, yerel benim app ne olduğunu belirlemek için mantık kullanmak, en '$ yerel gibi bir şey nerede' - eğer öyleyse, {[(1)] } ve sadece kullanabilir?
Bu genellikle nasıl yapılır mı? Ben çok kod örnekleri seviniriz. Ben dizi etrafında 200-300 anahtar / değer çiftleri vardır ve sadece bir iki seviyeli boyutlu dizidir:
array(
'en' => array(
'Hello' => '',
),
'es' => array(
'Hello' => 'Hola',
)
);