-
Ü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.
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ı
-
Ü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.
-
Ü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;
= $translation->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.
-
Ü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.
-
Ü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.
-
Ü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?