• 03-02-2009, 15:52:01
    #1
    Üyeliği durduruldu
    PHP ve Smarty ikilisini kullanıyorsanız birgün mutlaka çok dilli site yapma ihtiyacınız olacaktır.
    Smarty temalarınıza dil desteği eklemek için birkaç yöntem var.
    Bunlardan en basiti farklı dillere farklı .tpl ler oluşturmak. Uzun vadede çok masraflı bir iş olarak görünüyor. Bu şıkkı eleyelim.
    Benim istediğim yönetilebilen diller ekle, çıkart, tercüme et gibi seçenekleri olan bir panel.
    Öncelikle veritabanını tasarlayalim:
    3 tablomuz var; diller, diller için key tanımlamaları, keylerin tercümeleri.


    CREATE TABLE `lang` (
    `id` int(10) unsigned NOT NULL auto_increment,
    `ad` varchar(255) NOT NULL,
    `kod` varchar(3) NOT NULL,
    `flag` varchar(255) NOT NULL,
    `aktif` tinyint(4) NOT NULL default ‘0′,
    PRIMARY KEY (`id`),
    UNIQUE KEY `kod` (`kod`),
    KEY `aktif` (`aktif`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;


    CREATE TABLE `lang_keys` (
    `id` int(10) unsigned NOT NULL auto_increment,
    `key` varchar(255) NOT NULL,
    PRIMARY KEY (`id`),
    UNIQUE KEY `key` (`key`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

    CREATE TABLE `lang_keys_translate` (
    `id` int(10) unsigned NOT NULL auto_increment,
    `lang_id` int(10) unsigned NOT NULL,
    `key_id` int(10) unsigned NOT NULL,
    `display` varchar(255) NOT NULL,
    PRIMARY KEY (`id`),
    KEY `lang_id` (`lang_id`,`key_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;


    Dilleri ve tercumeleri bu 3 tabloda tutuyorum. Tabiki okurken sürekli burdan okuma işlemi yapmayacağız memcacheden okuyacağız.

    Örnek Senaryo:
    Türkçeye ait tüm key’ler ve key tercüme değerlerinden bir dizi oluşturuyrum ve memcache’e atıyorum.
    diller_tercume_tr

    Almanca’ya ait tüm key’ler ve key tercüme değerlerinden bir dizi oluşturuyrum ve memcache’e atıyorum.
    diller_tercume_de

    Aktif dil hangisi ise memcachden bu diziyi okuyup smarty’ye (l) olarak assign ediyorum.
    $smarty->assign(’l',$diller_tercume_tr);


    smarty .tpl temalarımda da şöyle bir değişiklik var :
    {$l.USERNAME} : <input type=”text” name=”username”>
    {$l.PASSWORD} : <input type=”password” name=”password”>


    Mantık olarak bu şekilde, tabi bu yontem daha da geliştirilebilir.
    Böylece tercüme paneli, yeni dil ekleme, dilleri aktif pasif etme işlmeleri kolayca yapılabiliyor.
    Tercumanlara panel kullanıcısı acip anında ceviri işlemlerinde kolaylik sağlıyor.


    Kaynak : AyhanBaris.com Yazılım Uzmanı Blog Arsivi PHP UTF8 Memcache Samrty Dil desteği ve Çok Dilli Site Yapımı
  • 03-02-2009, 16:27:21
    #2
    Üyeliği durduruldu
    Smarty
    farklı bir yaklaşım olabilir.
  • 05-02-2009, 12:42:08
    #3
    Üyeliği durduruldu
    smarty konusunda başlı başına bir kitap ya da doküman bulamadım. scriptimin smartyli yeni versiyonuna geçmeyi düşünüyorum.
  • 05-02-2009, 12:47:56
    #4
    Üyeliği durduruldu
    idealist adlı üyeden alıntı: mesajı görüntüle
    smarty konusunda başlı başına bir kitap ya da doküman bulamadım. scriptimin smartyli yeni versiyonuna geçmeyi düşünüyorum.
    smarty nin manueli ve forumunun bu konuda yeterli olacagini düşünüyorum. sonuçta smarty bir eklenti yada ek bir teknoloji olarak düşünülebilir ondan dolayi kitap bulabileceginizi pek sanmiyorum
  • 05-02-2009, 13:41:13
    #5
    Üyeliği durduruldu
    smarty doc ekte.
  • 05-02-2009, 14:39:54
    #6
    Kimlik doğrulama veya yönetimden onay bekliyor.
    sdemirkeser bu konuya bi el atın o zaman,
    vaktiniz olursa 1 video yapın.
  • 05-02-2009, 14:47:22
    #7
    Üyeliği durduruldu
    pymd adlı üyeden alıntı: mesajı görüntüle
    sdemirkeser bu konuya bi el atın o zaman,
    vaktiniz olursa 1 video yapın.
    kendim aktif olarak kullaniyorumda daha anlatacagim basliklari toparlayamadim.

    her anlatacagim ders için rahat 1 hafta boyunca not aliyorum çünkü