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?
CodeIgniter 4 - Çoklu Dil (Multi-language) nasıl yaparım?
4
●156
- 29-05-2024, 15:41:44
- 31-05-2024, 20:36:32Bu 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:31Değerli yorumunuz için teşekkür ederim hocam. 😊yenilikci adlı üyeden alıntı: mesajı görüntüle
- 13-06-2024, 14:34:32UfukYILDIZ 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") - 13-06-2024, 17:57:06Detaylı açıklamanız için çok teşekkür ederim hocam.lookout adlı üyeden alıntı: mesajı görüntüle

