Zoque.Forum
Dirsek Teması:
Geri Dön Zoque.Forum » Webmaster Kaynaklari » Sunucu Tabanlı Programlama (Server Side) » Çoklu dil desteği sağlayan web sitesi programlamak


Yanıt
 
LinkBack Seçenekler
Old 24.12.2006   #1 (permalink)
 
Komplo's Avatar
 
Üyelik Tarihi: 28.03.2003
Yer: İstanbul
Yaş: 24
Mesaj: 251
Görsel: 1
Çoklu dil desteği sağlayan web sitesi programlamak


Herkese merhaba,

Bir web sitesi projesi için aklıma takılan bazı sorular var. Yapmayı düşündüğüm web sitesi kullanıcılara birden fazla dil seçeneği sunacak. Yaptığım araştırmalardan, en mantıklı çözümün , tüm metinlerin aynı veritabanında tutulması...
Bir örnek vermek gerekirse, site ilk açıldığında sağlanan dil desteklerinin linkleri olacak. Buradan hangi dile tıklanıldığı takdirde, istenilen dizine yönlendirilecek( siteadi.com/en, siteadi.com/tr, siteadi.com/it gibi... )

Aklımdan geçen veritabanı modellemesi ise şöyle:
Makaleler
---------------
MakaleID
KategoriID
MakaleBaslikTR
MakaleBaslikEN
MakaleBaslikIT
MakaleTR
MakaleEN
MakaleIT

gibi.....

Kullanacağım veritabanı MSSQL olacak. Ancak veritabanına kaydedilen metinin karekterleri herhangibir problem oluştururmu... Mesela rusça yada fransızca karakterler? Böyle bir site için dikkat edilmesi gereken hususlar nelerdir? Yardımcı olursanız sevinirim. Teşekkürler...
Komplo şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 24.12.2006   #2 (permalink)
 
absconder's Avatar
 
Üyelik Tarihi: 09.12.2000
Yer: istanbul
Yaş: 30
Mesaj: 1,973
Re: Çoklu dil desteği sağlayan web sitesi programlamak

text alanları nvarchar yada ntext olarak belirtirseniz unicode karakterlerde bir sorun yaşamazsınız.
__________________
"oturduğum mahallenin yolları çamurluydu, boyalı ayakkabı giysem bile, o yollardan geçtikten sonra çamurlanmamaları mümkün değildi. hayatım da böyle." yılmaz güney
http://www.sipidik.com
absconder şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 25.12.2006   #3 (permalink)
 
Üyelik Tarihi: 24.12.2005
Yer: Ankara
Mesaj: 165
Görsel: 3
Re: Çoklu dil desteği sağlayan web sitesi programlamak

Veritabanı mantığın şu şekilde olmalı bence;

1. Makaleler;
a_id (INT) (PK)
c_id (INT) (FK)
a_active (ENUM; true,false)

2. Kategoriler;
c_id (INT) (PK)
c_parent_id (INT) (FK)
c_active (ENUM; true,false)

3. Dil seçenekleri;
l_id (INT) (PK)
i_id (INT) (FK)
l_content (TEXT)
l_type (ENUM, c_title, c_description, a_title, a_content,.....)
l_language (ENUM; tr, en, de, fr, it, .....)



Burada 1. makaleler tablosunda ve 2. kategoriler tablosunda gördüğün gibi içerikle ilgili bir alan yer almıyor.
Örneğin bir makale ve kategori kaydı sadece şu verileri içerir;

Kod:
1. Makaleler;
a_id | c_id | a_status
 222    333   active

2. Kategori;
c_id | c_parent_id | c_status
333             0            active

3. Dil seçenekleri;
l_id | i_id | l_content                 | l_type         | l_language
 99   333   Kategori adı                c_title                 tr
100  333   Category name           c_title                en
101  222   Makale adı                   a_title                tr
102  222   Article name                a_title                en
103  222   Makale içeriği               a_content          tr
104  222   Article content            a_content          en

Umarım anlatabilmişimdir
__________________
onurkose.com

Mesaj nothingrows tarafından 25.12.2006 (14:28) yeniden düzenlendi.
nothingrows şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 25.12.2006   #4 (permalink)
 
s5prin's Avatar
 
Üyelik Tarihi: 16.12.2006
Yer: istanbul
Yaş: 26
Mesaj: 484
Re: Çoklu dil desteği sağlayan web sitesi programlamak

Bu biraz karışık geldi bana. Örneğin tek bir makale için şöyle verilerimiz var;

