design

Laravel'de Localization: Çok Dilli Uygulama Geliştirme

April 4, 2025

"Bir dil bir insan, iki dil iki insan" demişler. Peki ya uygulamanız 10 dil konuşsaydı? Laravel'in güçlü localization sistemiyle çok dilli uygulamalar geliştirmek sandığınızdan daha kolay! İşte adım adım rehberimiz:


Neden Çok Dilli Uygulama? 🤔

  • Global kullanıcı kitlesi 🌎
  • SEO avantajları (Google farklı dil sürümlerini indeksler)
  • Kullanıcı deneyiminde artış ↗️
  • Rakiplerinize fark atma 🏆


1. Temel Kurulum 🛠️

Dil dosyalarınızı resources/lang dizinine yerleştirin:

/resources
    /lang
        /en
            messages.php
        /tr
            messages.php
        /de
            messages.php


Örnek dil dosyası (messages.php):

// resources/lang/en/messages.php
return [
    'welcome' => 'Welcome to our application!',
    'greeting' => 'Hello, :name!',
];


2. Dil Değiştirme Mekanizması 🔄

Middleware ile dil ayarı:

// app/Http/Middleware/SetLocale.php
public function handle($request, Closure $next)
{
    if (session()->has('locale')) {
        app()->setLocale(session()->get('locale'));
    }
    
    return $next($request);
}


Route tanımı:

Route::get('language/{locale}', function ($locale) {
    session()->put('locale', $locale);
    return redirect()->back();
})->name('language.switch');


Blade'de dil değiştirme butonları:

<a href="{{ route('language.switch', 'en') }}" class="flag-icon flag-icon-us"></a>
<a href="{{ route('language.switch', 'tr') }}" class="flag-icon flag-icon-tr"></a>



3. Uygulamada Translation Kullanımı 💡

Blade dosyalarında:

<h1>@lang('messages.welcome')</h1>
<p>{{ __('messages.greeting', ['name' => 'Ahmet']) }}</p>



Controller'da:

$welcomeMessage = trans('messages.welcome');


JSON dosyalarıyla (Vue/React için):

// resources/lang/en.json
{
    "Welcome": "Welcome to our app!"
}


4. Advanced Teknikler 🚀

Pluralization (Çoğul ifadeler)

// resources/lang/en/messages.php
return [
    'apples' => '{0} No apples|{1} One apple|[2,*] :count apples',
];

// Kullanım
echo trans_choice('messages.apples', 10); // "10 apples"


Vendor Paket Çevirileri

php artisan lang:publish


Veritabanından Çeviriler

// Özel Translation modeli kullanarak
$translation = Translation::where('key', 'welcome')
                 ->where('locale', app()->getLocale())
                 ->first();


5. SEO Best Practices 🔍

Hreflang Etiketleri:

<link rel="alternate" hreflang="en" href="https://example.com/en" />
<link rel="alternate" hreflang="tr" href="https://example.com/tr" />



URL Yapısı:

// Dil prefix'li route'lar
Route::prefix('{locale}')->group(function () {
    Route::get('/', [HomeController::class, 'index']);
});


Performans İpuçları ⚡

  • Cacheleme: php artisan config:cache
  • JSON çevirileri için @json directive kullanın
  • Blade komponentlerinde direkt dizi kullanmaktan kaçının

Dünyaya Açılın! 🌐

Laravel'in localization sistemi sayesinde çok dilli uygulamalar geliştirmek artık çocuk oyuncağı!
Hangi dilleri destekliyorsunuz? Yorumlarda paylaşın! 💬
Bir sonraki yazımız: 🚀 [Laravel'de API Versioning: Backward Compatibility] - API'nizi güncellerken eski istemcileri nasıl mutlu edersiniz?**

#Laravel #Localization #Multilingual #WebDevelopment #i18n

9 + 2 =