PHP ile çok dilli sayfalar hazırlamak


“Globalleşme çağı” geyiğine girmeden çok dilli sitenin nasıl yapıldığını kısaca anlatalım. Bunun için farklı yöntemler var ama ben burada sadece bir tanesini anlatacağım.

Web sayfasının hangi dilde açılacağını adres çubuğundaki bir parametreye bağlı olarak belirleyebiliriz. Ya da bu işi otomatik olarak javascript ile browser diline göre değiştirebiliriz.

Temel mantık ise bir sözlük dosyası oluşturmak üzerine bina edilir.

Sözlük dosyasını her dil için ayrı ayrı oluşturabilirsiniz veya (daha hızlı bir çözüm olarak) tek bir dosya içinde dizilerle halledebilirsiniz.

<?php

$sozluk = array(
    
    'tr' => array(
        'ANASAYFA' => 'Anasayfa',
        'HAKKINDA' => 'Hakkında',
        'ILETISIM' => 'İletişim',
        'HABERLER' => 'Haberler',
        'TUM_HAKLARI_SAKLIDIR' => 'Tüm hakları saklıdır'
    ), 
    'en'=>array(
        'ANASAYFA' => 'Home',
        'HAKKINDA' => 'About',
        'ILETISIM' => 'Contact',
        'HABERLER' => 'News',
        'TUM_HAKLARI_SAKLIDIR' => 'All rights reserved' 
    )
);
?>

Burada dikkat edilmesi gereken nokta dizilerdeki anahtarların her dil için aynı olması. Anahtar değerleri dile göre değişecektir.

Birleşik bir dizide yapı,

anahtar => değer

şeklindedir.

Bu kodları sozluk.php adı altında bir dosya içine kaydettikten sonra sözlüğün kullanılacağı sayfaya göz atalım.

<?php
    $lang = 'tr';
    
    if (isset($_GET['lang'])) {
        $lang = $_GET['lang'];
    }
    require_once 'sozluk.php';
?>
<nav>
    <ul id="menu">
       <li><a href="index.php?sayfa=anasayfa&lang=<?php echo $lang ?>"><?php echo $sozluk[$lang]['ANASAYFA'] ?></a></li>
        <!-- Liste uzar gider... -->
    </ul>
</nav>

Menü bu şekilde uzayıp giderken biz kodlara bir bakalım:

$lang = 'tr';

satırında varsayılan dili belirliyoruz. Zira adress çubuğunda henüz bir dil değeri yoksa sayfa açılırken sorunlar yaşayabilirsiniz. Dolayısıyla biz işimizi sağlama alıp $lang değişkeni içine bir değer ataması yapıyoruz.

if (isset($_GET['lang'])) {
    $lang = $_GET['lang'];
}

Eğer ki adres çubuğunda lang parametresi mevcut, o zaman onun kodunu alıyoruz $lang değişkeni içine.

require_once 'sozluk.php'

satırıyla $sozluk dizisini sayfada kullanıma hazır hale getiriyoruz.

...<?php echo $sozluk[$lang]['ANASAYFA'] ?>...

satırında ilgili dilin içindeki ANASAYFA anahtarının karşılık değerini sayfada göstermek üzere yazdırıyoruz.

Bu şekilde tek bir dosyada bir sürü dile ait kelimeleri oluşturabilirsiniz. Ancak çok sayıda anahtar varsa her dil için ayrı dosya oluşturmak performans açısından çok daha iyi olacaktır.

2 thoughts on “PHP ile çok dilli sayfalar hazırlamak

  1. session başlatım session da gizliden taşımak daha mantıklı yoksa sürekli adres çubuğunda dili mi göreceğiz

    1. Session güzel de, ziyaretçi eliyle sayfa dil kodunu adres çubuğundan değiştirmek isteyebilir. Pek çok sitede dil tercihi adres çubuğundan okunuyor. Ama siz browser diline göre de otomatik dil tercihi yaptırabilirsiniz ve bu bilgiyi session içinde tutabilirsiniz. Çerez olarak da tutulabilir. İşin niteliğine göre değişir bence. Bu yazıda bana öyle bir şekilde lazım olmuştu. Kendi tecrübemi paylaşmıştım.

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. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s