default_locale = $default_locale; $this->session = $session; $this->translator = $translator; } public function addLocalePart(Request $request) { //By default we use the global default locale $locale = $this->default_locale; //Check if a user has set a preferred language setting: $user = $this->getUser(); if (($user instanceof User) && !empty($user->getLanguage())) { $locale = $user->getLanguage(); } //Check if the user needs to change the password. In that case redirect him to settings_page if ($user instanceof User && $user->isNeedPwChange()) { $this->session->getFlashBag()->add('warning', $this->translator->trans('flash.password_change_needed')); return $this->redirectToRoute('user_settings', ['_locale' => $locale]); } //$new_url = str_replace($request->getPathInfo(), '/' . $locale . $request->getPathInfo(), $request->getUri()); $new_url = $request->getUriForPath('/' . $locale . $request->getPathInfo()); return $this->redirect($new_url); } }