Sitelerinize Çoklu Dil Desteği

 bcakir
 18 Nisan 2012
 Php

Merhaba arkadaşlar, yeni bir uygulama yazısıyla karşınızdayım. Bu yazıda, Php ile sitelerinize çoklu dil desteği nasıl sağlayabileceğinizi anlatacağım. Bu yazıda anlattığım mantığı kullanarak istediğiniz kadar dil seçeneği olan bir site ya da uygulama yapmanız mümkün olacak. Dil seçeneğini artırmanız için yapmanız gereken, sadece bir tane dil dosyasını kopyalayıp eklemek istediğiniz dile göre uyarlamak kadar basit olacak. Ama şunu belirteyim, eğer Arapça gibi sağdan sola doğru okunan bir dil eklemek isterseniz, bu tarz diller için stil değişikliğine de gitmeniz gerekmektedir. Demek istediğim, farklı bir dil yapısı için farklı bir css dosyasına ihtiyacınız olacağıdır. Bu önemli noktayı da açıkladığıma göre basit bir çok dilli uygulama geliştirebiliriz.

<?php
//index.php olarak kaydedin
if(isset($_GET['dil'])){
    $lng = $_GET['dil'];
    include $lng.'.php';
}else{
    include 'tr.php';    
}
?>
<!DOCTYPE html> 
<html>
<head>
	<meta http-equiv="content-type" content="text/html; charset=iso-8859-9" />
	<title><?php echo $dil['baslik']; ?></title>
</head>
<body>
<h1><?php echo $dil['baslik']; ?></h1>

<div id="menu">
<ul>
   <li><?php echo $dil['anasayfa']; ?></li>
   <li><?php echo $dil['hizmetlerimiz']; ?></li>
   <li><?php echo $dil['arsiv']; ?></li>
   <li><?php echo $dil['iletisim']; ?></li>
   <li><a href="index.php?dil=<?php echo $dil['dil']; ?>"><?php echo $dil['secenek']; ?></a></li>
</ul>
</div>

<div id="footer"><?php echo $dil['lisans']; ?></div>
</body>
</html>

Yukarıda uygulamamızın ana sayfasını oluşturduk. Seçilen dil seçeneğine göre sayfamıza dil dosyamızı çağırıp burada girilen değerleri uygun yerlerde gösterdik. Ayrıca, açılış sayfası dil seçeneğini de Türkçe olarak ayarladık. Şimdi de iki farklı (Türkçe ve İngilizce) dil dosyamızı oluşturalım.

<?php
//tr.php olarak kaydedin
$dil['baslik']='Php ile Çoklu Dil Desteği';
$dil['tr']='Türkçe';
$dil['en']='İngilizce';
$dil['secenek']='İngilizce';
$dil['dil']='en';
$dil['anasayfa']='Ana Sayfa';
$dil['hizmetlerimiz']='Hizmetlerimiz';
$dil['arsiv']='Arşiv';
$dil['iletisim']='İletişim';
$dil['lisans']='Sitenin bütün hakları saklıdır.';
?>

Türkçe dil dosyamızı oluşturup içerisine Türkçe sayfada görünmesini istediğimiz şekilde değerlerimizi girdik. Bu dosyanın aynısı İngilizce için de yapacağız.

<?php
//en.php olarak kaydedin
$dil['baslik']='Multi-Language Support with Php';
$dil['tr']='Turkish';
$dil['en']='English';
$dil['secenek']='Turkish';
$dil['dil']='tr';
$dil['anasayfa']='Home';
$dil['hizmetlerimiz']='Services';
$dil['arsiv']='Archive';
$dil['iletisim']='Contact';
$dil['lisans']='All right reserved.';
?>

İngilizce dil dosyamızı oluşturup, iki faklı dil desteğimizi de sağladığımıza göre uygulamamız burada sona ermiş oluyor. Yukarıda da belirtiğim gibi dil yapısı farklı olan bir dil için stil dosyasında da farklılık yapmak durumundasınız. Başka yazılarda görüşmek dileğiyle, hoşçakalın.

 8.447 Okunma

