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ı
PHP UTF8 Memcache Samrty Dil desteği ve Çok Dilli Site Yapımı
6
●851
- 05-02-2009, 12:47:56Üyeliği durduruldusmarty 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 sanmiyorumidealist adlı üyeden alıntı: mesajı görüntüle
- 05-02-2009, 14:47:22Üyeliği durduruldukendim aktif olarak kullaniyorumda daha anlatacagim basliklari toparlayamadim.pymd adlı üyeden alıntı: mesajı görüntüle
her anlatacagim ders için rahat 1 hafta boyunca not aliyorum çünkü