Php Çoklu Dil Sistemi
-
Merhaba arkadaşlar,
içerisinde 40-50 arası dilin olacağı, aynı zamanda blog sisteminde mevcut olacağı yani kullanıcının da kendi gireceği içeriği bolca mevcut olacak olan bir sistemde dil yapısını nasıl oluşturuyorsunuz ?
-
Kullanıcıya özel dil seçimi olacak mı yoksa sadece sitenin dili mi değiştirilecek?
-
pSkpt hocam,
yukarda bahsettiğim kullanıcı burda yönetici aslında,
yönetim paneline girip blog da içeriklerini yayınlayacak. Ama içeriklerinde her dil için ayrı ayrı yazması gerekiyor.
Yani blogda 30 tane içerik varsa bunlar 30 ayrı dile çevirip yazacak.
Yani içerikler ile beraber sitenin de dili değişecek. Doğal olarak yönetici dili seçmesi gerekecek.
Dışardan gelen kullanıcıda lokalizasyona göre kendi diline yönlendirilecek. kendine uygun dil yoksa varsayılan olarak ingilizce açılacak.
Örnek olarak kullanıcı türk ise site üzerindeki tüm içerikleri türkçe görecek. ingilizceyi seçerse herşey ingilizce olacak.
Yani böyle çok fazla dilli sistemlerde nasıl bir yol izlenmek gerekir ?
-
bir dil klasörün olucak ve her dil için içerisinde ayrı bir klasör olucak
language > TR > admin.php
şeklinde yapabilirsin bunun içerisindede değişkenleri array içerisinde kullanarak hazırlayabilirsin misal admin.php içi
<?php $lang['login'] = 'Giriş'; $lang['logout'] = 'Çıkış'; ?>
gibi örnekle yaparsın fonksiyon olarakda şöyle bişi hazırlarsın kişinin dilini session'a yazarsın bi default değerin olur kullanıcı değiştirirse onuda değiştirmiş olur. Birde veritabanında tutarsın ki her giriş yaptığında default değer gelmesin sessiona veritabanındaki değeri yazsın.
Hızlı bir şekilde yazdım şuan işteyim akşam eve geçince elimde önceden hazırladığım bişiler varsa paylaşırım olmazsa. Bu arada Codeigniter frameworküne bak derim onda dil altyapısı gayet güzel kullanılıyor framework üzerinden yaparsan sistemi daha rahat geliştirirsin.
-
Session ile çözersin hocam örnek;
Kullanıcı siteye girdiğinde default dil türkçe ise session turkçe eşitlersin eğer ingilizce ikonuna tıklarsa sessionu ingilizce ile eşitlersin tablo bağlantısındada dil seçeneğini sessionla eşitledin mi tamamdır
-
Evet sitenin statik bölgelerini php de array üzerinde tutucam. (Belki onlarıda veritabanına taşırım)
içerik alanlarınıda database e bağlıcam.
Kontrolüde session la sağlıyacam.
Tamamdır hocalar saolun.
-
solstice bunu yazdı
Evet sitenin statik bölgelerini php de array üzerinde tutucam. (Belki onlarıda veritabanına taşırım)
içerik alanlarınıda database e bağlıcam.
Kontrolüde session la sağlıyacam.
Tamamdır hocalar saolun.
aman dil dosyalarını veritabanında tutma çok fazla işlem olduğunda veritabanı sunucusunu kitlersin. Yada noSql veritabanlarına aşinaysan ona koy derim yoksa ilerde başın çok ağrır bu arada küçük bi örnek de var burda inceleyebilirsin http://www.sitepoint.com/multi-language-support-in-codeigniter/
-
Ccaglayan bunu yazdısolstice bunu yazdı
Evet sitenin statik bölgelerini php de array üzerinde tutucam. (Belki onlarıda veritabanına taşırım)
içerik alanlarınıda database e bağlıcam.
Kontrolüde session la sağlıyacam.
Tamamdır hocalar saolun.
aman dil dosyalarını veritabanında tutma çok fazla işlem olduğunda veritabanı sunucusunu kitlersin. Yada noSql veritabanlarına aşinaysan ona koy derim yoksa ilerde başın çok ağrır bu arada küçük bi örnek de var burda inceleyebilirsin http://www.sitepoint.com/multi-language-support-in-codeigniter/
Anladım hocam dil dosyalarını koymam. yalnız dinamik içerik kısımlarını mecbur dbye bağlıcaz. nosql için şimdilik vakit yok. daha önceden bakmadığım için zaman kaybederim.
-
opencartın language yapısını inceleyiver hocam
-
snnyk bunu yazdı
opencartın language yapısını inceleyiver hocam
tamam hocam.
-
Öncelikle site yapısında yani Anasayfa linkinin yazısı Resimler linkinin yazısı gibi template bağlı yazıları değişkenlere atayıp bunu bir dosya içerisinde ya da database'de tutabilirsin.
lang_tr.php
$lang['link_Anasayfa'] = 'Anasayfa';
$lang['link_Resimler'] = 'Resimler';...
lang_en.php
$lang['link_Anasayfa'] = 'Homepage';
$lang['link_Resimler'] = 'Images';...
Kullanacağın yerde
<a href="index.php"><?php echo $lang['link_Anasayfa']; ?></a>
tarzında kullanırsın.
Diğer kullanıcıların gireceği blog vs. içinse blogları kaydederken dil seçeneğini de ekleyeceksin. Burada sıkıntı şu olacaktır.
ben "Kır Gezisi" başlıklı bir blog yazdım, Türkçe, İngilizce ve Fransızca bunları 3 kere yazıp kaydettim.
Türkçe olan blogun ID'si 278
İngilizce olan blogun ID'si 375
Fransızca olan blogun ID'si 389 gibi farklı değerler olacaktır. Sen Google'da tek link olacak
http://site.com/blog/kir-gezisi-278.html
diyorsan yani adam yukarıdaki linke girip o yazıyı Fransızca da okuyabilir, İngilizce de ama link Türkçe sabit kalacak diyorsan o zaman blogu kaydederken "seo_link" diye bir alan oluşturup yazılan yazının seo_linkini o an oluşturmalı veya isteğe bağlı kullanıcıya bırakabilirsin.
Böylelikle elinde
http://site.com/blog/kir-gezisi.html
diye bir linkin oluşacak ve google 3 ayrı dil olsa da tek link görecektir. Tabi bunları içeriği ve başlığı değişik olacağı için seo açısından nasıl bir sonuç oluşturur orasını bilemiyorum. :)
http://site.com/blog/kir-gezisi-tr.html
http://site.com/blog/kir-gezisi-fr.html
http://site.com/blog/kir-gezisi-en.html
tarzında linklerde olusturabilirsin sana kalmış :)