• 29-05-2024, 15:41:44
    #1
    Herkese iyi forumlar,
    Codeigniter 4 ile bir proje geliştiriyorum. Çoklu dil desteği eklemeye çalışıyorum fakat standart kendi yapısında yapabiliyorum.
    Örneğin hakkımızda sayfasına websitesi.com/hakkimizda şeklinde giriyorum fakat dil desteği ile beraber websitesi.com/tr/hakkimizda olarak girmek gerekiyor.
    Benim isteğim tam olarak şu; websitesi.com/hakkimizda veya /iletisim şeklinde girdiğim dizinler Türkçe (defaultLocale) ile çalışsın.
    Eğer url ye herhangi bir dil ön eki gelirse /en/hakkimizda & /en/iletisim bu sayfalar ingilizce route edilmesini nasıl sağlayabilirim?
  • 31-05-2024, 20:36:32
    #2
    Bu diller ve tüm veriler veritabanında ise:
    siteye dil eklemek fameworklerin işi değildir. Framework sana sadece altyapı verir. Controller Model ve en önemlisi Router.
    Bütün gelen istekleri index.php ye ve routerde de tek yere (fonksiyona) yönlendireceksin.
    websitesi.com/hakkimizda ve websitesi.com/tr/hakkimizda bu 2 istekde aynı yere gidecek.
    gelen istekden tr/hakkimizda yazıyı alıp explode edeceksin.
    sonuch bir dizin olucak. o dizinde ilk sırada diller ile eşleşdireceksin.
    işleşen dil varsa dizinde 2 sıraya bakıp hangi sayfa görüneceğini belirlersin.
    eşleşen dil yoksa standart dil alacak ve hangi sayfaya gideceğini belirlersin.
    Buradakı algoritma sana baglı.
  • 01-06-2024, 00:02:31
    #3
    yenilikci adlı üyeden alıntı: mesajı görüntüle
    Bu diller ve tüm veriler veritabanında ise:
    siteye dil eklemek fameworklerin işi değildir. Framework sana sadece altyapı verir. Controller Model ve en önemlisi Router.
    Bütün gelen istekleri index.php ye ve routerde de tek yere (fonksiyona) yönlendireceksin.
    websitesi.com/hakkimizda ve websitesi.com/tr/hakkimizda bu 2 istekde aynı yere gidecek.
    gelen istekden tr/hakkimizda yazıyı alıp explode edeceksin.
    sonuch bir dizin olucak. o dizinde ilk sırada diller ile eşleşdireceksin.
    işleşen dil varsa dizinde 2 sıraya bakıp hangi sayfa görüneceğini belirlersin.
    eşleşen dil yoksa standart dil alacak ve hangi sayfaya gideceğini belirlersin.
    Buradakı algoritma sana baglı.
    Değerli yorumunuz için teşekkür ederim hocam. 😊
  • 13-06-2024, 14:34:32
    #4
    fatbotter.com
    UfukYILDIZ adlı üyeden alıntı: mesajı görüntüle
    Herkese iyi forumlar,
    Codeigniter 4 ile bir proje geliştiriyorum. Çoklu dil desteği eklemeye çalışıyorum fakat standart kendi yapısında yapabiliyorum.
    Örneğin hakkımızda sayfasına websitesi.com/hakkimizda şeklinde giriyorum fakat dil desteği ile beraber websitesi.com/tr/hakkimizda olarak girmek gerekiyor.
    Benim isteğim tam olarak şu; websitesi.com/hakkimizda veya /iletisim şeklinde girdiğim dizinler Türkçe (defaultLocale) ile çalışsın.
    Eğer url ye herhangi bir dil ön eki gelirse /en/hakkimizda & /en/iletisim bu sayfalar ingilizce route edilmesini nasıl sağlayabilirim?

    Aşağıdaki adımları eksiksiz yaparsanız çok dilli codeigniter projeniz olacaktır.

    Örnek Route:

    $routes->get('/{locale}/hakkimizda', 'Home::hakkimizda');
    app/Config/app.php içinde $defaultLocale değişkeninize default dil değerinizi yazın. Örnek: tr

    public string $defaultLocale = 'tr';
    Ayrıca yine aynı dosya içinde kaç dil destekleyecekseniz $supportedLocales değişkeninde dizi olarak belirtmelisiniz.

    public array $supportedLocales = ['tr','en'];
    Ek olarak tarayıcı diline göre otomatik dil seçimi çalışsın isterseniz de $negotiateLocale değişkenine true değeri vermelisiniz.

    public bool $negotiateLocale = true;
    Şimdi de dil dosyalarımızı oluşturalım:

    App/Language dizini altına hangi dilleri istiyorsanız klasörlerini açın: tr ve en



    Bu dil klasörlerinin her ikisine de aynı isimde dosyalar oluşturmalısınız. Ayrından aynı meta keyler ile karşılıklarını girdiğiniz dizileri oluşturmalısınız:

    App/Language/tr dizini içinde home.php

    return [
    'menu' => [
    'about' => 'Hakkımızda'
    ]
    ];
    App/Language/en dizini içinde home.php

    return [
    'home' => [
    'about' => 'About Us'
    ]
    ];
    View dosyalarınızda da dil etiketlerinizi bu şekilde kullanacaksınız:

    lang("Home.menu.about")
  • 13-06-2024, 17:57:06
    #5
    lookout adlı üyeden alıntı: mesajı görüntüle
    Aşağıdaki adımları eksiksiz yaparsanız çok dilli codeigniter projeniz olacaktır.

    Örnek Route:

    $routes->get('/{locale}/hakkimizda', 'Home::hakkimizda');
    app/Config/app.php içinde $defaultLocale değişkeninize default dil değerinizi yazın. Örnek: tr

    public string $defaultLocale = 'tr';
    Ayrıca yine aynı dosya içinde kaç dil destekleyecekseniz $supportedLocales değişkeninde dizi olarak belirtmelisiniz.

    public array $supportedLocales = ['tr','en'];
    Ek olarak tarayıcı diline göre otomatik dil seçimi çalışsın isterseniz de $negotiateLocale değişkenine true değeri vermelisiniz.

    public bool $negotiateLocale = true;
    Şimdi de dil dosyalarımızı oluşturalım:

    App/Language dizini altına hangi dilleri istiyorsanız klasörlerini açın: tr ve en



    Bu dil klasörlerinin her ikisine de aynı isimde dosyalar oluşturmalısınız. Ayrından aynı meta keyler ile karşılıklarını girdiğiniz dizileri oluşturmalısınız:

    App/Language/tr dizini içinde home.php

    return [
    'menu' => [
    'about' => 'Hakkımızda'
    ]
    ];
    App/Language/en dizini içinde home.php

    return [
    'home' => [
    'about' => 'About Us'
    ]
    ];
    View dosyalarınızda da dil etiketlerinizi bu şekilde kullanacaksınız:

    lang("Home.menu.about")
    Detaylı açıklamanız için çok teşekkür ederim hocam.