Пример #1
0
 /**
  * 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);
 }
Пример #2
0
 /**
  * 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);
 }
Пример #3
0
 /**
  * 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;
 }
Пример #4
0
 /**
  * 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);
 }
Пример #5
0
 /**
  * @param ConfigInterface $localeConfig
  */
 public function __construct(ConfigInterface $localeConfig)
 {
     $this->allowedLocales = $localeConfig->getAllowedLocales();
 }
Пример #6
0
 /**
  * Constructor
  *
  * @param Zend_Locale $zendLocale
  * @param ConfigInterface $localeConfig
  */
 public function __construct(Zend_Locale $zendLocale, ConfigInterface $localeConfig)
 {
     $this->zendLocale = $zendLocale;
     $this->allowedLocales = $localeConfig->getAllowedLocales();
 }