check()) { auth()->user()->setAttribute('locale', $locale)->save(); } else { $request->session()->put('locale', $locale); } } /** * Set locale and return home url. * * @param string $locale * @param \Illuminate\Http\Request $request * * @return string **/ public function home($locale, Request $request) { $this->setLocale($locale, $request); $url = config('language.url') ? url('/'.$locale) : url('/'); return redirect($url) ->withSuccess('Language Changed!'); } /** * Set locale and return back. * * @param string $locale * @param \Illuminate\Http\Request $request * * @return string **/ public function back($locale, Request $request) { $this->setLocale($locale, $request); $session = $request->session(); if (config('language.url')) { $previous_url = substr(str_replace(env('APP_URL'), '', $session->previousUrl()), 7); if (strlen($previous_url) == 3) { $previous_url = substr($previous_url, 3); } else { $previous_url = substr($previous_url, strrpos($previous_url, '/') + 1); } $url = rtrim(env('APP_URL'), '/').'/'.$locale.'/'.ltrim($previous_url, '/'); $session->setPreviousUrl($url); } return redirect($session->previousUrl()) ->withSuccess('Language Changed!'); } }