Kategori: Yemek (kategori tablosundan ID=6)
Makale Adı(TR): Yumurta Kırma Sanatı
Makale Adı(EN): Cooking Egg Art
Makale Adı(IT): Importante Gepassa
Makalenin kendisi(TR): İlk adım yumurtaları seçmeliyiz…
Makalenin kendisi(EN): First step to choosing the eggs…
Makalenin kendisi(IT): Egosso florentina mammamia…

Bunu senin söylediğin sistemde kaç tablo ve tablo satırı kullanarak yapacağız?

Arkadaşın dediği formatta sadece tek tablo ve SQL'deki SELECT sorgusunda
PHP Code:
$SQL="SELECT Kategori, Makale_Adi_$lang, Makale_$lang FROM.."
gibi bir sorgu ile tek seferde sadece istediğimiz veriyi alabiliyoruz.. ($lang doğal olarak "TR", "EN" gibi bir değişken.) Hatta tabloda boş kalan dil içeriği de herhangi bir yer meşgul etmiyor.
__________________
Spoiler:
s5prin şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 25.12.2006   #5 (permalink)
 
Üyelik Tarihi: 24.12.2005
Yer: Ankara
Mesaj: 165
Görsel: 3
Re: Çoklu dil desteği sağlayan web sitesi programlamak

Tabiki karışık olmalı

Şimdi bu gibi sistemleri şöyle ele almak gerekiyor; eğer bir web sitesini çok dilli tasarlayacaksanız ve çokun karşılığı size Türkçe ve İngilizce olarak kesin bir ifade ile belirtiliyorsa, evet @s3prin'in belirttiği gibi tek bir sorguda bunu halledebilirsin.

Fakat "sen hele Türkçe ve İngilizce olarak yapta, ileride tekrar bakarız" şeklinde bir müşteri ifadesi karşısında ise böyle bir veritabanı yapısı kullanmak aptallık olur. Çünkü yarın bir gün vatandaş "Fransaya'da ihracata başladık, aha bu tercüman aha bu da para" dediğinde ise sen tablolarına (makaleler, kategoriler, ürünler... vs.) sonu fr ile biten birer sütun daha eklersin.

Geniş düşünmek her zaman daha fazla zaman ve emek tasarrufu sağlar. Tarif ettiğim yapıda bir içerik için sınırsız tercüme imkanı var. Tek yapman gereken 3. Dil seçenekleri adıyla belirttiğim tabloya eklemek istediğin içeriği ekleyip l_language alanına hangi dilde olduğu girmek.

Bir de, mesele tek SQL ise;

Kod:
$sql_query = "SELECT * FROM `articles` a, `lang_base` l
WHERE ( a.`a_id` = 222 AND a.`a_status` = 'active' ) AND
( l.`i_id` = 222 AND l.`l_language` = '$lang' AND l.`l_type` = 'a_content' );
__________________
onurkose.com
nothingrows şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 25.12.2006   #6 (permalink)
 
Ashbringer's Avatar
 
Üyelik Tarihi: 14.12.2006
Yer: Trondheim
Mesaj: 45
Re: Çoklu dil desteği sağlayan web sitesi programlamak

Benim sitede kullandığım çok dil yöntemi şu şekilde, öncelikle sabit veriler için ayrı bir düzenek sürekli artan veriler için bi düzenek oluşturmalısın mesela sabit olanlardan kastım sitede bulunan buton isimleri hata mesajları vs onun için oluşturduğum tablo şu şekilde,

deger turkce ingilizce norsk
---------------------------------------------------------
CIKIS Çıkış Exit Utgang
ILERI İleri Forward Frem
GERI Geri Back Rygg

bunları fonksyionla istenilen bölgeden çağırıp gerekli alana yazdırabiliyorsun <%=DilGetir("CIKIS",Session("DIL"))%> gibi, eğer siteye yeni bir dil eklenecekse yeni bir stun ekleyip karşılıklarınıda dilde doldurabiliyorsun.

