İmkansız denen şeyler çoğunlukla denenmemiş olanlardır.
Jim Goodvin
Delicious StumbleUpon Digg Twitter Facebook

PHP ve Gettext

Yazan : admin Tarih : November 5, 2008-12:48 am Etiketler : ,

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);
    }
}
?>
 

Kolay, GAE ve Django kullanarak yazılan uygulamaların grafiksel ortamda çalıştırılabilmesini ve yönetilebilmesini sağlar.

http://kolay.googlecode.com
Günümüzde bir çok site ya da e-posta servisine üye olmamız gerekebiliyor. Tüm bu üyeliklerde aynı şifreyi kullanmak güvenlik açısından ne yazık ki bir risk oluşturmakta. Ayrıca tüm bu şifreleri akılda tutmak büyük çaba gerektirirken, bunları bir yere not etmekte birilerinin eline geçmesine fırsat vermektedir.

Hatırlat programı ile şifrelerinizi kategorilendirerek kayıt altında tutabilirsiniz. Verileriniz kaydedilirken sizin belirlediğiniz bir anahtar vasıtasıyla gizlendiği için birileri veritabanına erişse bile bunu çözmesi epey güç olacak.

İşletim sistemi değişikliklerinde ya da yeni sistem kurulumunda, programdaki yedekleme/geri yükleme özelliğini kullanarak bilgilerinizi taşıyabileceksiniz (Bu özellik henüz projeye dahil edilmemiştir).

http://hatirlat.googlecode.com
Yapılacak işlerle ilgili küçük notlar almanızı sağlar.

http://notal.googlecode.com