Bu yazıya 21 yorum yapılmış.

  1. Mantığı demek bu kadar basitmiş bu dil seçeneğinin. Kalavyenize sağlık çok yardımcı oldu.

  2. harika bir anlatım çok teşekkürler.

  3. güzel bir anlatım, emeğinize sağlık, küçük bir sorum olacak. bunu jquery ile yapmak daha hızlı olmasını sağlar mı? asıl sorum ise; “alert(”);” durumunda sonucun boş dönmesi, var mıdır bunun çözümü? şimdiden teşekkürler

    • JQuery ile dil desteği yapmak mantıklı bir yol değil, define ya da harici bir xml dosyası kullanabilirsin.

  4. Merhaba, çok güzel bir anlatım olmuş. Ancak dil adında bir dizi kullanmak yerine define() gibi bir sabit değişken kullanmamız performans açısından daha verimli olacaktır.

  5. Mantık basit ama bu şekilde kullanmak pek doğru değil
    xml veya json dosyası oluşturup onun üzerinden çekmeniz daha sağlıklı ve optimizedir

  6. Performans açısından define mı tavsiye edersiniz yoksa bu yöntemi mi (array) cevabınızı bekleyeceğim…

    • Define kullanmak hız açısından daha verimli olur. Ben sadece mantığını anlatmıştım.

  7. İlginiz ve cevabınız için teşekkür eder, iyi çalışmalar dilerim…

  8. Merhabalar. Anlatım için teşekkürler.

    Bu script nasıl geliştirilerek; ziyaretçinin bulunduğu sayfanın dilini değiştirmek mümkün olabilir?

    Örneğin:
    İletişim sayfasında ingilizceye tıklayınca Contact’a gitsin İngilizce anasayfaya değil…

  9. Hocam peki veriler veritabanından çekilecek bunu nasıl yaparız. Misal veritabanında veriler türkçe kullanıcı ingilizce seçeneğine tıkladı, nasıl olacak?

  10. güzel paylaşım hocam da veritabanından çekme işi biraz sıkıntı sanırım

  11. Güzel bir paylaşım öncelikle, size bir sorum olacaktı mesela bir kurumsal site yaptık. Bu sitedeki gibi veya googlenin site çevirisi gibi bir eklenti kurabilir miyim, kurumsal bir php siteye.

    • Google site dil çeviri ile site açıldığında, içeriği çevirttirerek gösterebilirisin. Fakat çevirinin pek başarılı olacağını hele de bir kişi tarafından metinlerin ingilizceye veya bir başka dile çevrilmiş bir sitenin içerik kalitesini yakınından bile geçmeyeceğini söyleyebilirim.

  12. Hocam default olarak en.php yapacaz nasıl yapabiliriz

    • Yukarıda yazdığım kodun else kısmını tr.php yerine en.php olarak değiştirirsen açılışta ingilizce olmuş olur.

  13. Merhabalar, yazınız biraz eski ama ben yinede sormak istiyorum. Bu uygulamayı wordpress’te yapma olasılığımız varmıdır ?

  14. Merhaba,

    Anlatım çok kolay ve basit olmuş. Herşey için teşekkürler.

  15. Eyvallah hocam elinize sağlık. Ne zamandır uğraşıyordum bir türlü yapamamıştım sayenizde bu sorunun üstesinden geldim.

  16. Güzel anlatım olmuş çok teşekkür ederim.

  17. Panelli bir sisteme nasıl bir mantık kurabiliriz? Admin panelinden eklediklerim dinamik bir site gibi 2 dilde veya daha fazla dilde siteme dökülsün istesem nasıl bir mantık kurabilirim? Veriler tablolarda tutulacak.

Yazı hakkında görüşlerinizi belirtmek istermisiniz?

Daha fazla Php
Kapat