Arkadaşlar merhaba. Php ile yaptığım siteye çoklu dil eklemek istiyorum. "Anasayfa", "Hakkımızda" gibi şeyler için dil dosyasını hazırlarım da, içerik için nasıl yapılır, onu bilemedim. Bir sitede bir kullanıcı aşağıdaki gibi yazmış ama ben tam anlayamadım.
sql de json olarak tut
sonra bır tane php dosyasına yazdır onuda json olarak sunucuda kaydet
guncelleme yaparsan o php dosyası guncellenır ve guncel json dosyasını sunucuya yenıden kaydeder
sql de json olarak tut ---- Buradan benim anladığım veri tabanında bir sütun aç. Json içeriğini buraya kaydet.
sonra bır tane php dosyasına yazdır onuda json olarak sunucuda kaydet ---- Veri tabanındaki json olan verileri .php sayfasına yazdır. Sonrasında bu veriyi sunucuya tekrar niye kaydediyoruz, daha da önemlisi form aracılığıyla yani textarea ile falan mı kaydetmemiz lazım.
guncelleme yaparsan o php dosyası guncellenır ve guncel json dosyasını sunucuya yenıden kaydeder ---- Güncellemeyi bu php sayfasında mı yapmam lazım.
Dediğim gibi içerikleri yani yazıları, mesela ilan numarası 110 olan bir emlak'ın açıklamasını farklı dillere nasıl çevirebilirim. Mesela aşağıdaki gibi bir açıklama olursa:
"Çevre sitelerdeki binalarda merkezi ısıtma sorunu mevcuttur ama bu binadaki dairelerin hiç birinde merkezi ısıtma sorunu yoktur" gibi bir açıklamayı inglizce, fransızca vs. fillere nasıl çevirebilirim. Sonuçta bir çok kişi tarafından emlak sitesine girilen verilerin dinamik olarak çevrilmesi gerekli. Veya sizin bir öneriniz var mı?
Php çoklu dil nasıl eklenir?
12
●412
- 15-07-2024, 18:15:38
- 15-07-2024, 18:28:35Anladığım kadarıyla url de example.com/tr/ , example.com/en/ gibi yapı kullanmayacaksın. Eğer öyleyse en basit yöntem bence şu:
(Örnek veriyorum blog ekleme sayfasındasın)
1) Blog ekleme sayfasında hangi dil için ekleneceğini selectbox, radio vb. ile seçtir.
2) Db de blog tablosunda dil diye bir sütun aç. (Blog eklerken TÜRKÇE seçildiyse dil sütununa TÜRKÇE ya da TR yazdırabilirsin)
3) Yönetim paneli bloglar listelemesinde dili yanına yazdırabilirsin
4) Site arayüzünde bir session oluştur, default TR olsun ya da tarayıcı diline göre seçsin
5) Blog detay sayfasında ve blogları listeleme sayfasında sessiondaki dil e göre sql sorgusunu güncelle. Örn: SELECT * FROM blogs WHERE dil='{$_SESSION['dil']}' gibi gibi
Zaten blog başlıkları slug url ye göre olacağı için sıkıntı çıkmaz. Mesela:
TR: example.com/blog/elma-nedir
EN: example.com/blog/what-is-apple
Böylece sınırsız dil ekleyebilirsin - 15-07-2024, 22:43:24Arkadaşlar mantığını kavrayamadım. Mesela "Anasayfa" kelimesini "Homepage" olarak gösterebilirim ama, Türkçe olarak eklenmiş bir içeriği mesela slayt'ın üstündeki slogan'ı İngilizce'ye veya Fransızca'ya nasıl çevirebilirim. Ben bir slayt resmi eklediğimde, resmin üstüne bir slogan ekliyorum. Slogan'ı eklerken, fransızcasını da mı eklemeliyim? Kafamda oturtamadım.
- 16-07-2024, 02:26:00Üyeliği durdurulduJSON olarak tutabilirsiniz. zaten veritabanindan cektiginiz zaman kayitli olan tum dilleri almis olacaksiniz. Burada eger "en" icin ceviri var ise bunu gosterirsin yok ise varsayilan bir dil olan "tr"yi gosterebilirsin. artik nasil bir seye ihtiyaciniz var ise.
Ornek olarak https://resim.remzikocak.com/admin/pages/1/edit bakabilirsiniz (E-Posta: hey@remzikocak.com, Sifre: password). Az cok bir fikir verecektir. - 16-07-2024, 19:24:00O zaman siteye ait bilgileri, bilgi eklerken hem Türkçe'sini hem de diğer dilleri farklı bir tablo oluşturarak yapacağım değil mi? Yani Türkçe için bir site bilgileri tablosu, Fransızca için bir tablo, Almanca için bir tablo değil mi? Bu bilgileri girerken hepsini bir seferde girip veri tabanına kaydetmek lazım değil mi?
En basitinden, menüye eklediğim bazı linklerin isimleri veri tabanından geliyor. Menüye gelecek ismi kullanıcı belirliyor. Tabi ki tek dropdown altındakiler yani. Mesela Satılık açılır menüsünün altındaki linklerden birisi "Arsa" linki. Ama kullanıcı "Arsa" ismi yerine "Arazi" ismini kullanabilir de. Nasıl yapmalıyım sizce. - 17-07-2024, 02:46:39Bu islem tamamen veritabani ile alakali.
Kural 1 veritabaninda json olarak tutmayiniz.
Kural 2 tabloda sütünlere veya tablolara yansıtmayıniz. Örnek ilan_adi_en , ilan_adi_tr şekilinde olmaz (use rows not columns) yada ilanlar_en tablosu, ilanlar_tr tablosu olmaz.
En etkili 2 yöntem var.
1. Diller tablosu olacak. Ilan tablosunda diller id ile baglayacaksiniz. Bu sefer farkli dillerde ilan eklediginizde farkli id verecektir onun önüni almak için ilan tablosundaki dil id sini btree olarak id yaninda ekleyeceksiniz. Yani
Id lang_id name
1 1 deneme
1 2 example
1 1 deneme (bu hata verir)
Şekilinde burada id primary ve otomatik id veriyor tekrarlanamaz. Ama btree olarak dil id sinide yanina eklediğiniz için tekrarlayabilir. Id ve dil id ikiside ayni olsa hata verir. Bunu php de yöneteceksiniz. Çok basit kural.
Böylelike id si 1 olanin farkli dillerini ayni tablodan çekebilirsiniz. Çok sorgu gerektirmez. Sadece where içinde hangi dil gerekiyorsa onu çağırır siniz.
Yöntem 2.
Burada toplam 3 tablo var dil, ilan, sözluk
Dil tablosu olacak. Bide sözluk tablosu olacak.
Sözluk tablosu.
dil_id ilan_id model value
1 1 name deneme
2 1 name example
Ilanin ismi aciklamasi model olarak kendiniz ayarlayacaksiniz. Burada sorgular veriler farkli tablolarda olacagi için bir zordur.
Ücretli destek için iletişime geçebilirsiniz. - 17-07-2024, 16:33:18Peki, birinci yöntem için soruyorum. Dil tablosunu nasıl kullanacağım. Yani hangi verileri ekleyeceğim. İlan tablosuna hangi sütunları eklemeliyim.
diltablosu
id, dil_id, içerik
gibi olacak değil mi?
Yalnız bu tabloyu her dil için mi yapacağım. Bir de şunu öğrenmek istiyorum. Verileri eklerken yani veri_ekle_form.php sayfasındayken
ilan adı,
ilan numarası,
ilan resmi,
ilan türü,
ilan fiyatı
gibi bilgileri hem Türkçe hem de diğer diller için de mi ekleyeceğim. Dil tablosundaki "içerik" kısmına hangi dilde içerik gelecek.
Ürünleri kayıt ettiğim veri tabanındaki bir tabloda aşağıdakilerin de içinde bulunduğu 250 adet alan var.
ilan adı,
ilan numarası,
ilan resmi,
ilan türü,
ilan fiyatı
Bu tabloya mı ekleyeyim dil_id sütununu. Kafam çok karıştı.