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!