lostyazilim
tr.link

PHP Çoklu Dil Desteğinde Nasıl Bir Yol İzlemeliyim

12 Mesajlar 2.649 Okunma
acebozum
tr.link

viper302 viper302 WM Aracı Kullanıcı
  • Üyelik 09.08.2014
  • Yaş/Cinsiyet 37 / E
  • Meslek Siber Güvenlik Danışmanı
  • Konum İstanbul Anadolu
  • Ad Soyad K** A**
  • Mesajlar 294
  • Beğeniler 19 / 26
  • Ticaret 3, (%100)
Arkadaşlar Çoklu Dil Desteği için nasıl bir yöntem önerirsiniz?

Gelecekte büyük bir proje olma ihtimaline göre dile göre sayfa mı include etmeyi tavsiye edersiniz yoksa dil dosyaları oluşturup dil dosyasını include etmeyi mi tavsiye edersiniz?

Yani site açıldı dil belirlendi AnaSayfa_EN.php dosyasını include et şeklinde mi olmalı yoksa dil belirlendi Lang_EN.php dosyasını include et dile atanan değişkenleri çek şeklinde mi?

Tabi Veritabanından da dinamik dil desteği de olacak yani Baslik_TR ve Baslik_EN gibi düşünün.
 

 

elektronikssl
webimgo

dump3cz dump3cz Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 01.05.2017
  • Yaş/Cinsiyet 25 / E
  • Meslek Yazılım
  • Konum Bilecik
  • Ad Soyad O** Ç**
  • Mesajlar 1749
  • Beğeniler 169 / 326
  • Ticaret 3, (%67)
Veritabanı olmadan yapabilirsin. Ben {$menuHome} şeklinde kullanmak istiyordum ama olmadı
 

 

viper302 viper302 WM Aracı Kullanıcı
  • Üyelik 09.08.2014
  • Yaş/Cinsiyet 37 / E
  • Meslek Siber Güvenlik Danışmanı
  • Konum İstanbul Anadolu
  • Ad Soyad K** A**
  • Mesajlar 294
  • Beğeniler 19 / 26
  • Ticaret 3, (%100)
Yok anlamadın dump3z, Veritabanında da başlıklar ve içerikler dile göre değişecek. Yani sen türkçe başlığı görüntülerken bende ingilizce başlığı görüntüleyeceğim. Görüntülediğimiz kolonlar farklı olacak dil sayesinde.
 

 

Nanoripper Nanoripper Hello World! Kullanıcı
  • Üyelik 25.10.2015
  • Yaş/Cinsiyet 30 / E
  • Meslek Computer Science
  • Konum İstanbul Anadolu
  • Ad Soyad Y** A**
  • Mesajlar 71
  • Beğeniler 1 / 19
  • Ticaret 0, (%0)
Benim de çoklu dil desteği olan bir websitem var. 10'un üzerinde dil destekliyor ve herhangi bir anda yeni bir dil eklemek mümkün.

Bu tarz büyük çaplı websitelerinde en mantıklısı tüm çevirilerin veritabanından çekilmesidir. Her dil için ayrı bir veritabanı oluşturup (tablo yapıları birbirinin aynısı, sadece içindeki veri farklı) kullanıcının dil seçimine göre ilgili veritabanından çeviriyi çağırabilirsiniz. Her çeviriye bir anahtar değeri vererek kodda bu anahtara göre veritabanından istediğiniz çeviriyi çağırarak sayfanın istediğiniz yerine yazdırabilirsiniz.

Kendi kurduğum sistemden bir örnek vereyim;


get("USERS_WELCOME_TEXT") ?>




Burada bu kullandığım tek satır kullanıcının görüntülemekte olduğu dile ait veritabanındaki USERS tablosundan WELCOME_TEXT anahtarına sahip string'i çekip ekrana Hoşgeldiniz, Welcome, Herzlich willkommen! vb. şeklinde uygun çeviriyi yansıtıyor.
 

 

wmaraci
wmaraci

Nanoripper Nanoripper Hello World! Kullanıcı
  • Üyelik 25.10.2015
  • Yaş/Cinsiyet 30 / E
  • Meslek Computer Science
  • Konum İstanbul Anadolu
  • Ad Soyad Y** A**
  • Mesajlar 71
  • Beğeniler 1 / 19
  • Ticaret 0, (%0)
