Laravel 11 ile Çoklu Dil Desteği (Localization) Nasıl Kullanılır?

Laravel, uygulamalarınıza kolayca çoklu dil desteği eklemenizi sağlayan güçlü bir localization (yerelleştirme) sistemine sahiptir. Bu özellik sayesinde metinleri farklı dillerde gösterebilir, dinamik çeviri işlemleri gerçekleştirebilir ve uygulamanızın farklı bölgelerde kullanılabilir olmasını sağlayabilirsiniz.
Bu rehberde Laravel 11 ile çoklu dil desteğini nasıl kullanacağınızı öğreneceksiniz.
1. Laravel’de Localization Nedir?
Localization, bir uygulamanın farklı dillerde çalışmasını sağlayan bir mekanizmadır. Laravel’de bu işlem lang
dizini içinde bulunan çeviri dosyaları ile gerçekleştirilir.
Örnek dizin yapısı:
resources/ ├── lang/ │ ├── en/ │ │ ├── messages.php │ ├── tr/ │ │ ├── messages.php
Bu yapı sayesinde her dil için ayrı çeviri dosyaları oluşturabiliriz.
2. Dil Dosyalarını Oluşturma
İlk olarak, resources/lang/
dizini altında tr
(Türkçe) ve en
(İngilizce) klasörlerini oluşturun.
Daha sonra, bu klasörlerin içine messages.php
adlı bir dosya ekleyin.
English Çeviri Dosyası (resources/lang/en/messages.php):
return [ 'welcome' => 'Welcome to our application!', 'login' => 'Login', 'register' => 'Register', ];
Türkçe Çeviri Dosyası (resources/lang/tr/messages.php):
return [ 'welcome' => 'Uygulamamıza hoş geldiniz!', 'login' => 'Giriş Yap', 'register' => 'Kayıt Ol', ];
3. Çeviri Metinlerini Kullanma
Laravel’de çeviri metinlerini __()
ve trans()
fonksiyonları ile çağırabilirsiniz.
echo __('messages.welcome'); // Aktif dile göre çıktıyı döndürür echo trans('messages.login'); // Aynı şekilde çalışır
Blade şablonları içinde kullanımı:
{{ __('messages.welcome') }}
4. Kullanıcı Dilini Değiştirme
Kullanıcının dil tercihine göre uygulamayı ayarlamak için Laravel’in App::setLocale()
fonksiyonunu kullanabiliriz.
Örnek bir Middleware oluşturarak kullanıcı dilini değiştirelim.
php artisan make:middleware LanguageMiddleware
app/Http/Middleware/LanguageMiddleware.php dosyasını şu şekilde düzenleyin:
namespace App\Http\Middleware; use Closure; use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\Session; class LanguageMiddleware { public function handle($request, Closure $next) { if (Session::has('locale')) { App::setLocale(Session::get('locale')); } return $next($request); } }
Laravel 11’de middleware kayıt işlemi değiştiği için, artık middleware’i bootstrap/app.php dosyasında tanımlamamız gerekiyor:
// bootstrap/app.php dosyasına ekleyin $app->middleware([ App\Http\Middleware\LanguageMiddleware::class, ]);
Daha sonra, kullanıcının dili değiştirmesi için bir Route oluşturalım.
use Illuminate\Support\Facades\Session; use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\Route; Route::get('/lang/{locale}', function ($locale) { Session::put('locale', $locale); App::setLocale($locale); return redirect()->back(); });
Kullanıcılar artık /lang/tr
veya /lang/en
adresine giderek dillerini değiştirebilirler.
5. Varsayılan Dili Belirleme
Laravel’de varsayılan dili config/app.php
dosyasında belirleyebilirsiniz.
'locale' => 'en',
Eğer çoklu dil desteği sunmak istiyorsanız, desteklenen dilleri de ekleyebilirsiniz:
'supported_locales' => ['en', 'tr'],
6. JSON Dil Dosyaları ile Çeviri
Laravel, JSON dosyalarını kullanarak da çeviri işlemleri yapmanıza olanak tanır.
resources/lang/tr.json:
{ "Welcome": "Hoş Geldiniz", "Login": "Giriş Yap" }
Kullanımı:
echo __('Welcome'); // Eğer "tr" dili seçiliyse "Hoş Geldiniz" döner.
Sonuç
Laravel 11 ile çoklu dil desteğini nasıl kullanacağınızı öğrendiniz. Dil dosyaları, middleware ve yönlendirme sistemleri ile kullanıcılarınıza dinamik çeviri hizmeti sunabilirsiniz.
Bonus İpucu: Çeviri işlemlerini otomatik yapmak için Laravel Localization paketlerini de kullanabilirsiniz! 🚀
Geliştirmeye devam edin ve Laravel’in gücünü keşfedin! 💻