dinamik veriler içinse örneğin haber kısmı tabloya sadece dil stunu eklemen yeterli kayıt ederken dil stununa seçilen dil ID si eklenir sitedede ona göre gösterim yapılır, site içerisinde dil seçimini Sessionla yaparsın ben dilleri sayı olarak kullanıyorum 0=turkce 1=ingilizce vs hangi dili seçmişse sabit veriler Sessiondaki ID kolonundaki verileri çeker sayfalardada haberlerin sadece Sessiondaki ID'ye göre gelir, her tablo içine haber_tr, haber_ing vs gibi stunlar oluşturmaktansa ID yöntemi daha mantıklı olur gibime geliyor eğer programlama dilinin dinamik faydalarından yararlanmak isteniyorsa çünkü oldu ya yeni bir dil daha eklenmek istenebilir 300binlik bir makale arşivi düşünün ve ispanyolca stunu eklediniz hepsinin karşılığı boş çıkacaktır.
Ashbringer şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 26.12.2006   #7 (permalink)
 
absconder's Avatar
 
Üyelik Tarihi: 09.12.2000
Yer: istanbul
Yaş: 30
Mesaj: 1,973
Re: Çoklu dil desteği sağlayan web sitesi programlamak

eklemeyi unutmuşum, ilk mesajdaki yapıda yeni bir dil eklemeniz, tüm tablolarınızı elden geçirmeniz anlamına gelir. @nothingrows'un verdiği yapıda ise dil seçenekleri tablosuna kayıt eklemeniz (kategori için bir, yeni dilde yayınlanacak her makale için ise birer adet) yeterli olacaktır.

l_content alanının ntext yapılması unicode karakterler için çözüm oluşturacak, ENUM ile verilen alanların yeni bir tabloda tutulup bağlantı kurulması, ilişikisel veritabanı mantığına uygun şekilde olmasını sağlayacaktır.

biraz daha derli toplu hali eklerde görülebilir. article tablosundaki p_id ALLOW NULL olup, parent_id yi belirtmektedir. yeniden düzenlemeye vaktim olmadı.

not: @nothingrows, farklı olarak kategori ve makaleleri 2 tablo yapmaya gerek yokturi zaten ikisinin de parent'i vardır, parent'i NULL olan kayıtlar en üstteki kategorileri ifade eder.
Ekli Dosya(lar)
Dosya Uzantısı: jpg data.JPG (55.5 KB, 23 defa görüntülendi)
Dosya Uzantısı: jpg diagram.JPG (41.5 KB, 23 defa görüntülendi)
__________________
"oturduğum mahallenin yolları çamurluydu, boyalı ayakkabı giysem bile, o yollardan geçtikten sonra çamurlanmamaları mümkün değildi. hayatım da böyle." yılmaz güney
http://www.sipidik.com

Mesaj absconder tarafından 26.12.2006 (10:12) yeniden düzenlendi.
absconder şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 26.12.2006   #8 (permalink)
 
Üyelik Tarihi: 24.12.2005
Yer: Ankara
Mesaj: 165
Görsel: 3
Re: Çoklu dil desteği sağlayan web sitesi programlamak

@absconder, aslında benim yukarıda verdiğim örnekte iki şeyi açıklamayı unutmuşum. Birincisi ben burdaki kategori (c_id, c_parent_id) yapısını, sınırsız ağaç yapısı şeklinde kullanmak üzere oluşturmuştum (bkz. mutasyon.net en altta not olarak). zamanla bunu javascripte ve sorna PHP'ye aktardım (bkz. nothingrows.net). Böylece üst kategori - alt kategori mantığını sonsuza kadar devam ettirebiliyorsunuz ve tabiki burda da c_parent_id değeri 0 olanlar en üst kategorileri oluşturuyor.

İkinci konu ise şu şekilde; yine verdiğim örnekte makaleler tablosunu açıklarken bir c_id, yani makalenin ait olduğu kategori numarası yer alıyor. Ben bunu kendi sitemde böyle kullanmadım. Makale ve Kategori eşlemesini yapacak üçüncü bir index tablosu oluşturdum ve burada sadece iki sütuna yer verdim. Birisi a_id ve diğer c_id. Yani hangi makale, hangi kategoriye ait ise her satırda ikisinin id numaralarını giriyorum. Böylece bir makaleyi birden çok kategori altına ekleyebiliyorum.

@Komplo'nun merak ettiği asıl meseleden biraz uzaklaştık ama sanırım onun ve diğer arkadaşlar için faydalı bilgiler verebilmişizdir.

Not:
Alıntı:
@absconder;
@nothingrows'un verdiği yapıda ise dil seçenekleri tablosuna kayıt eklemeniz (kategori için bir, yeni dilde yayınlanacak her makale için ise birer adet) yeterli olacaktır.
Her kategori için bir değilde; aynı makaleler gibi, her dildeki kategori için birer adet daha satır eklenmeli.
__________________
onurkose.com
nothingrows şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 26.12.2006   #9 (permalink)
 
