Blog Single

Merhabalar, sizlere bu makalemde PHP ile Çoklu Dil Desteği sisteminin işleyişi ve çalışma mantığına ilişkin açıklama ve örnekte bulunmak istedim.

Neden, Çoklu Dil Desteği ?

  • Herhangi bir Web yazılım dili ile yaptığınız bir web sitesi, ziyaretçi hedeflemesi bakımından tek bir dil yada tek bir ülkeye hitap etmiyor olabilir. Yada paylaşım yaptığınız içerikte ilgili kelimelerden yola çıkılarak sizin ile aynı dil olmasa bile arama yapan kişiler sizin sitenize yöneliyor olabilir, yada bir ilgili görsel arama sonuçlarından sitenize yabancı ülkelerden gelen ziyaretçileriniz olmuş olabilir.
  • Sitenizde belirli dillerin kullanımına izin vererek, yabancı ziyaretçilerinizin daha iyi ve sağlıklı şekilde içerik görüntüleyebilmesini sağlayabilirsiniz.

Çoklu Dil desteğini nerelerde kullanmalıyım ?

  • Bunun bir kısıtlaması olmamakla birlikte; Kategori adları, açıklayıcı kelimeler, buton başlıkları, kısa kelimeler, hatta ve hatta içerik üretiminde de çoklu dil sistemi ilişkilendirmesi kurulduğunda, ilgili makalenin ilgili dilden sayfanıza erişen kişilerin görmesini sağlamak bile mümkün.
  • Yada örneğin; abc.vyz sayfanıza giren bir kişinin, index_tr.php yada index_en.php gibi bir sayfayı otomatik olarak görmesini sağlamak gibi bir yöntem geliştirip, sitenizin ilgili her yerinde kullanabilirsiniz. (Basit bir sayfalama yapıyorsanız, öneri olarak gösterilebilinir.)
  • Çok gelişmiş bir örnek olarak ise, eskiden yahoo.com'un da kullandığı bir dil sistemi olan; yahoo.com'a girilince sizi tr.yahoo.com gibi subdomain sayfasına yönlendirerek ilgili içeriğin sadece o dile özgü listelenmesi sağlanıyordu.
  • Aynı subdomain örneğine ek olarak da, myspace.com kullanıyordu. tr.myspace.com, en.myspace.com gibi. Burada ise önceki örnekten farklı olarak ise, hangi subdomainden giriliyor ise, o subdomain'e özgü benzersiz bir tasarım gösterip, diğer dillere sabit bir tasarım gösterildiğini yıllar önce görmüştüm.

Hangi dilden sitemize girildiğini nasıl anlayabiliriz ?

Bunun bir çok alternatifi bulunabilir. Bunlardan bazıları ;

  • Tarayıcının şuanda varsayılan dilini tespit ederek (En garantili yöntemdir.)
  • İp tabanlı lokasyon belirlemesi yapılıp, bulunduğunuz konumun yerel dilini öğrenerek
  • Eklentiler yardımı ile (Google Api vs) tespit ederek
  • En basit manada, parametreli verilerin arama motorlarında veya direkt olarak sayfamıza gelen ziyaretlerde, sayfamıza dil parametremize göre hangi değer ile girildiğinin tespitini yaparak (Alternatif yöntemdir.)
  • Yada dil seçimi yaptırıp, session gibi yöntemler ile değerleri saklayıp, ilgili değere göre sonuçlar listelemek olabilir. (Örneğin: Facebook login olma sayfasındaki dil seçimi)

Daha da fazla kafanızı karıştırmadan ve ufkunuzun derinliklerine daha sonra inmenizi temenni ederek basit örneklere başlamak istiyorum;

Not: Her sitenin varsayılan bir dili olmak zorundadır. Çoklu dil sisteminin mantığı ise, her sitenin varsayılan diline ek olarak, alternatif bir veya birden fazla dil seçeneği sunuluyor olmasıdır.

Örneğin; Benim sitemin varsayılan dili Türkçedir. Benim siteme, varsayılan tarayıcı dili Türkçe (TR) olarak giren bir kişi, içeriklerimi Türkçe okur. Eğer varsayılan dili Türkçe değil ise, alternatif dil olarak, İngilizce dili içeriği görüyor olurlar.

Bir Not daha: Türkçe sadece Türkiyede konuşulmadığı gibi, Varsayılan tarayıcı dili, herhangi bir internet kullanıcısının ülkesi fark etmeksizin değiştirilebilinir. Yani Amerikada bulunan bir Türk de varsayılan tarayıcı dili Türkçe ise içeriğinizi Türkçe görüntüleyebilmektedir. Tarayıcı dil seçimleri lokasyona bağımsız çalışmaktadır.

Tarayıcı dilleri, dizi halinde listelenmektedir. Dizinin ilk elemanı aynı zamanda  varsayılan tarayıcı dili seçimidir.

Örnek 1 - PHP ile Tarayıcı Dilinin Algılanması

Örneğin dil.php için;
$step_one = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
//echo $step_one;
$step_two = substr($step_one,0,2);
echo $step_two;
//Çıktı: tr

Örnek 2 - Tarayıcı dilinin algılanıp, ilgili dile göre içerik gösterilmesi

Örneğin index.php için;

include_once('diller.php');

echo $dil_dizisi[0];

diller.php için;

$dil = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2);

if($dil=="tr"){
    $dil_dizisi[0]="Merhaba";
}else if($dil=="es"){
    $dil_dizisi[0]="Hola";
}else{ // Alternatif dili ifade eder
    $dil_dizisi[0]="Hello";
}

// Çıktı: Varsayılan dil seçimine göre değişecektir.

Test etmek için;
Firefox tarayıcısı için, Seçenekler > İçerik > Diller > Seç > En üstteki dili değiştirip test edebilirsiniz.

Örnek 3 - Klasörde bulunan dil dosyalarına göre içerik listelemek

$alternatif_dil = "en";
if(file_exists('diller/'.substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2) . '.php')) {
        include('diller/'.substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2) . '.php');
} else {
         include_once("diller/".$alternatif_dil.".php");
}
Açıklama;
Eğer diller klasörümün içinde 2 karakter uzunluğunda, şuanda sayfaya girdiğim tarayıcı dilinin dosyası varsa onu çek, eğer yoksa benim alternatif dil dosyamı göster.

Örnek 4 - Dil dosyaları dizi sistemi nasıl olabilir ?

İç içe diziler veya define kullanabilirsiniz.
Bu makaleyi paylaşın:
İstanbul'da yaşıyorum.Web üzerinde Frontend/Backend Geliştirmenin yanı sıra, Android Geliştirme, PHP/ASP.NET, C# Yazılım Uzmanlığı ve Java konuları işliyorum. Kod Şiirdir, onları seviyorum.

Bir yorum bırakın