Laravel'de Çoklu Dil Desteği

Laravel'de Çoklu Dil Desteği

Çoklu dil desteği, bir uygulamanın birden fazla dilde içerik sunabilme yeteneğidir. Kullanıcıların tercih ettikleri dillerde uygulamayı kullanmalarına olanak tanır. Bu sayede her kullanıcı kendi tercih ettiği dili kullanmakta özgür olur.

2. Ne için Gereklidir?

  • Kullanıcı deneyimini artırmak.
  • Farklı coğrafi bölgelerdeki kullanıcılara ulaşmak.
  • Erişilebilirliği artırmak.

3. Laravel'de Çoklu Dil Desteğinin Avantajları

  • Kolay yapılandırma ve yönetim.
  • Yerelleştirme (localization) desteği ile dinamik içerik sunma.
  • Geliştiriciler için esneklik ve ölçeklenebilirlik.

4. Nasıl Kullanılır?

  • Dil Dosyalarının Oluşturulması: resources/lang dizininde dil dosyaları oluşturun. Örneğin, en/messages.php ve tr/messages.php.
  • Dil Dosyası Örneği:
    // resources/lang/en/messages.php
    return [
        'welcome' => 'Welcome to our application!',
    ];
    
    // resources/lang/tr/messages.php
    return [
        'welcome' => 'Uygulamamıza hoş geldiniz!',
    ];

    5. Kullanıcı Tercihlerini Oturumda Saklama

    1. Dil Değiştirme İşlemi

    Kullanıcı dilini değiştirdiğinde, seçilen dili oturumda saklamak için bir route ve controller oluşturmalısınız.

    Rota Tanımı:

    // routes/web.php
    Route::post('/change-language', [LanguageController::class, 'change'])->name('change.language');

    2. Controller Oluşturma

    Dil değişimini yönetecek bir controller oluşturun.

    Controller Örneği:

    // app/Http/Controllers/LanguageController.php
    namespace App\Http\Controllers;
    
    use Illuminate\Http\Request;
    
    class LanguageController extends Controller
    {
        public function change(Request $request)
        {
            // Kullanıcının seçtiği dili oturumda saklayın
            $request->session()->put('locale', $request->language);
    
            // Kullanıcının seçtiği dile göre uygulamanın dilini ayarlayın
            app()->setLocale($request->language);
    
            // Kullanıcıyı önceki sayfaya yönlendirin
            return redirect()->back();
        }
    }

    3. Dil Seçimini Oturumdan Alma

    Uygulamanızın dilini oturumda saklanan değere göre ayarlamak için, AppServiceProvider içinde bir boot metodu ekleyebilirsiniz.

    AppServiceProvider Örneği:

    // app/Providers/AppServiceProvider.php
    namespace App\Providers;
    
    use Illuminate\Support\ServiceProvider;
    use Illuminate\Support\Facades\App;
    
    class AppServiceProvider extends ServiceProvider
    {
        public function boot()
        {
            // Oturumda saklanan dil varsa, uygulamanın dilini ayarlayın
            if (session()->has('locale')) {
                App::setLocale(session('locale'));
            }
        }
    
        public function register()
        {
            //
        }
    }

    4. Dil Değiştirme Formu

    Dil değiştirme formunu, önceki yanıtta verdiğimiz gibi oluşturabilirsiniz. Bu form, kullanıcının dil tercihini değiştirmesine olanak tanır.

    Örnek Form:

    <form action="{{ route('change.language') }}" method="POST">
        @csrf
        <select name="language" onchange="this.form.submit()">
            <option value="en" {{ session('locale') == 'en' ? 'selected' : '' }}>English</option>
            <option value="tr" {{ session('locale') == 'tr' ? 'selected' : '' }}>Türkçe</option>
        </select>
    </form>

    Bu adımları takip ederek, kullanıcıların dil tercihlerini oturumda saklayabilir ve her ziyaretlerinde bu tercihleri koruyabilirsiniz.