Farklı dil desteği olan bir projede kullanmak için PHP ile bir sınıf oluşturdum. Bir kaç özellik daha ekleyeceğim. Kodlara aşağıdan erişebilirsiniz. Çalıştırmak için http://savannah.nongnu.org/projects/php-gettext/ adresinden ilgili php dosyalarını, http://gnuwin32.sourceforge.net/packages/gettext.htm adresindende *.po dosyalarını *.mo dosyasına dönüştürebilmek için gerekli olan araçları indirebilirsiniz. Son verilen adres Windows işletim sistemi için geçerli. Bir Linux dağıtımı kullanıyorsanız paket yöneticiniz vasıtasıyla "gettext" paketini kurabilirsiniz.
Po dosyasını mo dosyasına dönüştürebilmek için konsolda aşağıdaki komutu kullanabilirsiniz.
$ msgfmt messages.po -o messages.mo
Oluşan *.mo dosyasını aşağıdaki dizin yapısı içinde kullanmalısınız.
- locale
-- en_US
---- LC_MESSAGES
------ messages.mo
< ?php /* session_start(); require_once('gettext.inc'); require_once('class.localization.php'); $locale = new localization; $locale->langsPath = realpath('./locale'); $locale->langList = array('tr_TR','en_US','de_DE','fr_FR'); $locale->defaultLang = 'tr_TR'; $locale->domain = 'messages'; $locale->initLocale(); echo $locale->_('string'); */ class localization{ var $langsPath = ''; // Dil dosyalarının yüklü olduğu dizin. var $defaultLang = 'tr_TR'; // Öntanımlı gelen dil. var $langList = array(); // Sistemde yüklü dil listesi. var $lang = ''; // Kullanılan dil değerini tutan değişken. var $domain = 'messages'; // .mo dosyası adı. /* Yerelleştirme sınıfı yükleyicisi. */ function initLocale(){ // Session oluştur ve verileri ata. if (!isset($_SESSION['system_lang'])) $_SESSION['system_lang'] = $this->defaultLang; // Dil değişimi olacaksa verileri ata. if (isset($_GET['lang'])) $_SESSION['system_lang'] = $this->control($_GET['lang']); $this->lang = $_SESSION['system_lang']; // Dil değerine göre verileri yükle. T_setlocale(LC_ALL,$this->lang); T_bindtextdomain($this->domain,$this->langsPath); T_bind_textdomain_codeset($this->domain,'UTF-8'); T_textdomain($this->domain); } /* Dil listesi kontrolü. */ function control($locale){ return in_array($locale,$this->langList) ? $locale : $this->defaultLang; } /* Metni çevirir. */ function _($str){ return T_($str); } } ?>

