/** * @param Headers $headers * * @return string|null */ private function getBrowseAcceptLanguage(Headers $headers) { if ($headers->has('Accept-Language')) { /** @var AcceptLanguage $acceptLanguageHeader */ $acceptLanguageHeader = $headers->get('Accept-Language'); $locales = $acceptLanguageHeader->getPrioritized(); $languages = $this->config->getAvailableLanguages(); /** @var LanguageFieldValuePart $locale */ foreach ($locales as $locale) { // Loop through all locales, highest priority first if ($browserLang = \Locale::lookup($languages, $locale->getRaw())) { return $browserLang; } } } return null; }
private function prepareDisplayProperties($lang) { $locale = $this->config->findLocaleByLanguage($lang); $nameOfLanguage = \Locale::getDisplayName($lang, $locale); $nameOfCountry = \Locale::getDisplayLanguage($lang, \Locale::getDefault()); $countryCode = \Locale::getRegion($locale); return [$nameOfLanguage, $nameOfCountry, $countryCode]; }
/** * If shouldRedirectToRecognizedLanguage is enabled * or * If we are here: "/pl" and default language is different (ie. EN) * then set lang to router, to achieve all urls with this language * * @param MvcEvent $event * @param string $lang */ private function setLangToRouterIfLangIsDifferentFromDefaultLangOrShouldRedirectOptionIsEnabled(MvcEvent $event, $lang) { if ($this->config->shouldRedirectToRecognizedLanguage() || $lang !== $this->config->getDefaultLanguage()) { /** @var SimpleRouteStack $router */ $router = $event->getRouter(); $router->setDefaultParam('lang', $lang); } }
public function testConstructor_WithNotEmptyConfig_WhenShouldRedirectIsEnabled() { $testedObject = new LangConfig($this->prepareConfig(true)); $this->assertTrue($testedObject->shouldRedirectToRecognizedLanguage()); }