I have a route:
Route::get(\'/setlocale/{locale}\', function($locale) {
App::setLocale($locale);
Try this way
Route::get('setlocale/{locale}',function($lang){
\Session::put('locale',$lang);
return redirect()->back();
});
protected $routeMiddleware = [
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'language' => \App\Http\Middleware\LanguageSwitcher::class,
];
'language' => \App\Http\Middleware\LanguageSwitcher::class,
Route::group(['middleware'=>'language'],function ()
{
//your translation routes
});
In middleware for every request we check if locale set in current session or not. if Session not having locale then for current request we set locale to config locale means in your app configuration locale
'locale' => 'en', // config/app.php
Session::put('locale',Config::get('app.locale')); // in middleware code we use Config method to get app configuration locale
App::setLocale(session('locale')); // finally set this to App locale
else if we have locale in current session then we set that to App locale
App::setLocale(session('locale')); // set this to App locale