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")