For example, I log in and selected en
as my language and then I select zh
(chinese) and then log out. Is there any way to retain the localization after you log-out the app?
this is the way I implement locale.
web.php:
Route::post('change-locale', 'LocaleController@changeLocale')->name('change.locale');
LocaleController:
class LocaleController extends Controller
{
/**
* @param Request $request
*/
public function changeLocale(Request $request) {
$this->validate($request, ['locale' => 'required|in:' . implode(',', config('app.available_locales'))]);
Session::put('locale', $request->input('locale'));
return redirect()->back();
}
}
Logout:
public function logout(Request $request)
{
$this->guard()->logout();
$locale = session('locale');
$locale = Session::put('locale', $locale);
Session::flush();
//$request->session()->invalidate();
//$request->session()->put('locale',$locale);
return redirect('/login');
}
Locale Setting:
public function handle($request, Closure $next)
{
if (Session::has('locale')) {
$locale = Session::get('locale', Config::get('app.locale'));
} else {
$locale = substr($request->server('HTTP_ACCEPT_LANGUAGE'), 0, 2);
if (!in_array($locale, Config::get('app.available_locales'))) {
$locale = 'en';
}
}
App::setLocale($locale);
return $next($request);
}