/** * Get options array for locale dropdown * * @param bool $translatedName translation flag * @return array */ protected function _getOptionLocales($translatedName = false) { $options = array(); $locales = $this->_localeResolver->getLocale()->getLocaleList(); $languages = $this->_localeResolver->getLocale()->getTranslationList('language', $this->_localeResolver->getLocale()); $countries = $this->_localeResolver->getLocale()->getTranslationList('territory', $this->_localeResolver->getLocale(), 2); $allowed = $this->_config->getAllowedLocales(); foreach (array_keys($locales) as $code) { if (strstr($code, '_')) { if (!in_array($code, $allowed)) { continue; } $data = explode('_', $code); if (!isset($languages[$data[0]]) || !isset($countries[$data[1]])) { continue; } if ($translatedName) { $label = ucwords($this->_localeResolver->getLocale()->getTranslation($data[0], 'language', $code)) . ' (' . $this->_localeResolver->getLocale()->getTranslation($data[1], 'country', $code) . ') / ' . $languages[$data[0]] . ' (' . $countries[$data[1]] . ')'; } else { $label = $languages[$data[0]] . ' (' . $countries[$data[1]] . ')'; } $options[] = array('value' => $code, 'label' => $label); } } return $this->_sortOptionArray($options); }
/** * Get options array for locale dropdown * * @param bool $translatedName translation flag * @return array * @SuppressWarnings(PHPMD.CyclomaticComplexity) */ protected function _getOptionLocales($translatedName = false) { $currentLocale = $this->localeResolver->getLocale(); $locales = \ResourceBundle::getLocales('') ?: []; $languages = (new LanguageBundle())->get($currentLocale)['Languages']; $countries = (new RegionBundle())->get($currentLocale)['Countries']; $options = []; $allowedLocales = $this->_config->getAllowedLocales(); foreach ($locales as $locale) { if (!in_array($locale, $allowedLocales)) { continue; } $language = \Locale::getPrimaryLanguage($locale); $country = \Locale::getRegion($locale); if (!$languages[$language] || !$countries[$country]) { continue; } if ($translatedName) { $label = ucwords(\Locale::getDisplayLanguage($locale, $locale)) . ' (' . \Locale::getDisplayRegion($locale, $locale) . ') / ' . $languages[$language] . ' (' . $countries[$country] . ')'; } else { $label = $languages[$language] . ' (' . $countries[$country] . ')'; } $options[] = ['value' => $locale, 'label' => $label]; } return $this->_sortOptionArray($options); }
/** * Validate locale code. Code must be in the list of allowed locales. * * @param string $localeCode * @return bool * * @api */ public function isValid($localeCode) { $isValid = true; $allowedLocaleCodes = $this->_localeConfig->getAllowedLocales(); if (!$localeCode || !in_array($localeCode, $allowedLocaleCodes)) { $isValid = false; } return $isValid; }
/** * Get options array for locale dropdown * * @param bool $translatedName translation flag * @return array * @SuppressWarnings(PHPMD.CyclomaticComplexity) */ protected function _getOptionLocales($translatedName = false) { $options = []; $locales = $this->_localeResolver->getLocale()->getLocaleList(); $languages = $this->_localeResolver->getLocale()->getTranslationList('language', $this->_localeResolver->getLocale()); $countries = $this->_localeResolver->getLocale()->getTranslationList('territory', $this->_localeResolver->getLocale(), 2); //Zend locale codes for internal allowed locale codes $allowed = $this->_config->getAllowedLocales(); $allowedAliases = []; foreach ($allowed as $code) { $allowedAliases[\Zend_Locale::getAlias($code)] = $code; } //Process translating to internal locale codes from Zend locale codes $processedLocales = []; foreach ($locales as $code => $active) { if (array_key_exists($code, $allowedAliases)) { $processedLocales[$allowedAliases[$code]] = $active; } else { $processedLocales[$code] = $active; } } foreach (array_keys($processedLocales) as $code) { if (strstr($code, '_')) { if (!in_array($code, $allowed)) { continue; } $data = explode('_', $code); if (!isset($languages[$data[0]]) || !isset($countries[$data[1]])) { continue; } if ($translatedName) { $label = ucwords($this->_localeResolver->getLocale()->getTranslation($data[0], 'language', $code)) . ' (' . $this->_localeResolver->getLocale()->getTranslation($data[1], 'country', $code) . ') / ' . $languages[$data[0]] . ' (' . $countries[$data[1]] . ')'; } else { $label = $languages[$data[0]] . ' (' . $countries[$data[1]] . ')'; } $options[] = ['value' => $code, 'label' => $label]; } } return $this->_sortOptionArray($options); }
/** * @param ConfigInterface $localeConfig */ public function __construct(ConfigInterface $localeConfig) { $this->allowedLocales = $localeConfig->getAllowedLocales(); }
/** * Constructor * * @param Zend_Locale $zendLocale * @param ConfigInterface $localeConfig */ public function __construct(Zend_Locale $zendLocale, ConfigInterface $localeConfig) { $this->zendLocale = $zendLocale; $this->allowedLocales = $localeConfig->getAllowedLocales(); }