/** * 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; }