Önce hangi dilleri destekleyeceğimizin bir listesini yapıyoruz. Mesela:
$available_locales = ['en', 'tr', 'fr'];
Bu listeyi "hangi dillerle oynuyoruz" diye PHP’ye göstermek için kullanacağız.
Şimdi sıradaki görevimiz, URL’nin başında "/tr" gibi bir dil kodu var mı diye bakmak. Eğer varsa, harika.
$uri = $_SERVER['REQUEST_URI'];
$segments = explode('/', trim($uri, '/'));
$locale = $segments[0];
if (in_array($locale, $available_locales)) {
array_shift($segments);
} else {
$locale = 'en';
}
$path = '/' . implode('/', $segments);
Şimdi, hangi dili seçtiysek ona göre uygulamanın dilini ayarlayalım. Türkçe mi? Fransızca mı? Ne istiyorsak:
setlocale(LC_ALL, $locale);
bindtextdomain('messages', "./locale");
textdomain('messages');
Buraya kadar geldik, artık kullanıcı nereye gitmek istiyorsa oraya yönlendirme yapabiliriz. Hangi yol nerede? Kimin yolu açık?
switch ($path) {
case '/about':
include 'pages/about.php';
break;
case '/contact':
include 'pages/contact.php';
break;
default:
include 'pages/404.php';
break;
}
Sayfa içinde bağlantı verirken dil kodunu eklemeyi unutma. Yoksa kullanıcı "ben nereye geldim?" der. Onu da şu şekilde yapıyoruz:
$current_locale = $locale;
echo 'About Us';
Eğer "Ben PHP yazmayayım, modern takılayım" diyorsan Laravel burada kurtarıcı rolünde. Laravel'de rotalara dil kodlarını eklemek çocuk oyuncağı. Bakarsın bir gün, "Ben Laravel kullanacağım" dersin, o zaman işin daha da kolaylaşır, bilgin olsun.
Kaynaklar
- Laravel Daily. Multi-Language Routes And Locales With Auth. Alındığı Tarih: 17 Kasım 2024. Alındığı Yer: Laravel Daily | Arşiv Bağlantısı