أفضل طريقة هي حفظ اللغة بـ Session
فنقوم بإنشاء التوجيه الآتي لتغيير اللغة وحفظ القيمة بـ session
Route::get('lang/{locale}', function ($locale) {
if (! in_array($locale, ['en', 'ar'])) {
return Redirect()->back();
}
session(['Locale'=>$locale]);
return Redirect()->back();
})->name('Lang');
ثمّ نقوم بإنشاء Middleware باسم CheckLang ويحتوي على
public function handle($request, Closure $next){
if(session()->has('Locale')){
App::setLocale(session('Locale'));
}
return $next($request);
}
وتعريف الـ Middleware الجديد في ملف app/Http/kernal.php
protected $routeMiddleware = [
[...]
'checkLang' => \Illuminate\Auth\Middleware\CheckLang::class,
];
ثمّ تطبيق CheckLang على جميع التوجيهات في المشروع
ليصبح كالآتي:
Route::middleware(['checkLang'])->group(function () {
// Routes
});
وللتنقل بين اللغات نضيف الرابط التالي لكل لغة في الموقع
<a href="{{ route('lang', ['locale' => 'ar']) }}">اللغة العربية</a>
<a href="{{ route('lang', ['locale' => 'en']) }}">اللغة الإنجليزية</a>