Komplo's Avatar
 
Üyelik Tarihi: 28.03.2003
Yer: İstanbul
Yaş: 24
Mesaj: 251
Görsel: 1
Re: Çoklu dil desteği sağlayan web sitesi programlamak

@absconder
Söylediklerine göre metinsel tüm değişkenleri (kategoriad, metinbaslik, metin vs.) ntext olarak belirlemem gerekiyor. Bu şekilde metin Arapça dahi olsa sanırım bir problem oluşmayacak.

@nothingrows
Cevapların için sağol. Beni büyük bir hatadan dönderdin. Sonradan dil eklenmesini olayını atlamıştım. Ama yinede önerilerinin bazı noktalarını çözemedim.

Söylediklerinizden yola çıkarak benimde basitçe hazırladığım bir örnek var. Burada 3 adet tablo var. Diller, Kategoriler, Metinler diye…

Diller
------
DilID
Dil

Kategoriler
------------
KategoriID
DilID
KategoriAd

Metinler
---------
MetinID
KategoriID
MetinBaslik
Metin


Şu anki durumda yanlış bir şey yok gibi. Birkaç veri ekledim ve altta da ekran görüntüsünü bulunmakta…
site içeriği x şehrini anlatan bir yapıda olacak. Camiler, kiliseler, müzeler vs. gibi kategorileri olacak. Bu kategoriye bağlı tarihi eserlerinde tanıtımı yapılacak…
Vakit ayırıp , cevap verenler için teşekkür ederim…
Ekli Dosya(lar)
Dosya Uzantısı: gif zoquetablolar.gif (23.4 KB, 29 defa görüntülendi)
Komplo şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 29.12.2006   #10 (permalink)
 
s5prin's Avatar
 
Üyelik Tarihi: 16.12.2006
Yer: istanbul
Yaş: 26
Mesaj: 484
Re: Çoklu dil desteği sağlayan web sitesi programlamak

Nerden açtınız bu konuyu? Ne gerek vardı sanki ne güzel muntazam bir şekilde tablolara her dil için 1'er tane field ekleyip yolumuza devam ediyorduk

Şaka bir yana;
@Komplo 3 gün boyunca bekledim ve "şurayı söyle yapsan" tarzı bir cevap gelmediği için sanırım tablo yapın uygulanabilir durumda. Böylelikle ben de şu an üzerinde çalıştığım bir yapıya ilişkin çoklu dil sorularıma geçiyorum izninle.

Öncelikle dil tablomuz:
l_id ; Code ; Lang_EN ; Lang_LO
"1" ; "en" ; "English" ; "English"
"2" ; "tr" ; "Turkish" ; "Türkçe"
...

Ve kolaydan başlıyorum; elimizde 1 adet meslekler tablosu var. Kullanıcıya < select > şeklinde gösterilecek:
oc_id ; Occupation
"1" ; "Academic"
"2" ; "Accounting"
"3" ; "Advertisement"
"4" ; "Arcitect"
"5" ; "Artist"
..

Bunu en basit şekliyle (diyeceğim ama aklıma TR, FR gibi field'ler eklemek geliyor yine) nasıl çoklu dil haline çevirebiliriz? (aşure yapmadan )

1. soru için şimdiden teşekkürler.
__________________
Spoiler:
s5prin şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Sponsorlu Bağlantılar
Zoque.Forum
Reklam
Yanıt

Etiketler

programlamak , sitesi , web , saglayan , destegi , dil , coklu


 
Zoque'a hoşgeldiniz!
Zoque 27.02.1999 tarihinde yayın hayatına başlamış, paylaşıma dayalı bir oluşumdur. Tasarım, teknoloji, web, kültür ve sanat ana başlıkları altında bilgi paylaşımı ve benzer değerlere sahip katılımcıların birbirleriyle iletişime girmelerine imkan sağlar. "Az ama Öz" sloganından yola çıkarak, kaliteli ve nitelikli katılımı temel alır.

Saygın ve ciddi bir ortamda yardımlaşmak, haberleşmek, kendi bildiklerini diğer katılımcılarla paylaşmak isteyen, oluşumumuza düzenli katılımda bulunacağı inancını taşıyan konuklarımızı üye olmaya davet ediyoruz. [ » ]


Üye Girişi:

En popüler ilk 100 etiket
Tag Cloud
acil adsl ajax almak arama araniyor ariyorum ariyoruz asp bilen bilgi bilgisayar blog calisma canon css div domain dosya eleman film