Laravel
Laravel projesinde çoklu dil sistemi nasıl gerçekleştirilir?
Laravelde çoklu dil sistemi ile dillere göre karşılığını bir array içerisinde veya bir object içerisinde tutarak sitenize çoklu dil sistemini ekleyebilirsiniz.
Peki neler yapmalıyız adım adım bakalım;
1- php artisan make:middleware Language bir ara katman oluşturarak oturumda seçilen dilin ayarlanması ve her http isteği için yerel ayarın ayarlanması için oluşturuyoruz.
Language.php handle içerisinde aşağıdaki kod bloğuna göre düzenlemeliyiz.
public function handle($request, Closure $next)
{
if (Session()->has('applocale') AND array_key_exists(Session()->get('applocale'), config('languages'))) {
App::setLocale(Session()->get('applocale'));
}
else {
App::setLocale(config('app.fallback_locale'));
}
return $next($request);
}
\App\Http\Middleware\Language::class,
Oluşturdupumuz Language.php middleware Kernel.php içerisinde web => [ ] içerisine import etmeliyiz.
3- Dilleri bir yerden yönetmemiz için config klasörü içerisine languages.php isminde bir sayfa oluşturalım.
<?php
return [
'tr' => 'Türkiye',
'en' => 'English'
]
4- php artisan make:controller LanguageController diyerek bir controller oluşturuyoruz.
public function switchLang($lang)
{
if (array_key_exists($lang, Config::get('languages'))) {
Session::put('applocale', $lang);
}
return Redirect::back();
}
LanguageController içerisinde bu fonksiyonu ekliyoruz.
Burada parametreden gelen dili oturumda güncellenmesi işlemini gerçekleştiriyoruz.
5- Route::get('lang/{lang}', ['as' => 'lang.switch', 'uses' => 'App\Http\Controllers\LanguageController@switchLang']);
İstek atacağımız rotayı bu şekilde belirtiyoruz.
6- Kullanıcıya gösterilmesi için kullanılan blade alanınınızda
bu şekilde listeleyebilirsiniz.
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
{{ Config::get('languages')[App::getLocale()] }}
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
@foreach (Config::get('languages') as $lang => $language)
@if ($lang != App::getLocale())
<a class="dropdown-item" href="{{ route('lang.switch', $lang) }}"> {{$language}}</a>
@endif
@endforeach
</div>
</li>
0 Yorum
Yorum Bulunmuyor...