public function __invoke()
 {
     if (!$this->config->getAvailableLanguages()) {
         return '';
     }
     /** @var PhpRenderer $view */
     $view = $this->getView();
     $appLang = $this->config->findLanguageByLocale(\Locale::getDefault());
     list($params, $routeName) = $this->prepareParamsAndRouteName();
     $languages = '';
     foreach ($this->config->getAvailableLanguages() as $lang) {
         list($nameOfLanguage, $nameOfCountry, $countryCode) = $this->prepareDisplayProperties($lang);
         $params = $this->prepareLanguageInParams($params, $lang);
         $url = $view->url($routeName, $params);
         $liClass = '';
         if ($lang === $appLang) {
             $liClass = ' class="disabled"';
         }
         $languages .= str_replace(['{url}', '{nameOfLanguage}', '{nameOfCountry}', '{countryCode}', '{liClass}'], [$url, $nameOfLanguage, $nameOfCountry, $countryCode, $liClass], $this->getElementTemplate());
     }
     $selectedLanguage = \Locale::getDisplayName($appLang);
     $countryCode = \Locale::getRegion($this->config->findLocaleByLanguage($appLang));
     $template = str_replace(['{availableLanguages}', '{currentLanguage}', '{currentCountryCode}'], [$languages, $selectedLanguage, $countryCode], $this->getMainTemplate());
     return $template;
 }
Exemple #2
0
 /**
  * @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;
 }
Exemple #3
0
 public function testConstructor_WithNotEmptyConfig_WhenShouldRedirectIsDisabled()
 {
     $testedObject = new LangConfig($this->prepareConfig(false));
     $this->assertSame('en', $testedObject->getDefaultLanguage());
     $this->assertSame('en_GB', $testedObject->getDefaultLocale());
     $this->assertSame(['de', 'en', 'pl', 'pt-br'], $testedObject->getAvailableLanguages());
     $this->assertSame('de', $testedObject->findLanguageByLocale('de_DE'));
     $this->assertSame('pt_BR', $testedObject->findLocaleByLanguage('pt-br'));
     $this->assertFalse($testedObject->shouldRedirectToRecognizedLanguage());
 }