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
 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());
 }