例如,我登录并选择en
作为我的语言,然后选择zh
(中文),然后注销。在您注销应用程序后,有没有办法保留本地化?
这是我实现区域设置的方式。
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();
}
}
退出:
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');
}
区域设置:
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);
}
答案 0 :(得分:3)
如果您进入会话,那么您可以通过该值获得
$locale = Session::get('locale');
Session::flush();
Session::set('locale',$locale);
我做了什么,我使用会话全局助手获取会话值,你可以得到任何值
答案 1 :(得分:0)
我在Laravel 6中这样做:
添加到/app/Http/Controllers/Auth/LoginController.php 这两个功能:
public function logout(Request $request)
{
$locale = Session::get('locale');
$this->guard()->logout();
$request->session()->invalidate();
return $this->loggedOut($request, $locale) ?: redirect('/');
}
protected function loggedOut(Request $request, $locale)
{
Session::put('locale',$locale);
}
这使用:
use Illuminate\Http\Request;
use Session;