/** * Negotiates the application language. * * @param Request $request * @return string the chosen language */ protected function negotiateLanguage($request) { if (!empty($this->languageParam) && ($language = $request->get($this->languageParam)) !== null) { if (isset($this->languages[$language])) { return $this->languages[$language]; } foreach ($this->languages as $key => $supported) { if (is_int($key) && $this->isLanguageSupported($language, $supported)) { return $supported; } } return reset($this->languages); } foreach ($request->getAcceptableLanguages() as $language) { if (isset($this->languages[$language])) { return $this->languages[$language]; } foreach ($this->languages as $key => $supported) { if (is_int($key) && $this->isLanguageSupported($language, $supported)) { return $supported; } } } return reset($this->languages); }