• 27-12-2022, 20:02:55
    #1
    Evet. PHP ile çoklu dil desteği olan bir site geliştirmek istiyorum. Çoklu dil mantığını PHP 'de az çok biliyorum. Örneğin statik bir sitenin hem İngilizce hem de Türkçe dilli görüntülenmesini sağlayabiliyorum fakat admin panelli olan; dinamik olarak veritabanından veri ekleyip çekebildiğimiz sitelerde bu çoklu dil desteğini nasıl yapabiliriz ? Mantığını anlamamda yardımcı olabilir misiniz?
    • website
    website bunu beğendi.
    1 kişi bunu beğendi.
  • 27-12-2022, 23:07:51
    #2
    "Admin panelli" olarak nitelendirdiğiniz hazır frameworklar mı (Laravel, CodeIgniter), yoksa sizin kendi fonksiyon ve sınıflarınızla oluşturduğunuz dinamik web sitelerimi?
  • 28-12-2022, 02:07:16
    #3
    QuarkChain adlı üyeden alıntı: mesajı görüntüle
    "Admin panelli" olarak nitelendirdiğiniz hazır frameworklar mı (Laravel, CodeIgniter), yoksa sizin kendi fonksiyon ve sınıflarınızla oluşturduğunuz dinamik web sitelerimi?
    bildiğimiz wordpress gibi içerik yönetim sistemlerinde de olan admin paneli. Aynı zamanda bazı özel yazılımlarda da bulunan admin panel özelliğinden bahsediyordum.
  • 28-12-2022, 02:16:21
    #4
    Aynı mantık. siteye eklerken mesela multi dil bir blog yapacaksın. Blog yazısı eklerken hem İngilizce hem Türkçe ekledin diyelim. Veritabanından ilgili postu yazdırırken if else ile dili kontrol edip ona göre postu yazdıracaksın.
  • 28-12-2022, 02:29:36
    #5
    Blog yazısı eklerken hem İngilizce hem Türkçe ekledin diyelim. Veritabanından ilgili postu yazdırırken if else ile dili kontrol edip ona göre postu yazdıracaksın.
  • 28-12-2022, 02:44:19
    #6
    Misafir adlı üyeden alıntı: mesajı görüntüle
    Evet. PHP ile çoklu dil desteği olan bir site geliştirmek istiyorum. Çoklu dil mantığını PHP 'de az çok biliyorum. Örneğin statik bir sitenin hem İngilizce hem de Türkçe dilli görüntülenmesini sağlayabiliyorum fakat admin panelli olan; dinamik olarak veritabanından veri ekleyip çekebildiğimiz sitelerde bu çoklu dil desteğini nasıl yapabiliriz ? Mantığını anlamamda yardımcı olabilir misiniz?
    Şimdilik aklıma gelen 4 yöntemi yazacağım. Gerisi senin hayal gücüne ve azmine bağlı olarak gelişebilir.

    1. Yöntem
    Statik çoklu dil. Önce dilleri belirleyeceksin daha sonra veritabanında nasıl baslik - icerik diye tablo oluşturuyorsan baslik_en - icerik_en gibi tablolar oluşturup kaydetme alanındada bunlar için dil inputları oluşturacaksın. Tabmenü mantığında yaparsan inputlar karışmamış olur ve güzel bir görüntü elde edersin.

    2. Yöntem
    Bu yöntemde içerikleri tamamen ayrı ayrı ekletme yöntemi. Oluşturduğun veritabanında çoklu dil özelliğine sahip olan tüm tablolara bir sütun daha ekliyorsun dil diye daha sonra ekleme yaparken ya dropdown'dan içeriğin hangi dilde ekleneceğini yada sessionda tuttuğun dilin id'sini bu sütuna ekleticeksin. Bu yöntemde her dil için içeriği birden fazla ekleme yapman gerekir.

    3. Yöntem
    Bunu anca benim gibi manyaklar yapar ama ben genede yazayım. Tek dilde veritabanı oluşturur gibi veritabanını oluşturuyorsun. Ekleme yapacağın zaman panelde sınırsız olarak eklediğin dilleri ekleme yapacağın sayfada döndüreceksin. Bu döngü sadece dil değiştiğinde değişecek olan alanlar için olacak. Örnek olarak resim pdf vb alanları bunun içerisine koymana gerek yok. Sen dilleri döndürme işlemini uyguladığında ne input eklersen her dilde aynı input eklenecektir zaten. Buradaki verileri json_encode işleminden geçirerek veritabanındaki ilgili sütuna ekleticeksin. Burada dikkat etmen gereken şey bir array oluşacağı için name'lere name_adi[dil_kodu] şeklinde dönen dilin kodunu ekletmek olacak. Bu konu karmaşık gözüksede piyasada bunu kullanan bir script görmedim belki 1 tane vardır onun dışında ben bu kafada yapmıştım en son panelimi. Başta yorucu ama kurguda çok mantıklı gözüküyor bu yol.

    4. Yöntem
    Bu yöntem 2. ve 3. yönteme benziyor ama farkı mevcut. Panelden eklettiğin dilleri içerik ekleme formunda yine tabmenu ile döngüye alacaksın 3. yöntem ile aynı mantıkta gidiyor bu kısım. Bunun 2. yönteme benzeyen tek tarafı şudur ki veritabanı kısmında örnek veriyorum products tablosu açıyorsan burada sadece resim yada sayısal değerler tutup product_desc tablosuna içerikleri tek tek ekleteceksin. Yazı olan tablolarda dil_kodu sütununu eklemeyi unutma. Dil koduna yada Dil id'sine göre foreach ile yazıları ayrı ayrı ekleme işlemi yaptıracaksın. product_desc tablosunda aynı olacak tek bir sütun koyacaksın oda product_id sütunu. Verilere ulaşmak için bu sütundan faydalanacaksın. Sessiondaki dil kodu yada dil id si ne barındırıyorsan onuda sorgu içine ekleyip product_id şu olan verinin şu dil kodu yada idli verisini çek.


    Yazdıklarım sana tamamen saçma gelebilir. Ben ilk yöntemi yapmadım. 2. 3. ve 4. yöntemleri kimse bana söylemedi yada açık bir kaynak bulamadım bununla alakalı yaptığım dönemde. 2. yöntemi oturup kendim tasarladım ve kodladım ( örnek yoktu kimsenin emeğinede göz dikmeden düşünüp geliştirdim ). 3. yöntemi son yaptığım panelde kullandım muazzam oldu ama sonunda fanteziye kaçınca panel karman çorman oldu. Ön kısımda çok sıkıntısını çektim çözüm yollarını buldum felan lakin tavsiye etmiyorum 4. yöntemi opencartın sistemini incelerken gördüm en basit yöntemin 4 olduğunu anladım ve aptallığımın farkına o zaman vardım.

    En güzel kaynak opencart olur senin için yapısını vs çok kafana takma model ve controller dosyalarından aynı olan dosyaları bul view kısmında nasıl işlediğine bak kısa sürede farkına varacaksın nasıl yapıldığının.

    Kolay gelsin.