Bir Siteye Çoklu Dil Nasıl Yaparsınız?
-
Selam arkadaşlar, dinamik güncellenen bir siteye çoklu dil yapılcak olsa. Atıyorum 30 tane. Bunu nasıl bir sistem ile çözersiniz.
Normalde 2-3 dil olduğundan ben ilgili table'ın dilli olan sutunlarına adi_ing, adi_fr, adi_de şeklinde ek sutunlar çözerek yapardım.
Ama işin içinde 30 tane olunca bu pek kullanışlı olmaz.
Fikir yürütelim, büyük siteler nasıl çözer bu olayı?
(Not: Google translate script'i ekle demeyin :D)
-
Hacım yinede bazı yerlerde eksik olur scrpit'i olasada, her menü her şey aynı olmadığı için yine bir yerde o dili bilen birine ihtayaç duyulması söz konusu olabilir ki öyledir diye tahmin ediyorum.
O yüzden 30 dil :D 30 çalışan insan demek : | -
1-618-GR bunu yazdı:
-----------------------------Hacım yinede bazı yerlerde eksik olur scrpit'i olasada, her menü her şey aynı olmadığı için yine bir yerde o dili bilen birine ihtayaç duyulması söz konusu olabilir ki öyledir diye tahmin ediyorum.
O yüzden 30 dil :D 30 çalışan insan demek : |
-----------------------------Hacım boşver işin 30 çalışan kısmını yaw :)
Gerek DB yapısı, gerek sayfadaki sabit yazı yapısı bakımından en olurunu konuşalım biz ..
-
en kıralı kaç dil varsa o kadar db o kadar sayfa :)
-
asp.net için resourse dosyaları ile halledebilirsin. stringleri resourse dosyasında tutup içinden kullanabiliyorsun.
edit: sanırım verilerde değişcekmiş gelen giden verileride db de farklı tablolarda tutmak en mantıklısı. aynı tabloda tutup farklı kolonda dilini belirlersen boşuna içerik tekrarı olur tablon şişer buda performans kaybı yaşatır. -
create table dbo.Yazi
(
id int identity(1,1)primary key,
adi nvarchar(200),
durum smallint
)
en basitinden sitede fix yazıları tuttuğumuz tablo yapısı yukardadır. Şimdi buna 30 dil eklemek isteyelim işin DB tarfında ne yapalım performansı göz onunde tutarak?
-
Bir Dil tablosu aç onun Id sini yazilar tablosuna foreign key ile bağla olsun bitsin genel olarak button vb. nesnelerinde text değerlerini standart bir xml yapısı geliştirip oradan çekebilirsin.Bu arada bu verileri cache de tutarsan her kullanıcı için daha iyi olur...
-
mesela alttaki gibi..
sabit içeriklerinide vt de tutabilirsin, yada xml dosyasında tutabilirsin
Dil
------
ID
Ad*********
Haber
--------
ID
DilID
Baslik
Resim
Icerik -
Facebook bildiğim kadarıyla javascript ile yapmış. Bir ara incelemiştim.
-
30 Dil yapacaksan yazı tablosunda 30 tane kolon eklemen mantıksız olur. 30 tane Dil_yazı tablosu yaparsın, dil'e göre Join işlemini farkı yaparsın.
Şöyleki:
YazıTablo
ID
YazarID
TarihDilID
ENYazıTbl
ID
YazıTabloID
FRYazıTbl
ID
YazıTabloID
TRYazıTbl
ID
YazıTabloID
string session_Dil = session["dil"];
sqlCümlesi = "select * from YazıTablo y
inner join "+session_Dil+"YazıTbl y on yt.YazıTabloID = y.RID
where y.RID =@YazıID";
Syntax sallama oldu ama anlarsın umarım (c#-TeRRoR syntax karışık oldu)
-
ontedi bunu yazdı:
-----------------------------
Facebook bildiğim kadarıyla javascript ile yapmış. Bir ara incelemiştim.
-----------------------------Bazı php dilli sistemlerdede böyle sayfadaki sabit yazıları javascript methodu ile çağırıyorsun, ve sayfaya yüklenen dil_source javascript klasörüne göre verileri replace ediyor ve lokalize ediyor.