Php Çoklu Dil Desteği

Merhaba arkadaşlar, bu yazımda anlatmak istediğim çoklu dil desteği konusu. Daha önce Codeigniter’da çoklu dil konusuna değinmiştim. O yazıya buraya tıklayarak ulaşabilirsiniz.

Diyelimki bir websiteniz var ve çoklu dil desteği yapmak istiyorsunuz. Size gerekli olan şeyler; dil dosyası, o dil dosyasına göre uyarlanmış bir web sayfası ve hangi dili seçeceğinizi belirleyeceğiniz bir fonksiyon sayfası. Örnek bir sayfamız olsun aşağıdaki gibi

//index.php
 <html>
 <head>
 <title>Ali İhsan Candemir Kişisel Web Sayfası</title>
 </head>
 <body>
 Hoşgeldiniz.
 </body>
 </html>

Biz elimizdeki bu sayfayı gelen ziyaretçinin tarayıcı diline duyarlı olacak şekilde değiştireceğiz. Bize gereken bir de dil dosyaları

//tr.php
<?php
$dil['baslik'] = "Ali İhsan Candemir Kişisel Web Sayfası";
$dil['icerik'] = "Hoşgeldiniz.";
?>
//en.php
<?php
$dil['baslik'] = "Ali İhsan Candemir Personal Web Page";
$dil['icerik'] = "Welcome";
?>

Şimdi index.php sayfamızı dil dosyasına uygun olacak şekilde ayarlayalım.

//index.php
 <html>
 <head>
 <title><?=$dil['baslik']?></title>
 </head>
 <body>
 <?=$dil['icerik']?>
 </body>
 </html>

Şimdi de gelen ziyaretçinin tarayıcı dilini alıp ona göre yönlendirme yapmak için yeni bir sayfa oluşturuyoruz.

//fonksiyon.php
<?php
require_once 'lang/'. dilYonlendir() .'.php'; // dilSec fonksiyonundan dönen bilgiye göre dil dosyasını ekliyoruz.
function dilSec(){
//Burada tarayıcı dilini alıyoruz
$dil = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2);
if($dil!="" && file_exists("lang/".$dil.".php")){  //dil dosyasının olup olmadığını denetliyoruz
$language = $dil;
}else{
$language = "en";
}
return $language; 
}
?>

Ve tabi fonksiyon sayfasını da index.php sayfamıza ekliyoruz.

//index.php
require_once 'fonksiyon.php';
 <html>
 <head>
 <title><?=$dil['baslik']?></title>
 </head>
 <body>
 <?=$dil['icerik']?>
 </body>
 </html>

Diyelimki siz kullanıcıya dil seçeneği de sunmak istiyorsunuz. Onu yapmak için öncelikle index.php sayfamızda dil seçmek için linkler oluşturmamız gerekiyor.

//index.php
require_once 'fonksiyon.php';
 <html>
 <head>
 <title><?=$dil['baslik']?></title>
 </head>
 <body>
<a href="?dil=turkce">Türkçe</a> - <a href="?dil=ingilizce">İngilizce</a><br />
 <?=$dil['icerik']?>
 </body>
 </html>

Gördüğünüz gibi iki tane link ekledik biri türkçe diğeri ingilizce için. Şimdi bu koyduğumuz linkleri fonksiyon sayfasının anlayabilmesini sağlıyoruz. Bunun için yeni bir fonksiyon yazıyoruz .

//fonksiyon.php
<?php
//Burada da değişiklik yapmak zorundayız eğer linke tıklandıysa önceliği ona vermemiz gerekli 

if($_GET['language']){ //Eğer linke tıklandıysa ona göre dil seç
 require_once 'lang/'. dilYonlendir() .'.php';
}else{ // tıklanmadıysa tarayıcı diline göre dil seç
 require_once 'lang/'. dilSec() .'.php';
}

function dilSec(){ // Bu otomatik tarayıcı dilini algılamak için olan fonksiyon
//Burada tarayıcı dilini alıyoruz
$dil = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2);
if($dil!="" && file_exists("lang/".$dil.".php")){  //dil dosyasının olup olmadığını denetliyoruz
$language = $dil;
}else{
$language = "en";
}
return $language; 
}

function dilYonlendir(){
 $dil = strip_tags($_GET['language']); //index.php sayfasından Get ile gönderdiğimiz dil bilgisini alıyoruz.
 if($dil!="" && file_exists("lang/".$dil.".php")){ //Dil dosyasını ve dil değişkeninin boş olup olmadığını denetliyoruz.
 $language = $dil;
 }else{
 $language = "en";
 }
 return $language;
}
?>

Böylelikle çoklu dil desteği olan bir web sayfası yapmış olduk. Ana mantık bu, sonrasında kendinize göre pratik çözümler kullanabilirsiniz.

Reklamlar

Php Çoklu Dil Desteği’ için 2 yanıt

  1. Peki ben anasayfada değilde iletişim sayfasında dili değiştirdim ve o sayfada kalmadını istiyorum bunu nasıl yapabilirim

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s