Eğer yabancı dil şablonunu sql'e yazdıracaksan
title -> text
arrayı da serialize ettirip dbye yazdır
örnek
function Cevir($array=array(), $dil="default", $cikti = false) {
if(is_array($array)) {
if(isset($array[$dil])) {
$ceviri = $array[$dil];
} else if(isset($array["default"])) {
$ceviri = $array["default"];
} else {
$ceviri = "Çeviri yapılamadı";
}
} else {
$ceviri = "Çeviri yapılamadı";
}
if($cikti) { echo $ceviri; } else { return $ceviri; }
}
$link_baslik = array("tr"=>"Anasayfa","en"=>"Home","default"=>"Index");
$link_baslik = serialize($link_baslik);
mysqli_query("Insert INTO diller (id, tanim, deger) values('', 'anasayfa_link', '$link_baslik')");
$q = mysqli_query("select from diller where tanim='anasayfa_link'");
$sonuc = mysqli_fetch_assoc($q);
$dil = unserialize($sonuc["deger"]);
//Kullanımı
echo Cevir($dil); //Çıktı Index
echo Cevir($dil, "tr",false); // Çıktı Anasayfa
echo Cevir($dil, "tr"); // Çıktı Anasayfa
Cevir($dil, "en",true); // Çıktı Home
Cevir($dil, "arapca",true); // Çıktı IndexDenemedim ama çalışır muhtemelen kodlama hatası varsa bildirirsiniz.
Bu çevirileri tek tek sql den çağırmak yerine json dosyasına cacheleyebilirsin.
Ayrıca statik çeviri için gettext kullanmak şuan için en mantıklısı bunun dışında (bence).
Bukadar koda gerek var mı?
id - tag - tr - en - ru - ar şeklinde tablo yapısını oluştursun.
tag kısmına etiketini belirtsin. Örneğin lang_home
$language değişkeninde de sessionda tuttuğun tr,en,ru,ar dil kısaltmalarından biri olsun.
$translation = $database->prepare('SELECT * from table_translation');
$translation->execute();
foreach($translation as $lang) {
$tag[$lang['tag']] = stripcslashes(stripcslashes($lang[$language]));
}
extract($tag);Dediğin zaman veritabanındaki tagın olur sana değişken.
Örneğin anasayfa linkine
<?php echo $lang_home; ?>
dediğin zaman session daki dil neyse ona göre veriyi ekrana basar.