PHP'de Birden Fazla Dil Mantığı

Silverday

Altın Üye
Altın Üye
Katılım
3 May 2006
Mesajlar
3,551
Reaction score
0
Puanları
0
Konum
sakarya
Sağlam bir proje yapıyorsanız bu projede kullandığınız dil önemlidir.
Eğer global bir proje yapmak istiyorsanız birden fazla dil seçeneği
çok yararınıza olacaktır.Üstelik ziyaretçinin IP numarasına göre dil değişiyorsa :)

öncelikle mantığımız şu,

1) IP Adresini alıp kullanıcının ülkesini bulacağız.
2) Bu ülkeye ait bir dil paketi varsa onu, yoksa ingilizceyi kullandırtacağız

functions.php (fonksiyonlar içeren dosyamız olsun..)
PHP:
<?php
function DileKararVer($ip) {
	
// ülkeyi bul
$getcountry = UlkeBul($ip);


// ülkeye göre dili ata

switch($getcountry) {
case "Turkey":
$lang = "turkish";
break;

case "Germany":
$lang = "german";
break;

default:
$lang = "english";	
}

return $lang;
	
}

function ulkeBul($ip) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://ip-to-country.webhosting.info/node/view/36");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'ip_address='.$ip.'');
$kaynak = curl_exec ($ch);
curl_close ($ch);
preg_match("'belongs to <b>(.*?)</b>'s", $kaynak , $donen);
return $donen["1"];
} 
?>

PHP:
// siteye giren kişinin IP
$ip = getenv("REMOTE_ADDR");

// bu kullanıcıya gösterilmesi gereken dil
print DileKararVer($ip);

şimdi normal şartlarda, biz girdiğimiz zaman ekranda "turkish" yazacaktır.
almanyadan giren bir kişide "german", almanya ve türkiye dışından giren
bir kullanıcı için de "english" yazacaktır.

dili belirledik peki bunu nasıl uygulayacağız?

öncelikle, istediğimiz dile ait klasörler oluşturacağız (örnek languages/turkish/ ve languages/english/ klasörleri.
ve bunların içine aynı isimlere sahip dil dosyaları koyacağız.

misal home.lang.php: (.lang koymamın hiçbir önemi yok, sadece dil dosyası olduğunu göstermek için, istediğinizi yapabilirsiniz.)

PHP:
<?php
$lang['home'] = array();

// menu

$lang['home']['menu_index'] = "Home";
$lang['home']['menu_about'] = "About us";
$lang['home']['menu_contact'] = "Contact";

?>

aynı addaki dosya (bu sefer turkish klasörü içinde)


PHP:
<?php
$lang['home'] = array();

// menu

$lang['home']['menu_index'] = "Anasayfa";
$lang['home']['menu_about'] = "Hakkımızda";
$lang['home']['menu_contact'] = "İletişim";

?>

şimdi önemli kısım sayfamızdaki yazıları dil dosyaları içnde tanımlanan değişkenlerden oluşturmak.

örnek dosyamız index.php

PHP:
<?php

$lang = array();
require_once("functions.php");

// ziyaretçi IP ile birlikte dili tespit et
$ip = getenv("REMOTE_ADDR");
$language = DileKararVer($ip);

require_once("languages/". $language . "/home.lang.php");

## şuanda bu sayfaya "languages/turkish/home.lang.php" dosyası alınıyor.
## tabiki türkiyeden giriyorsak, aksi takdirde diğer klasörlerdekini alacaktı

?>
<html>
<body>
Menu1:  <?=$lang["home"]["menu_home"];?>    <br>
Menu2:  <?=$lang["home"]["menu_about"];?>    <br>
Menu3:  <?=$lang["home"]["menu_contact"];?>    <br>
</body>
</html>

iyi kodlamalar.sorunuz olursa yazınız
 
Geri
Üst