Diğer söylediğine ekleme olarak da her dil için farklı sayfa yaparak kelimeleri, cümleleri hard-coded biçimde koda dahil etmen profesyonelce bir çözüm olmaz. Birbirinin aynısı kodları ve metinleri içeren sadece stringlerin değiştiği bir sürü dosya oluşturmuş olursun. Ve sitende herhangi bir değişiklik yaptığın zaman tüm bu dosyalarda tek tek değişiklik yapman gerekir ki pek mantıklı bir yöntem değil ama tabi günümüzde bu şekilde çoklu dil desteği sağlayan bir çok geliştirici var. Ben doğru bulmuyorum.

Ek olarak yukarıda bahsettiğim yöntem sayesinde websitem üzerinde çevirmen yetkisine sahip üyelerim kendi panelleri üzerinden sitenin tamamını kendi dillerine çevirebiliyorlar ve ben hiç bir müdahalede bulunmadan site direk olarak çevrilmiş haliyle görüntülenebilir oluyor. Çevirmenlere kaynak koduna herhangi bir erişim vermediğim için de diğer yöntemlere göre daha güvenli bir yöntem.
 

 

JumperTech JumperTech Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 02.07.2016
  • Yaş/Cinsiyet 39 / E
  • Meslek Webmaster
  • Konum İstanbul Avrupa
  • Ad Soyad B** O**
  • Mesajlar 1705
  • Beğeniler 820 / 523
  • Ticaret 19, (%100)
lang adında klasör aç, en.php tr.php ar.php gibi dosyalarda dil verilerini define ile belirle. Kullanıcının diline göre hangi dosya uygunsa scriptin en başına o dil dosyasını yansıt.
 

 

dump3cz dump3cz Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 01.05.2017
  • Yaş/Cinsiyet 25 / E
  • Meslek Yazılım
  • Konum Bilecik
  • Ad Soyad O** Ç**
  • Mesajlar 1749
  • Beğeniler 169 / 326
  • Ticaret 3, (%67)
JumperTech hocam pm bakar mısınız?
 

 

JumperTech JumperTech Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 02.07.2016
  • Yaş/Cinsiyet 39 / E
  • Meslek Webmaster
  • Konum İstanbul Avrupa
  • Ad Soyad B** O**
  • Mesajlar 1705
  • Beğeniler 820 / 523
  • Ticaret 19, (%100)
dump3cz

edit, tamamdır :)
 

 

dump3cz dump3cz Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 01.05.2017
  • Yaş/Cinsiyet 25 / E
  • Meslek Yazılım
  • Konum Bilecik
  • Ad Soyad O** Ç**
  • Mesajlar 1749
  • Beğeniler 169 / 326
  • Ticaret 3, (%67)
JumperTech gönderdim hocam dil sistemi hakkında yardım lazım.
 

 

viper302 viper302 WM Aracı Kullanıcı
  • Üyelik 09.08.2014
  • Yaş/Cinsiyet 37 / E
  • Meslek Siber Güvenlik Danışmanı
  • Konum İstanbul Anadolu
  • Ad Soyad K** A**
  • Mesajlar 294
  • Beğeniler 19 / 26
  • Ticaret 3, (%100)
Ben şöyle düşünüyorum static olan değerleri include edim diyorum, veritabanı içinde sql sorgusunun içerisinde tablo ön eki olarak $lang değişkeni koyayım daha sonra örnek vereyim

$Lang = $GELENDEGER;

SQLKodu = "Selecet Baslik_".$Lang." From basliklar Where id = 5";

gibi bir yöntem düşündüm. Tabi bütün sorgularda tek tek manuel eklemek gerekecek yukarıdaki ön eki. Ama en azından uğraştırmayacak. Sizin söylediğiniz gibi her dil için veritabanı oluşturmak 1 tane değişiklik için 10 tane veritabanında değişiklik yapmak demektir. Buda belli bir zaman ve veritabanı tabloları çoğaldıktan sonra uğraştırır insanı.

Acaba düşündüğüm yöntem doğru olabilir mi?
 

 

wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al