 (18).png)
Merhaba arkadaşlar, bugün sizlere Laravel ile çok dilli (multi-language) uygulama geliştirme konusunu anlatacağım. Günümüzde, kullanıcıların farklı dillerde içerik talep etmesi oldukça yaygın bir durum. Laravel, bu ihtiyacı karşılamak için kolayca çok dilli uygulamalar geliştirmenizi sağlayan güçlü bir yapı sunar. Gelin, bu süreci adım adım inceleyelim.
Laravel’de çok dilli uygulama geliştirmek için dil dosyaları ve locale (dil ayarı) yapısını kullanabilirsiniz. Bu yapı sayesinde, uygulamanızın farklı dillerde içerik sunmasını sağlayabilirsiniz.
Laravel’de dil dosyaları, resources/lang dizini altında bulunur. Varsayılan olarak, bu dizinde en (İngilizce) ve es (İspanyolca) gibi dil klasörleri bulunur. Yeni bir dil eklemek için, örneğin Türkçe için tr klasörü oluşturabilirsiniz.
Örnek Dil Dosyası:
// resources/lang/tr/messages.php
return [
'welcome' => 'Hoş Geldiniz',
'greeting' => 'Merhaba, :name!',
];
Bu dosyada, welcome ve greeting gibi anahtarlar ve bunlara karşılık gelen Türkçe metinler bulunur. :name gibi dinamik değerler kullanarak, kullanıcı adını metne ekleyebilirsiniz.
Laravel’de varsayılan dil ayarını config/app.php dosyasından yapılandırabilirsiniz. Örneğin, varsayılan dili
Türkçe olarak ayarlamak için:
'locale' => 'tr',
Ayrıca, uygulama içinde kullanıcının dil tercihine göre dil ayarını dinamik olarak değiştirebilirsiniz. Bunun için App::setLocale() metodunu kullanabilirsiniz.
Dil Ayarlarını Dinamik Olarak Değiştirme:
use Illuminate\Support\Facades\App;
public function changeLanguage($locale)
{
if (in_array($locale, ['en', 'tr', 'es'])) {
App::setLocale($locale);
}
return redirect()->back();
}
Bu kod, kullanıcının seçtiği dile göre uygulamanın dil ayarını değiştirir.
Blade template’de dil metinlerini kullanmak için __() veya @lang direktifini kullanabilirsiniz.
Örneğin, welcome mesajını göstermek için:
<h1>{{ __('messages.welcome') }}</h1>
Eğer dinamik bir değer kullanmak istiyorsanız, :name gibi yer tutucuları kullanabilirsiniz:
<p>{{ __('messages.greeting', ['name' => 'Ahmet']) }}</p>
Bu kod, "Merhaba, Ahmet!" şeklinde bir çıktı üretecektir.
Eğer uygulamanızda URL üzerinden dil değiştirmeyi desteklemek istiyorsanız, route’larda dil parametresi kullanabilirsiniz. Örneğin:
Route::get('/{locale}/welcome', function ($locale) {
App::setLocale($locale);
return view('welcome');
});
Bu route, /tr/welcome gibi bir URL ile Türkçe içerik veya /en/welcome gibi bir URL ile İngilizce içerik sunar.
Laravel, dil paketleri ve lokalizasyon işlemleri için birçok özellik sunar. Örneğin, tarih ve saat formatlarını kullanıcının diline göre ayarlamak için Carbon kütüphanesini kullanabilirsiniz.
Tarih ve Saat Formatı Örneği:
use Carbon\Carbon;
public function showDate()
{
App::setLocale('tr');
$date = Carbon::now()->format('d F Y');
return view('date', compact('date'));
}
Bu kod, Türkçe dil ayarına göre tarihi "15 Ekim 2023" şeklinde formatlar.
Laravel ile çok dilli uygulama geliştirmek, kullanıcıların farklı dillerde içerik talep etmesini karşılamanın en etkili yollarından biridir. Dil dosyaları, locale ayarları ve Blade template’de dil metinlerini kullanarak, uygulamanızı kolayca çok dilli hale getirebilirsiniz. Bir sonraki yazımda, Laravel’de File Upload ve Storage Yönetimi konusuna değineceğim. Görüşmek üzere!