PHP gettext ile dil yüklemek nasıl?

2 Cevap php

Ben şimdi onu test etmek için çalışıyorum sayfada PHP gettext fonksiyonunun kullanımı için poEdit bir dil dosyası oluşturduk, herkes görüyor,. Po ya ben yarattı. Mo dosyası yüklemek / bulmak için alınamıyor Ben yanlış ne yapıyorum?

$locale = "en_US";
putenv("LC_ALL=$locale");
setlocale(LC_ALL, $locale);
bindtextdomain("default", "/includes/locale");
textdomain("default");

//my .po ad .mo file is located here /includes/locale/en/default.mo

Ben varsayılan ingilizce lang dosyasını yüklemeye çalışıyorum olsa da, ben emin bir dil dosyasındaki okuma yapmak dosyasında bazı metin değişti ve şu anda sadece varsayılan metni gösteren ve bir çeviri yapmıyorum, ben düşünüyorum muhtemelen yanlış yol

2 Cevap

Sonunda belki bir başkası, biraz bence belgelenen şekilde kafa karıştırıcı yardımcı olabilir bu, çalışmak için ben burada ilanıyla var.

fr_FR/LC_MESSAGES/default.po I will use FR for french for this demo

$locale = "fr_fr";
putenv("LC_ALL=$locale");
setlocale(LC_ALL, $locale);
bindtextdomain("default", "/includes/locale");
textdomain("default");

bindtextdomain function, yukarıda, ilk param. Po dili dosyası eksi uzantının adıdır. Ikinci param klasörün yolu, bu ülke kodu içine daha sonra size bunu 2 haneli ülke kodu var olan her dil için bir klasör oluşturmak zorunda burada ayarlanan klasöründe ... belgesiz / biraz zor alır yerdir Lütfen default.po dosya nereye gittiğini LC_MESSAGES içinde, adlı bu klasörü LC_MESSAGES eklemek zorunda klasör.

Bu lang klasörünün yolu burada kalın bölümü hakkında hiç söz etmez beri tür kafa karıştırıcı, ben işe alabilir tek yolu buydu:

langfolder / fr_FR/LC _ MESSAGES / default.po

Bu "benim için çalışıyor default.po olsa hala gerçekten garip ama. Po dosya adını değiştirebilir ve daha sonra yukarıdaki kodu başka bir şeyle değiştirmek ve eğer. Mo dosyaları o olacak artık işi maç, sadece çalışır Benim için varsayılan "adı, belki gettext perde arkasında çeşit yapar düşünmeye başlıyorum önbelleğe alma

Ben senin yolunu şüpheli.

Hostunuzdaki doğru dizin "/ / yerel içeren" mı? Ya da bir şey görecelidir? Not: Eğer ev dizininde veya yüklemek dizine göreli, tam yolunu gerekmez. yani böyle bir şey olabilir:

  • C :/ xampp / htdocs / include / locale
  • / Var / www / include / locale
  • / Home / username / include / locale
  • vb

Bulunursa tam dizin nedir?