Exemple #1
0
 /**
  * Checks if a locale identifier is a real locale or not
  * Examples:
  * "en_XX" refers to "en", which returns true
  * "XX_yy" refers to "root", which returns false
  *
  * @param  string|Zend_Locale  $locale  Locale to check for
  * @param  boolean             $create  If true, create a default locale, if $locale is empty
  * @return false|string   false if given locale is not a locale, else the locale identifier is returned
  */
 public static function isLocale($locale, $create = false)
 {
     if (empty($locale) and $create === true) {
         $locale = new self();
     }
     if ($locale instanceof Zend_Locale) {
         return $locale->toString();
     }
     if (!is_string($locale)) {
         return false;
     }
     if (empty(self::$_auto)) {
         $temp = new self($locale);
         self::$_auto = $temp->getDefault(null, false);
         self::$_browser = $temp->getDefault(self::BROWSER, false);
         self::$_environment = $temp->getDefault(self::ENVIRONMENT, false);
     }
     if ($locale == 'auto') {
         $locale = self::$_auto;
     }
     if ($locale == 'browser') {
         $locale = self::$_browser;
     }
     if ($locale == 'environment') {
         $locale = self::$_environment;
     }
     if (is_array($locale)) {
         $locale = key($locale);
     }
     if (array_key_exists($locale, self::$_localeData)) {
         return $locale;
     } else {
         $locale = explode('_', $locale);
         if (array_key_exists($locale[0], self::$_localeData)) {
             return $locale[0];
         }
     }
     return false;
 }
Exemple #2
0
 /**
  * Internal function, returns a single locale on detection
  *
  * @param  string|Zend_Locale $locale (Optional) Locale to work on
  * @param  boolean            $strict (Optional) Strict preparation
  * @throws Zend_Locale_Exception When no locale is set which is only possible when the class was wrong extended
  * @return string
  */
 private static function _prepareLocale($locale, $strict = false)
 {
     if ($locale instanceof Zend_Locale) {
         $locale = $locale->toString();
     }
     if (is_array($locale)) {
         return '';
     }
     if (empty(self::$_auto) === true) {
         self::$_browser = self::getBrowser();
         self::$_environment = self::getEnvironment();
         self::$_breakChain = true;
         self::$_auto = self::getBrowser() + self::getEnvironment() + self::getDefault();
     }
     if (!$strict) {
         if ($locale === 'browser') {
             $locale = self::$_browser;
         }
         if ($locale === 'environment') {
             $locale = self::$_environment;
         }
         if ($locale === 'default') {
             $locale = self::$_default;
         }
         if ($locale === 'auto' or $locale === null) {
             $locale = self::$_auto;
         }
         if (is_array($locale) === true) {
             $locale = key($locale);
         }
     }
     // This can only happen when someone extends Zend_Locale and erases the default
     if ($locale === null) {
         require_once 'Zend/Locale/Exception.php';
         throw new Zend_Locale_Exception('Autodetection of Locale has been failed!');
     }
     if (strpos($locale, '-') !== false) {
         $locale = strtr($locale, '-', '_');
     }
     $parts = explode('_', $locale);
     if (!isset(self::$_localeData[$parts[0]])) {
         if (count($parts) == 1 && array_key_exists($parts[0], self::$_territoryData)) {
             return self::$_territoryData[$parts[0]];
         }
         return '';
     }
     foreach ($parts as $key => $value) {
         if (strlen($value) < 2 || strlen($value) > 3) {
             unset($parts[$key]);
         }
     }
     $locale = implode('_', $parts);
     return (string) $locale;
 }
Exemple #3
0
 /**
  * Internal function, returns a single locale on detection
  *
  * @param  string|Zend_Locale $locale (Optional) Locale to work on
  * @param  boolean            $strict (Optional) Strict preparation
  * @throws Zend_Locale_Exception When no locale is set which is only possible when the class was wrong extended
  * @return string
  */
 private static function _prepareLocale($locale, $strict = false)
 {
     if (is_array($locale)) {
         return '';
     }
     if (empty(self::$_auto) === true) {
         self::$_browser = self::getBrowser();
         self::$_environment = self::getEnvironment();
         self::$_auto = self::getBrowser() + self::getEnvironment() + self::getDefault();
     }
     if (!$strict) {
         if ($locale === 'browser') {
             $locale = self::$_browser;
         }
         if ($locale === 'environment') {
             $locale = self::$_environment;
         }
         if ($locale === 'default') {
             $locale = self::$_default;
         }
         if ($locale === 'auto' or empty($locale)) {
             $locale = self::$_auto;
         }
         if (is_array($locale) === true) {
             $locale = key($locale);
         }
     }
     // This can only happen when someone extends Zend_Locale and erases the default
     if (empty($locale)) {
         require_once 'Zend/Locale/Exception.php';
         throw new Zend_Locale_Exception('Autodetection of Locale has been failed!');
     }
     if (strpos($locale, '-') !== false) {
         $locale = strtr($locale, '-', '_');
     }
     return (string) $locale;
 }