09 Ekim 2014, 03:56 | #1 | |
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0) | Gettext ile çoklu dil desteği gettext fonksiyonlarını C, C++, Phyton, Java, Perl gibi bir çok dilde kullanabilirsiniz. Ben size PHP'deki kullanımından bahsedeceğim. Öncelikle sunucunuzun PHP ayarlarını kontrol etmelisiniz. gettext fonksiyonlarını kullanabilmek için php_gettext genişleme paketinin aktif olması gerekmektedir. phpinfo() ile PHP kurulum ayarlarınızı ekrana dökün. "gettext" kelimesini arattırın. Karşınıza "GetText Support enabled" yazısını bulduysanız bir şey yapmanıza gerek yok. Eğer phpinfo() çıktısında gettext ile ilgili bir şey bulamıyorsanız, php.ini dosyanızda "php_gettext.dll" diye aratın, bulduğunuz satırın başındaki noktalı virgül ( Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. işaretini kaldırın ve dosyayı kaydedin. Web sunucunuzu baştan başlatın ve tekrar phpinfo() çıktısını kontrol edin. Her şey yolunda gittiyse phpinfo() çıktısında "gettext" diye arattığınızda "GetText Support enabled" yazısını görmeniz lazım. Bunları yapmanıza rağmen göremiyorsanız php kurulumunuzu gözden geçirin. gettext fonksiyonlarının aktif olduğunu kabul ederek devam ediyorum. Bu noktadan sonra oluşturacağınız tüm dosyaları UTF-8 karakter setini kullanarak oluşturun. İlk olarak yeni bir php dosyası yaratın ve içine şunları yazın. <?php echo gettext("Merhaba IRCforumlari"); ?> Tarayıcınızla bu dosyayı çağırdığınızda "Merhaba IRCforumlari" çıktısını alacaksınız. her seferinde gettext yazmaya üşenenler _() fonksiyonunu da kullanabilir. Aşağıdaki kod da "Merhaba IRCforumlari" çıktısını üretecektir. <?php echo _("Merhaba IRCforumlari"); ?> Dil değiştirmenin zamanı geldi. Öncelikle uygulamamızda dil değiştiğinde değişmesi gereken metinlerden bir katalog oluşturmamız lazım. Bunun için bir kaç seçeneğimiz var. Bunlardan biri GNU gettext for WIN32 benzeri windows için hazırlanmış bir program kullanmak bir diğeri de ücretsiz poEdit programını kullanmak. Katalog dosyanızı kendiniz de yaratabilirsiniz ama büyük projelerde tavsiye etmem. (Hatta hiç tavsiye etmem) Benim tercihim poEdit'den yana. Windows versiyonunu kullanıyorum. Kısaca katalog oluşturmayı da anlatayım. Dosya menüsünden Yeni katalog seçeneğini seçtiğinizde karşınıza bir pencere geliyor. Birinci sekmede kataloğun genel ayarlarını yapıyorsunuz. Projenin ismi, kataloğun hangi dilde hazırlandığı, karakter kümesi, kaynak dosyaların karakter kümesini projenize uygun olarak seçtikten sonra ikinci sekmede projenizin çalıştığı yolu ekliyorsunuz. örneğin "c:\apache\htdocs\gettext_ornek\" şeklinde. Üçüncü sekmede ise projede kullandığınız ve çeviri için kullanılacak fonksiyon isimlerini giriyorsunuz. Eğer projenizde "_" ya da "gettext" fonksiyonlarından birini ya da ikisini beraber kullandıysanız bu kısımdan ekleyin. Tamam tuşuna bastığınızda .po dosyanızı nereye kaydetmek istediğinizi soracak. Şimdilik kolayca erişebileceğiniz bir yere kaydedin. Kaydet tuşuna bastığınızda projeniz taranacak ve belirtmiş olduğunuz fonksiyonlardan çevirisi yapılacak metinlerin bir listesi ekrana gelecek. Tamam'a tıkladığınızda çevrilecek metinler ekranda sizi bekliyor olacak. "Merhaba IRCforumlari" metnini "Hello IRCforumlari" olarak çevirip .po dosyanızı "mesajlar.po" ismiyle kayıt edin. Kayıt ettiğinizde otomatik olarak .mo dosyanız da oluşacaktır. .mo dosyası da nereden çıktı diyeceksiniz. .mo dosyası da .po dosyanızdan üretilen paketlenmiş katalogdur diyebiliriz. Katalog dosyamızı da oluşturduğumuza göre bu katalog dosyasını php ile kullanarak projemizi nasıl başka bir dilde çalışır hale getirebileceğinizi bir örnek ile anlatayım. Öncelikle projenizin kök dizininde "diller" adıyla bir klasör yaratın. "diller" klasörünün altına de ingilizce için "en" adıyla yeni bir klasör yaratın ve son olarak da "en" klasörünün altında "LC_MESSAGES" adıyla yeni bir klasör yaratın. Daha önceden poEdit ile hazırlamış olduğumuz .po ve .mo dosyalarını "LC_MESSAGES" klasörünün altına taşıyın ve isimlerini "mesaj.po", "mesaj.mo" olarak değiştirin. Aşağıdaki gibi bir klasör yapınız oluşmuş olması lazım. /diller /en /LC_MESSAGES mesaj.po mesaj.mo Artık her şey yerli yerinde. Şimdi sıra php kodunda. Kodunuzu aşağıdaki gibi değiştirin. <?php $locale = "en"; putenv("LC_ALL=$locale"); setlocale(LC_ALL, $locale); bindtextdomain("mesaj", "./diller"); textdomain("mesaj"); echo _("Merhaba IRCforumlari"); ?> Programınızı çalıştırdığınızda ekranda "Hello IRCforumlari" çıktısını göreceksiniz. Peki projeniz yeni kodlar eklediniz ve bunların da kataloğa eklenmesi gerekiyor. Ne yapacaksınız? çok basit. Örneğin kodumuza yeni bir satır ekleyin. <?php $locale = "en"; putenv("LC_ALL=$locale"); setlocale(LC_ALL, $locale); bindtextdomain("mesaj", "./diller"); textdomain("mesaj"); echo _("Merhaba IRCforumlari")."<br>"; echo _("Websiteme hoşgeldiniz"); ?> poEdit ile ingilizce .po dosyanızı açın ve araç çubuğundan güncelleme çubuğuna basın (eğer değişmediyse soldan sağa üçüncü tuş. Dünyanın çevresinde dönen oklar olan.) Program kodunuzu inceleyerek yeni satırı kataloğa ekleyecektir. Hemen yeni cümleyi çevirin. "Welcome to my website". Dosyı kaydedip PHP programınızı çağırdığınızda aşağıdaki çıktıyı elde edeceksiniz. Hello IRCforumlari Welcome to my Website Diyelim ki gettext ile çevrilen bu metinleri her seferinde echo ile ekrana basmak yerine ufak bir fonksiyon kullanmak istediniz. Örneğin; <?php function _e($metin) { echo _($metin); } _e("Merhaba IRCforumlari"); ?> Katalog ayarlarında anahtar kelimeler sekmesinde bu yeni fonksiyonunuzu da tanıtırsanız ilk güncelleme sırasında yeni fonksiyonunuz ile kullandığınız metinler de katalog dosyasına eklenecektir.
__________________ | |
|
Etiketler |
coklu, desteği, dil, gettext, ile |
Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir) | |
| |
Benzer Konular | ||||
Konu | Konuyu Başlatan | Forum | Cevaplar | Son Mesaj |
Borderlands'e Steamworks'den Çoklu Oyuncu Desteği | Deep | Oyun Dünyasından Son Haberler | 0 | 17 Eylül 2014 03:26 |
Samsung'tan Çoklu Monitör Desteği | xLine | Bilim Dünyasından Son Haberler | 0 | 10 Ocak 2010 18:34 |
TrueCrypt 6 çoklu çekirdek desteği kazandı | Kralice | Bilgisayar Donanımı | 0 | 14 Temmuz 2008 11:04 |