• 03-09-2013, 10:54:39
    #1
    Arkadaşlar Merhaba.

    Yaptığım sistemlerin hepsini sınırsız dil seçeneği olan altyapı ile yazıyorum. Ancak merak ettiğim dil yapısını nasıl yapmam uygun olur?

    Bi çalışmamda browser diline göre sayfa içeriğinin uygun dilini çektirdim veritabanından. Örnek link
    xxx.com/page/ingilizce-sayfa.html
    xxx.com/page/turkce-sayfa.html
    mesela ben türkçe browser ile xxx.com/page/ingilizce-sayfa.html e girersem aynı sayfanın türkçe versiyonunu çıkarıyor. Bu mantığı kendim geliştirdim ama geçerlimi bilmiyorum. Google da zararı olurmu yada faydası?

    Birde merak ettiğim

    xxx.com/en/01/ingilizce-icerik.html veya xxx.com/tr/01/turkce-icerik.html
    böyle yapıp browser dilini kullanmadan kullanıcı hangi linke girerse o veriyi acmasımı daha mantıklı?

    Son olarak google a sayfa dilini extradan belirtmemiz gerekir mi?
  • 03-09-2013, 13:09:56
    #2
    benim yaptığım sitelerde de aynı mantık mevcut.
    siteadi.com/tr/icerik-sayfasi
    siteadi.com/en/content-page
    gibi. Fakat bunlar birbirinden bağımsız sayfalar. Şayet birbirine bağımlı sayfalar, örneğin türkçe makaleyi görüntülerken bunun ingilizcesini göster tarzı bir link ile direk ingilizcesine geçiş yapmasını isteyebilirsin. Ya sayfayı eklerken diğer dildeki makalenin veya sayfanın linkini verir veya panelden makaleyi veya sayfayı çektirirsin ya da veritabanı yapında şöyle bir yapı kurarsın.

    id
    title_tr
    title_en
    content_tr
    content_en

    Şeklinde bir yapı oluşturur sayfayı oluştururken 2 dili birden girmesini istersin. Eğer sayfanın diğer dillere çevirisi yoksa yayınlayacağın sayfası içinde bu alanın boş veya dolu durumunu kontrol eder ona göre çeviri linkini koyarsın.
  • 03-09-2013, 17:52:59
    #3
    siteadi.com/tr/
    siteadi.com/en/
    gibi olması daha mantılıdır, bkz: demo-store.prestashop.com/en/ & demo-store.prestashop.com/it/
  • 03-09-2013, 19:52:27
    #4
    Üyeliği durduruldu
    Hocam

    veri tabanında

    id

    baslik

    ozet

    detay

    dil

    diye bir yapı kurup bir dil tablosuna dilleri ekleyip site dilini ona göre sorgulatsan tüm içeriklerde daha mantıklı olmazmı
  • 03-09-2013, 23:41:31
    #5
    Üyeliği durduruldu
    dil dosyasını tarayıcıdan alırsanız google varsayılan diliniz yada ingilice diline girecektir. türkçe sayfalarıda ancak çerez takip sistemiyle bulur ki buda biraz zaman alabilir
  • 04-09-2013, 00:32:38
    #6
    Üyeliği durduruldu
    Arkadaşlar uzun zamandır döküman yazamıyordum ama bir anlık şevk ile bir döküman kaleme aldım hatalı kısımlar varsa lütfen belirtin. Forumumuz kodları bozduğu ve şu güzelim sitemizde kod ekleme eklentisi bulunmadığı için her kodun altına github linki vereceğim kodları oradan kontrol edin.

    Bu makalede web sitelerine çoklu dil desteği ekleme konusunu anlatmaya çalışacağım.

    Niçin Gerekli?
    Günümüzde firmalar için uluslar arası pazara erişmek oldukça kolay. Bu sebeple artık web sitelerinde birden fazla dil seçeneği zorunlu bir özellik haline geldi.

    Nasıl?
    Aslında mantık oldukça basit. Dile göre değişen kısımları bir değişkene atayacağız ve dil seçimine göre bu değişkenlerin değerini değiştireceğiz.

    Uygulama
    Şimdi örnek bir web sitesi düşünelim. Ben konuyu anlatmak adına sitenin menüsü üzerinden gideceğim. Siz de aynı mantıkla sitenin diğer kısımlarına bunu uygulayabilirsiniz. Örneğin sitemizde menümüz şu şekilde olsun.

    <ul>
    <li><a href= "index.php">Anasayfa</a></li>
    <li><a href= "hakkimizda.php">Hakkımızda</a></li>
    <li><a href= "iletisim.php">İletişim</a></li>
    </ul>

    Kodlar

    Şimdi menüde yer alan menü isimleri yerine değişkenler yazıyoruz. Böylece menü isimlerinin dinamik bir hal almasını sağlıyoruz.

    <ul>
    <li><a href= "index.php"><?php echo $diller[’anasayfa’];?></a></li>
    <li><a href= "hakkimizda.php"><?php echo $diller[’hakkimizda’];?></a></li>
    <li><a href= "iletisim.php"><?php echo $diller[’iletisim’];?></a></li>
    </ul>

    Kodlar

    Artık menü isimlerimiz dinamik. Sıradaki işlem bu değişkenlere seçilen dile göre uygun veriyi getirmek.
    Öncelikle sitemizin menü isimlerini tanımlayacağımız dil dosyaları oluşturacağız. Bunun için dil isimli bir klasör oluşturup içine tr.php ve en.php adında iki adet dil dosyası oluşturalım ve değişkenlerimizi burada tanımlayalım.

    //tr.php
    $diller[’title’] = "Test Sayfası - zaferk.com";
    $diller[’anasayfa’] = "Anasayfa";
    $diller[’hakkimizda’] = "Hakkımızda";
    $diller[’iletisim’] = "İletişim";

    //en.php
    $diller[’title’] = "Test Page - zaferk.com";
    $diller[’anasayfa’] = "Home";
    $diller[’hakkimizda’] = "About Us";
    $diller[’iletisim’] = "Contact";

    Kodlar

    Burada her dil dosyasında her bir menünün Türkçe ve İngilizce karşılığı için bir değişken oluşturuyoruz.
    Şimdi dil seçimi olayına bakalım. Dil seçimini session ile tutacağız.

    # Seçili dili kontrol ediyoruz
    if ($_SESSION[’dil’] == "en") {
    $dil = "en";
    }
    elseif ($_SESSION[’dil’] == "tr") {
    $dil = "tr";
    }
    else {
    # Eğer dil seçilmemişse tarayıcı dilini varsayılan dil olarak seçiyoruz
    $dil = substr($_SERVER[’HTTP_ACCEPT_LANGUAGE’],0,2);
    }

    Kodlar

    Burada sistemde seçilmiş bir dil varsa bu seçimi session’dan alıp değişkene atıyoruz. Eğer herhangi bir seçim yapılmamışsa tarayıcı dilini alıp onu varsayılan dil yapıyoruz.
    Sonraki aşama olarak dil seçme butonlarına bakalım. Dil seçim butonları yardımı ile kullanıcı seçimini kodlarımıza iletiyoruz. Ben normalde bu işi jQuery ile yapıyorum ancak burada get metodu üzerinden örnek vereceğim.

    Dil butonlarımız şu şekilde olsun.

    <a class="dilSec" href= "?dil=tr">TR</a>
    <a class="dilSec" href= "?dil=en">En</a>

    Kodlar

    Burada dil seçimini get metodu ile gönderiyoruz.
    Son olarak seçilen dilin sessiona atanması olayına bakalım. Burada get ile gelen dil verimizi session’a atıyoruz.

    # Dil seçimi yapılmışsa
    if($_GET[’dil’]) {
    # Dil seçimini session’a ata.
    $_SESSION[’dil’] = $_GET[’dil’];

    # Anasayfa’ya yönlendir.
    header("Location:index.php");
    }

    Kodlar

    Şimdi kodları toparlayıp yapıya genel olarak bakalım. Kodları sadece link ile veriyorum.

    Kodlar


    Buraya kadar olan kısım sistemin temeli ve bu temelin sitenin ana yapısı üzerine uygulanışı üzerine idi. Ancak çoklu dil yapısında dil seçimi değiştiğinde seçilen dile uygun içeriği de getirmeniz gerekir. Bu kısım sizin veri tabanı yapınız ile alakalı. Ben her bir dildeki veri için ayrı bir kayıt girildiği duruma göre olayı kısaca anlatacağım.

    //Tablo Yapısı
    id baslik icerik
    1 Hakkımızda Hakkımızda Yazısı.
    2 About US About us text.

    Buna göre hakkimizda.php’de şöyle bir kod yapısı işimizi görecektir.

    if ($dil == "en") {
    $ID = 2;
    }else {
    $ID = 1;
    }

    sorgu-> ... WHERE id = ’$ID’

    Dil yapısı genel olarak böyle. Bu mantık üzerine kodları kendi sisteminize uyarlayabilirsiniz.

    NOT: Bu makaledeki kodlar sadece çok dilli yapının mantığını anlatmak amacıyla örnek olarak verilmiştir ve kod güvenlik kontrolleri bulunmamaktadır. Kodları kendi sisteminize entegre ederken gerekli güvenlik önlemlerini alın.

    İyi çalışmalar. Bu makale sana yardımcı olur inş.
    Alıntı: Zafer K. arkadaşıma makalesi için teşekkürler.
  • 04-09-2013, 11:12:49
    #7
    Üyeliği durduruldu
    Vidoc adlı üyeden alıntı: mesajı görüntüle
    Arkadaşlar uzun zamandır döküman yazamıyordum ama bir anlık şevk ile bir döküman kaleme aldım hatalı kısımlar varsa lütfen belirtin. Forumumuz kodları bozduğu ve şu güzelim sitemizde kod ekleme eklentisi bulunmadığı için her kodun altına github linki vereceğim kodları oradan kontrol edin.

    Bu makalede web sitelerine çoklu dil desteği ekleme konusunu anlatmaya çalışacağım.

    Niçin Gerekli?
    Günümüzde firmalar için uluslar arası pazara erişmek oldukça kolay. Bu sebeple artık web sitelerinde birden fazla dil seçeneği zorunlu bir özellik haline geldi.

    Nasıl?
    Aslında mantık oldukça basit. Dile göre değişen kısımları bir değişkene atayacağız ve dil seçimine göre bu değişkenlerin değerini değiştireceğiz.

    Uygulama
    Şimdi örnek bir web sitesi düşünelim. Ben konuyu anlatmak adına sitenin menüsü üzerinden gideceğim. Siz de aynı mantıkla sitenin diğer kısımlarına bunu uygulayabilirsiniz. Örneğin sitemizde menümüz şu şekilde olsun.

    <ul>
    <li><a href= "index.php">Anasayfa</a></li>
    <li><a href= "hakkimizda.php">Hakkımızda</a></li>
    <li><a href= "iletisim.php">İletişim</a></li>
    </ul>

    Kodlar

    Şimdi menüde yer alan menü isimleri yerine değişkenler yazıyoruz. Böylece menü isimlerinin dinamik bir hal almasını sağlıyoruz.

    <ul>
    <li><a href= "index.php"><?php echo $diller[’anasayfa’];?></a></li>
    <li><a href= "hakkimizda.php"><?php echo $diller[’hakkimizda’];?></a></li>
    <li><a href= "iletisim.php"><?php echo $diller[’iletisim’];?></a></li>
    </ul>

    Kodlar

    Artık menü isimlerimiz dinamik. Sıradaki işlem bu değişkenlere seçilen dile göre uygun veriyi getirmek.
    Öncelikle sitemizin menü isimlerini tanımlayacağımız dil dosyaları oluşturacağız. Bunun için dil isimli bir klasör oluşturup içine tr.php ve en.php adında iki adet dil dosyası oluşturalım ve değişkenlerimizi burada tanımlayalım.

    //tr.php
    $diller[’title’] = "Test Sayfası - zaferk.com";
    $diller[’anasayfa’] = "Anasayfa";
    $diller[’hakkimizda’] = "Hakkımızda";
    $diller[’iletisim’] = "İletişim";

    //en.php
    $diller[’title’] = "Test Page - zaferk.com";
    $diller[’anasayfa’] = "Home";
    $diller[’hakkimizda’] = "About Us";
    $diller[’iletisim’] = "Contact";

    Kodlar

    Burada her dil dosyasında her bir menünün Türkçe ve İngilizce karşılığı için bir değişken oluşturuyoruz.
    Şimdi dil seçimi olayına bakalım. Dil seçimini session ile tutacağız.

    # Seçili dili kontrol ediyoruz
    if ($_SESSION[’dil’] == "en") {
    $dil = "en";
    }
    elseif ($_SESSION[’dil’] == "tr") {
    $dil = "tr";
    }
    else {
    # Eğer dil seçilmemişse tarayıcı dilini varsayılan dil olarak seçiyoruz
    $dil = substr($_SERVER[’HTTP_ACCEPT_LANGUAGE’],0,2);
    }

    Kodlar

    Burada sistemde seçilmiş bir dil varsa bu seçimi session’dan alıp değişkene atıyoruz. Eğer herhangi bir seçim yapılmamışsa tarayıcı dilini alıp onu varsayılan dil yapıyoruz.
    Sonraki aşama olarak dil seçme butonlarına bakalım. Dil seçim butonları yardımı ile kullanıcı seçimini kodlarımıza iletiyoruz. Ben normalde bu işi jQuery ile yapıyorum ancak burada get metodu üzerinden örnek vereceğim.

    Dil butonlarımız şu şekilde olsun.

    <a class="dilSec" href= "?dil=tr">TR</a>
    <a class="dilSec" href= "?dil=en">En</a>

    Kodlar

    Burada dil seçimini get metodu ile gönderiyoruz.
    Son olarak seçilen dilin sessiona atanması olayına bakalım. Burada get ile gelen dil verimizi session’a atıyoruz.

    # Dil seçimi yapılmışsa
    if($_GET[’dil’]) {
    # Dil seçimini session’a ata.
    $_SESSION[’dil’] = $_GET[’dil’];

    # Anasayfa’ya yönlendir.
    header("Location:index.php");
    }

    Kodlar

    Şimdi kodları toparlayıp yapıya genel olarak bakalım. Kodları sadece link ile veriyorum.

    Kodlar


    Buraya kadar olan kısım sistemin temeli ve bu temelin sitenin ana yapısı üzerine uygulanışı üzerine idi. Ancak çoklu dil yapısında dil seçimi değiştiğinde seçilen dile uygun içeriği de getirmeniz gerekir. Bu kısım sizin veri tabanı yapınız ile alakalı. Ben her bir dildeki veri için ayrı bir kayıt girildiği duruma göre olayı kısaca anlatacağım.

    //Tablo Yapısı
    id baslik icerik
    1 Hakkımızda Hakkımızda Yazısı.
    2 About US About us text.

    Buna göre hakkimizda.php’de şöyle bir kod yapısı işimizi görecektir.

    if ($dil == "en") {
    $ID = 2;
    }else {
    $ID = 1;
    }

    sorgu-> ... WHERE id = ’$ID’

    Dil yapısı genel olarak böyle. Bu mantık üzerine kodları kendi sisteminize uyarlayabilirsiniz.

    NOT: Bu makaledeki kodlar sadece çok dilli yapının mantığını anlatmak amacıyla örnek olarak verilmiştir ve kod güvenlik kontrolleri bulunmamaktadır. Kodları kendi sisteminize entegre ederken gerekli güvenlik önlemlerini alın.

    İyi çalışmalar. Bu makale sana yardımcı olur inş.
    Alıntı: Zafer K. arkadaşıma makalesi için teşekkürler.

    Güzel Anlatmışsınız Hocam. Elinize Sağlık

    Sabit Linkleri Bu Mantıkla Yapıyorum bende.

    Veri Tabanından Çektiklerimi de Dile Göre Sorgulayıp Öyle çekiyorum Adminden Eklerkende Dile Göre Ekletiyorum
  • 04-09-2013, 11:59:47
    #8
    Sample adlı üyeden alıntı: mesajı görüntüle
    Güzel Anlatmışsınız Hocam. Elinize Sağlık

    Sabit Linkleri Bu Mantıkla Yapıyorum bende.

    Veri Tabanından Çektiklerimi de Dile Göre Sorgulayıp Öyle çekiyorum Adminden Eklerkende Dile Göre Ekletiyorum
    Zaten çoğunluk olarak böyle yapılıyor. Peki bulunduğun sayfanın diğer dildeki çevirisini nasıl gösteriyorsun? Mesela bir ingilizce makale içindesin ama ziyaretçi bunun türkçesini görmek istiyor. Önce Türkçe siteye geçip oradan aynı makaleyi mi bulacak bu adam yoksa makalenin başına veya sonuna bu makalenin Türkçe çevirisini oku şeklinde bir linke tıklayıp oradan mı okuyacak.

    1. yani senin de dediğin yöntem kullanılırsa basit bir çeviriden farkı kalmıyor. 2. yöntem uygulanırsa daha dinamik olur ve tablo yapısı https://www.r10.net/1067852207-post2.html burada söylediğim şekle gelir mesela.

    Sizce hangisi daha mantıklı?
  • 04-09-2013, 12:01:01
    #9
    siteadi.com/tr/
    siteadi.com/en/


    en uygunu bu.

    session la da yapılabilir.