• 15-07-2024, 18:15:38
    #1
    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ı?
  • 15-07-2024, 18:19:53
    #2
    En sağlıklı yöntem json kullanmak
  • 15-07-2024, 18:27:02
    #3
    Hee tabloda dil diye bir sütun oluşturun. Daha sonra dil ayarlarını kodlarını yazın ve bunu admin panelde de temada da session ile tutun. Tabloya veri eklerken ya da düzenlerken dil sütununa sessiondaki dili yazdırın. Temada da dili sessiona göre çekin.
  • 15-07-2024, 18:28:35
    #4
    Anladığı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:24
    #5
    Arkadaş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
    #6
    Üyeliği durduruldu
    JSON 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:00
    #7
    O 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:39
    #8
    Bu 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:18
    #9
    Peki, 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ı.