• Main Page
  • Related Pages
  • Namespaces
  • Data Structures
  • Files
  • Examples
  • File List

E:/E/GEAMP/www/openbiz/openbiz/others/Zend/Locale.php

00001 <?php
00030 class Zend_Locale
00031 {
00037     private static $_localeData = array(
00038         'root'  => true, 'aa_DJ' => true, 'aa_ER' => true, 'aa_ET' => true, 'aa'    => true,
00039         'af_NA' => true, 'af_ZA' => true, 'af'    => true, 'ak_GH' => true, 'ak'    => true,
00040         'am_ET' => true, 'am'    => true, 'ar_AE' => true, 'ar_BH' => true, 'ar_DZ' => true,
00041         'ar_EG' => true, 'ar_IQ' => true, 'ar_JO' => true, 'ar_KW' => true, 'ar_LB' => true,
00042         'ar_LY' => true, 'ar_MA' => true, 'ar_OM' => true, 'ar_QA' => true, 'ar_SA' => true,
00043         'ar_SD' => true, 'ar_SY' => true, 'ar_TN' => true, 'ar_YE' => true, 'ar'    => true,
00044         'as_IN' => true, 'as'    => true, 'az_AZ' => true, 'az'    => true, 'be_BY' => true,
00045         'be'    => true, 'bg_BG' => true, 'bg'    => true, 'bn_BD' => true, 'bn_IN' => true,
00046         'bn'    => true, 'bo_CN' => true, 'bo_IN' => true, 'bo'    => true, 'bs_BA' => true,
00047         'bs'    => true, 'byn_ER'=> true, 'byn'   => true, 'ca_ES' => true, 'ca'    => true,
00048         'cch_NG'=> true, 'cch'   => true, 'cop'   => true, 'cs_CZ' => true, 'cs'    => true,
00049         'cy_GB' => true, 'cy'    => true, 'da_DK' => true, 'da'    => true, 'de_AT' => true,
00050         'de_BE' => true, 'de_CH' => true, 'de_DE' => true, 'de_LI' => true, 'de_LU' => true,
00051         'de'    => true, 'dv_MV' => true, 'dv'    => true, 'dz_BT' => true, 'dz'    => true,
00052         'ee_GH' => true, 'ee_TG' => true, 'ee'    => true, 'el_CY' => true, 'el_GR' => true,
00053         'el'    => true, 'en_AS' => true, 'en_AU' => true, 'en_BE' => true, 'en_BW' => true,
00054         'en_BZ' => true, 'en_CA' => true, 'en_GB' => true, 'en_GU' => true, 'en_HK' => true,
00055         'en_IE' => true, 'en_IN' => true, 'en_JM' => true, 'en_MH' => true, 'en_MP' => true,
00056         'en_MT' => true, 'en_NA' => true, 'en_NZ' => true, 'en_PH' => true, 'en_PK' => true,
00057         'en_SG' => true, 'en_TT' => true, 'en_UM' => true, 'en_US' => true, 'en_VI' => true,
00058         'en_ZA' => true, 'en_ZW' => true, 'en'    => true, 'eo'    => true, 'es_AR' => true,
00059         'es_BO' => true, 'es_CL' => true, 'es_CO' => true, 'es_CR' => true, 'es_DO' => true,
00060         'es_EC' => true, 'es_ES' => true, 'es_GT' => true, 'es_HN' => true, 'es_MX' => true,
00061         'es_NI' => true, 'es_PA' => true, 'es_PE' => true, 'es_PR' => true, 'es_PY' => true,
00062         'es_SV' => true, 'es_US' => true, 'es_UY' => true, 'es_VE' => true, 'es'    => true,
00063         'et_EE' => true, 'et'    => true, 'eu_ES' => true, 'eu'    => true, 'fa_AF' => true,
00064         'fa_IR' => true, 'fa'    => true, 'fi_FI' => true, 'fi'    => true, 'fil_PH'=> true,
00065         'fil'   => true, 'fo_FO' => true, 'fo'    => true, 'fr_BE' => true, 'fr_CA' => true,
00066         'fr_CH' => true, 'fr_FR' => true, 'fr_LU' => true, 'fr_MC' => true, 'fr_SN' => true,
00067         'fr'    => true, 'fur_IT'=> true, 'fur'   => true, 'ga_IE' => true, 'ga'    => true,
00068         'gaa_GH'=> true, 'gaa'   => true, 'gez_ER'=> true, 'gez_ET'=> true, 'gez'   => true,
00069         'gl_ES' => true, 'gl'    => true, 'gsw_CH'=> true, 'gsw'   => true, 'gu_IN' => true,
00070         'gu'    => true, 'gv_GB' => true, 'gv'    => true, 'ha_GH' => true, 'ha_NE' => true,
00071         'ha_NG' => true, 'ha_SD' => true, 'ha'    => true, 'haw_US'=> true, 'haw'   => true,
00072         'he_IL' => true, 'he'    => true, 'hi_IN' => true, 'hi'    => true, 'hr_HR' => true,
00073         'hr'    => true, 'hu_HU' => true, 'hu'    => true, 'hy_AM' => true, 'hy'    => true,
00074         'ia'    => true, 'id_ID' => true, 'id'    => true, 'ig_NG' => true, 'ig'    => true,
00075         'ii_CN' => true, 'ii'    => true, 'in'    => true, 'is_IS' => true, 'is'    => true,
00076         'it_CH' => true, 'it_IT' => true, 'it'    => true, 'iu'    => true, 'iw'    => true,
00077         'ja_JP' => true, 'ja'    => true, 'ka_GE' => true, 'ka'    => true, 'kaj_NG'=> true,
00078         'kaj'   => true, 'kam_KE'=> true, 'kam'   => true, 'kcg_NG'=> true, 'kcg'   => true,
00079         'kfo_CI'=> true, 'kfo'   => true, 'kk_KZ' => true, 'kk'    => true, 'kl_GL' => true,
00080         'kl'    => true, 'km_KH' => true, 'km'    => true, 'kn_IN' => true, 'kn'    => true,
00081         'ko_KR' => true, 'ko'    => true, 'kok_IN'=> true, 'kok'   => true, 'kpe_GN'=> true,
00082         'kpe_LR'=> true, 'kpe'   => true, 'ku_IQ' => true, 'ku_IR' => true, 'ku_SY' => true,
00083         'ku_TR' => true, 'ku'    => true, 'kw_GB' => true, 'kw'    => true, 'ky_KG' => true,
00084         'ky'    => true, 'ln_CD' => true, 'ln_CG' => true, 'ln'    => true, 'lo_LA' => true,
00085         'lo'    => true, 'lt_LT' => true, 'lt'    => true, 'lv_LV' => true, 'lv'    => true,
00086         'mk_MK' => true, 'mk'    => true, 'ml_IN' => true, 'ml'    => true, 'mn_CN' => true,
00087         'mn_MN' => true, 'mn'    => true, 'mo'    => true, 'mr_IN' => true, 'mr'    => true,
00088         'ms_BN' => true, 'ms_MY' => true, 'ms'    => true, 'mt_MT' => true, 'mt'    => true,
00089         'my_MM' => true, 'my'    => true, 'nb_NO' => true, 'nb'    => true, 'nds_DE'=> true,
00090         'nds'   => true, 'ne_IN' => true, 'ne_NP' => true, 'ne'    => true, 'nl_BE' => true,
00091         'nl_NL' => true, 'nl'    => true, 'nn_NO' => true, 'nn'    => true, 'no'    => true,
00092         'nr_ZA' => true, 'nr'    => true, 'nso_ZA'=> true, 'nso'   => true, 'ny_MW' => true,
00093         'ny'    => true, 'oc_FR' => true, 'oc'    => true, 'om_ET' => true, 'om_KE' => true,
00094         'om'    => true, 'or_IN' => true, 'or'    => true, 'pa_IN' => true, 'pa_PK' => true,
00095         'pa'    => true, 'pl_PL' => true, 'pl'    => true, 'ps_AF' => true, 'ps'    => true,
00096         'pt_BR' => true, 'pt_PT' => true, 'pt'    => true, 'ro_MD' => true, 'ro_RO' => true,
00097         'ro'    => true, 'ru_RU' => true, 'ru_UA' => true, 'ru'    => true, 'rw_RW' => true,
00098         'rw'    => true, 'sa_IN' => true, 'sa'    => true, 'se_FI' => true, 'se_NO' => true,
00099         'se'    => true, 'sh_BA' => true, 'sh_CS' => true, 'sh_YU' => true, 'sh'    => true,
00100         'si_LK' => true, 'si'    => true, 'sid_ET'=> true, 'sid'   => true, 'sk_SK' => true,
00101         'sk'    => true, 'sl_SI' => true, 'sl'    => true, 'so_DJ' => true, 'so_ET' => true,
00102         'so_KE' => true, 'so_SO' => true, 'so'    => true, 'sq_AL' => true, 'sq'    => true,
00103         'sr_BA' => true, 'sr_CS' => true, 'sr_ME' => true, 'sr_RS' => true, 'sr_YU' => true,
00104         'sr'    => true, 'ss_SZ' => true, 'ss_ZA' => true, 'ss'    => true, 'st_LS' => true,
00105         'st_ZA' => true, 'st'    => true, 'sv_FI' => true, 'sv_SE' => true, 'sv'    => true,
00106         'sw_KE' => true, 'sw_TZ' => true, 'sw'    => true, 'syr_SY'=> true, 'syr'   => true,
00107         'ta_IN' => true, 'ta'    => true, 'te_IN' => true, 'te'    => true, 'tg_TJ' => true,
00108         'tg'    => true, 'th_TH' => true, 'th'    => true, 'ti_ER' => true, 'ti_ET' => true,
00109         'ti'    => true, 'tig_ER'=> true, 'tig'   => true, 'tl'    => true, 'tn_ZA' => true,
00110         'tn'    => true, 'to_TO' => true, 'to'    => true, 'tr_TR' => true, 'tr'    => true,
00111         'trv_TW'=> true, 'trv'   => true, 'ts_ZA' => true, 'ts'    => true, 'tt_RU' => true,
00112         'tt'    => true, 'ug_CN' => true, 'ug'    => true, 'uk_UA' => true, 'uk'    => true,
00113         'ur_IN' => true, 'ur_PK' => true, 'ur'    => true, 'uz_AF' => true, 'uz_UZ' => true,
00114         'uz'    => true, 've_ZA' => true, 've'    => true, 'vi_VN' => true, 'vi'    => true,
00115         'wal_ET'=> true, 'wal'   => true, 'wo_SN' => true, 'wo'    => true, 'xh_ZA' => true,
00116         'xh'    => true, 'yo_NG' => true, 'yo'    => true, 'zh_CN' => true, 'zh_HK' => true,
00117         'zh_MO' => true, 'zh_SG' => true, 'zh_TW' => true, 'zh'    => true, 'zu_ZA' => true,
00118         'zu'    => true
00119     );
00120 
00124     const BROWSER     = 'browser';
00125     const ENVIRONMENT = 'environment';
00126     const ZFDEFAULT   = 'default';
00127 
00134     public static $compatibilityMode = false;
00135 
00141     private static $_breakChain = false;
00142 
00148     protected $_locale;
00149 
00155     protected static $_auto;
00156 
00162     protected static $_browser;
00163 
00169     protected static $_environment;
00170 
00176     protected static $_default = array('en' => true);
00177 
00191     public function __construct($locale = null)
00192     {
00193         $locale = self::_prepareLocale($locale);
00194         $this->setLocale((string) $locale);
00195     }
00196 
00202     public function serialize()
00203     {
00204         return serialize($this);
00205     }
00206 
00212     public function toString()
00213     {
00214         return (string) $this->_locale;
00215     }
00216 
00223     public function __toString()
00224     {
00225         return $this->toString();
00226     }
00227 
00233     public static function getDefault()
00234     {
00235         if ((self::$compatibilityMode === true) or (func_num_args() > 0)) {
00236             if (!self::$_breakChain) {
00237                 self::$_breakChain = true;
00238                 trigger_error('You are running Zend_Locale in compatibility mode... please migrate your scripts', E_USER_NOTICE);
00239                 $params = func_get_args();
00240                 $param = null;
00241                 if (isset($params[0])) {
00242                     $param = $params[0];
00243                 }
00244                 return self::getOrder($param);
00245             }
00246 
00247             self::$_breakChain = false;
00248         }
00249 
00250         return self::$_default;
00251     }
00252 
00265     public static function setDefault($locale, $quality = 1)
00266     {
00267         if (($locale === 'auto') or ($locale === 'root') or ($locale === 'default') or
00268             ($locale === 'environment') or ($locale === 'browser')) {
00269             require_once 'Zend/Locale/Exception.php';
00270             throw new Zend_Locale_Exception('Only full qualified locales can be used as default!');
00271         }
00272 
00273         if (($quality < 0.1) or ($quality > 100)) {
00274             require_once 'Zend/Locale/Exception.php';
00275             throw new Zend_Locale_Exception("Quality must be between 0.1 and 100");
00276         }
00277 
00278         if ($quality > 1) {
00279             $quality /= 100;
00280         }
00281 
00282         $locale = self::_prepareLocale($locale);
00283         if (isset(self::$_localeData[(string) $locale]) === true) {
00284             self::$_default = array((string) $locale => $quality);
00285         } else {
00286             $elocale = explode('_', (string) $locale);
00287             if (isset(self::$_localeData[$elocale[0]]) === true) {
00288                 self::$_default = array($elocale[0] => $quality);
00289             } else {
00290                 require_once 'Zend/Locale/Exception.php';
00291                 throw new Zend_Locale_Exception("Unknown locale '" . (string) $locale . "' can not be set as default!");
00292             }
00293         }
00294     }
00295 
00305     public static function getEnvironment()
00306     {
00307         if (self::$_environment !== null) {
00308             return self::$_environment;
00309         }
00310 
00311         require_once 'Zend/Locale/Data/Translation.php';
00312 
00313         $language      = setlocale(LC_ALL, 0);
00314         $languages     = explode(';', $language);
00315         $languagearray = array();
00316 
00317         foreach ($languages as $locale) {
00318             if (strpos($locale, '=') !== false) {
00319                 $language = substr($locale, strpos($locale, '='));
00320                 $language = substr($language, 1);
00321             }
00322 
00323             if ($language !== 'C') {
00324                 if (strpos($language, '.') !== false) {
00325                     $language = substr($language, 0, (strpos($language, '.') - 1));
00326                 } else if (strpos($language, '@') !== false) {
00327                     $language = substr($language, 0, (strpos($language, '@') - 1));
00328                 }
00329 
00330                 $splitted = explode('_', $language);
00331                 $language = (string) $language;
00332                 if (isset(self::$_localeData[$language]) === true) {
00333                     $languagearray[$language] = 1;
00334                     if (strlen($language) > 4) {
00335                         $languagearray[substr($language, 0, 2)] = 1;
00336                     }
00337 
00338                     continue;
00339                 }
00340 
00341                 if (empty(Zend_Locale_Data_Translation::$localeTranslation[$splitted[0]]) === false) {
00342                     if (empty(Zend_Locale_Data_Translation::$localeTranslation[$splitted[1]]) === false) {
00343                         $languagearray[Zend_Locale_Data_Translation::$localeTranslation[$splitted[0]] . '_' .
00344                         Zend_Locale_Data_Translation::$localeTranslation[$splitted[1]]] = 1;
00345                     }
00346 
00347                     $languagearray[Zend_Locale_Data_Translation::$localeTranslation[$splitted[0]]] = 1;
00348                 }
00349             }
00350         }
00351 
00352         self::$_environment = $languagearray;
00353         return $languagearray;
00354     }
00355 
00365     public static function getBrowser()
00366     {
00367         if (self::$_browser !== null) {
00368             return self::$_browser;
00369         }
00370 
00371         $httplanguages = getenv('HTTP_ACCEPT_LANGUAGE');
00372         $languages     = array();
00373         if (empty($httplanguages) === true) {
00374             return $languages;
00375         }
00376 
00377         $accepted = preg_split('/,\s*/', $httplanguages);
00378 
00379         foreach ($accepted as $accept) {
00380             $match  = null;
00381             $result = preg_match('/^([a-z]{1,8}(?:[-_][a-z]{1,8})*)(?:;\s*q=(0(?:\.[0-9]{1,3})?|1(?:\.0{1,3})?))?$/i',
00382                                  $accept, $match);
00383 
00384             if ($result < 1) {
00385                 continue;
00386             }
00387 
00388             if (isset($match[2]) === true) {
00389                 $quality = (float) $match[2];
00390             } else {
00391                 $quality = 1.0;
00392             }
00393 
00394             $countrys = explode('-', $match[1]);
00395             $region   = array_shift($countrys);
00396 
00397             $country2 = explode('_', $region);
00398             $region   = array_shift($country2);
00399 
00400             foreach ($countrys as $country) {
00401                 $languages[$region . '_' . strtoupper($country)] = $quality;
00402             }
00403 
00404             foreach ($country2 as $country) {
00405                 $languages[$region . '_' . strtoupper($country)] = $quality;
00406             }
00407 
00408             if ((isset($languages[$region]) === false) || ($languages[$region] < $quality)) {
00409                 $languages[$region] = $quality;
00410             }
00411         }
00412 
00413         self::$_browser = $languages;
00414         return $languages;
00415     }
00416 
00423     public function setLocale($locale = null)
00424     {
00425         $locale = self::_prepareLocale($locale);
00426 
00427         if (isset(self::$_localeData[(string) $locale]) === false) {
00428             $region = substr((string) $locale, 0, 3);
00429             if (isset($region[2]) === true) {
00430                 if (($region[2] === '_') or ($region[2] === '-')) {
00431                     $region = substr($region, 0, 2);
00432                 }
00433             }
00434 
00435             if (isset(self::$_localeData[(string) $region]) === true) {
00436                 $this->_locale = $region;
00437             } else {
00438                 $this->_locale = 'root';
00439             }
00440         } else {
00441             $this->_locale = $locale;
00442         }
00443     }
00444 
00450     public function getLanguage()
00451     {
00452         $locale = explode('_', $this->_locale);
00453         return $locale[0];
00454     }
00455 
00461     public function getRegion()
00462     {
00463         $locale = explode('_', $this->_locale);
00464         if (isset($locale[1]) === true) {
00465             return $locale[1];
00466         }
00467 
00468         return false;
00469     }
00470 
00476     public static function getHttpCharset()
00477     {
00478         $httpcharsets = getenv('HTTP_ACCEPT_CHARSET');
00479 
00480         $charsets = array();
00481         if ($httpcharsets === false) {
00482             return $charsets;
00483         }
00484 
00485         $accepted = preg_split('/,\s*/', $httpcharsets);
00486         foreach ($accepted as $accept) {
00487             if (empty($accept) === true) {
00488                 continue;
00489             }
00490 
00491             if (strpos($accept, ';') !== false) {
00492                 $quality        = (float) substr($accept, (strpos($accept, '=') + 1));
00493                 $pos            = substr($accept, 0, strpos($accept, ';'));
00494                 $charsets[$pos] = $quality;
00495             } else {
00496                 $quality           = 1.0;
00497                 $charsets[$accept] = $quality;
00498             }
00499         }
00500 
00501         return $charsets;
00502     }
00503 
00510     public function equals(Zend_Locale $object)
00511     {
00512         if ($object->toString() === $this->toString()) {
00513             return true;
00514         }
00515 
00516         return false;
00517     }
00518 
00529     public static function getTranslationList($path = null, $locale = null, $value = null)
00530     {
00531         require_once 'Zend/Locale/Data.php';
00532         $locale = self::_prepareLocale($locale);
00533         $result = Zend_Locale_Data::getList($locale, $path, $value);
00534         if (empty($result) === true) {
00535             return false;
00536         }
00537 
00538         return $result;
00539     }
00540 
00548     public static function getLanguageTranslationList($locale = null)
00549     {
00550         trigger_error("The method getLanguageTranslationList is deprecated. Use getTranslationList('language', $locale) instead", E_USER_NOTICE);
00551         return self::getTranslationList('language', $locale);
00552     }
00553 
00561     public static function getScriptTranslationList($locale = null)
00562     {
00563         trigger_error("The method getScriptTranslationList is deprecated. Use getTranslationList('script', $locale) instead", E_USER_NOTICE);
00564         return self::getTranslationList('script', $locale);
00565     }
00566 
00574     public static function getCountryTranslationList($locale = null)
00575     {
00576         trigger_error("The method getCountryTranslationList is deprecated. Use getTranslationList('territory', $locale, 2) instead", E_USER_NOTICE);
00577         return self::getTranslationList('territory', $locale, 2);
00578     }
00579 
00588     public static function getTerritoryTranslationList($locale = null)
00589     {
00590         trigger_error("The method getTerritoryTranslationList is deprecated. Use getTranslationList('territory', $locale, 1) instead", E_USER_NOTICE);
00591         return self::getTranslationList('territory', $locale, 1);
00592     }
00593 
00603     public static function getTranslation($value = null, $path = null, $locale = null)
00604     {
00605         require_once 'Zend/Locale/Data.php';
00606         $locale = self::_prepareLocale($locale);
00607         $result = Zend_Locale_Data::getContent($locale, $path, $value);
00608         if (empty($result) === true) {
00609             return false;
00610         }
00611 
00612         return $result;
00613     }
00614 
00623     public static function getLanguageTranslation($value, $locale = null)
00624     {
00625         trigger_error("The method getLanguageTranslation is deprecated. Use getTranslation($value, 'language', $locale) instead", E_USER_NOTICE);
00626         return self::getTranslation($value, 'language', $locale);
00627     }
00628 
00637     public static function getScriptTranslation($value, $locale = null)
00638     {
00639         trigger_error("The method getScriptTranslation is deprecated. Use getTranslation($value, 'script', $locale) instead", E_USER_NOTICE);
00640         return self::getTranslation($value, 'script', $locale);
00641     }
00642 
00651     public static function getCountryTranslation($value, $locale = null)
00652     {
00653         trigger_error("The method getCountryTranslation is deprecated. Use getTranslation($value, 'country', $locale) instead", E_USER_NOTICE);
00654         return self::getTranslation($value, 'country', $locale);
00655     }
00656 
00666     public static function getTerritoryTranslation($value, $locale = null)
00667     {
00668         trigger_error("The method getTerritoryTranslation is deprecated. Use getTranslation($value, 'territory', $locale) instead", E_USER_NOTICE);
00669         return self::getTranslation($value, 'territory', $locale);
00670     }
00671 
00678     public static function getQuestion($locale = null)
00679     {
00680         require_once 'Zend/Locale/Data.php';
00681         $locale            = self::_prepareLocale($locale);
00682         $quest             = Zend_Locale_Data::getList($locale, 'question');
00683         $yes               = explode(':', $quest['yes']);
00684         $no                = explode(':', $quest['no']);
00685         $quest['yes']      = $yes[0];
00686         $quest['yesarray'] = $yes;
00687         $quest['no']       = $no[0];
00688         $quest['noarray']  = $no;
00689         $quest['yesexpr']  = self::_prepareQuestionString($yes);
00690         $quest['noexpr']   = self::_prepareQuestionString($no);
00691 
00692         return $quest;
00693     }
00694 
00701     private static function _prepareQuestionString($input)
00702     {
00703         $regex = '';
00704         if (is_array($input) === true) {
00705             $regex = '^';
00706             $start = true;
00707             foreach ($input as $row) {
00708                 if ($start === false) {
00709                     $regex .= '|';
00710                 }
00711 
00712                 $start  = false;
00713                 $regex .= '(';
00714                 $one    = null;
00715                 if (strlen($row) > 2) {
00716                     $one = true;
00717                 }
00718 
00719                 foreach (str_split($row, 1) as $char) {
00720                     $regex .= '[' . $char;
00721                     $regex .= strtoupper($char) . ']';
00722                     if ($one === true) {
00723                         $one    = false;
00724                         $regex .= '(';
00725                     }
00726                 }
00727 
00728                 if ($one === false) {
00729                     $regex .= ')';
00730                 }
00731 
00732                 $regex .= '?)';
00733             }
00734         }
00735 
00736         return $regex;
00737     }
00738 
00750     public static function isLocale($locale, $strict = false, $compatible = true)
00751     {
00752         if ($locale instanceof Zend_Locale) {
00753             return true;
00754         }
00755 
00756         if (($locale !== null) and !is_string($locale) and !is_array($locale)) {
00757             return false;
00758         }
00759 
00760         try {
00761             $locale = self::_prepareLocale($locale, $strict);
00762         } catch (Zend_Locale_Exception $e) {
00763             return false;
00764         }
00765 
00766         if (($compatible === true) and (self::$compatibilityMode === true)) {
00767             trigger_error('You are running Zend_Locale in compatibility mode... please migrate your scripts', E_USER_NOTICE);
00768             if (isset(self::$_localeData[$locale]) === true) {
00769                 return $locale;
00770             } else if (!$strict) {
00771                 $locale = explode('_', $locale);
00772                 if (isset(self::$_localeData[$locale[0]]) === true) {
00773                     return $locale[0];
00774                 }
00775             }
00776         } else {
00777             if (isset(self::$_localeData[$locale]) === true) {
00778                 return true;
00779             } else if (!$strict) {
00780                 $locale = explode('_', $locale);
00781                 if (isset(self::$_localeData[$locale[0]]) === true) {
00782                     return true;
00783                 }
00784             }
00785         }
00786 
00787         return false;
00788     }
00789 
00800     public static function findLocale($locale = null)
00801     {
00802         if ($locale === null) {
00803             require_once 'Zend/Registry.php';
00804             if (Zend_Registry::isRegistered('Zend_Locale')) {
00805                 $locale = Zend_Registry::get('Zend_Locale');
00806             }
00807         }
00808 
00809         require_once 'Zend/Locale.php';
00810         if ($locale === null) {
00811             $locale = new Zend_Locale();
00812         }
00813 
00814         if (!Zend_Locale::isLocale($locale, true, false)) {
00815             if (!Zend_Locale::isLocale($locale, false, false)) {
00816                 require_once 'Zend/Locale/Exception.php';
00817                 throw new Zend_Locale_Exception("The locale '$locale' is no known locale");
00818             }
00819 
00820             $locale = new Zend_Locale($locale);
00821         }
00822 
00823         if ($locale instanceof Zend_Locale) {
00824             $locale = $locale->toString();
00825         }
00826 
00827         return $locale;
00828     }
00829 
00837     public static function getLocaleList()
00838     {
00839         $list = self::$_localeData;
00840         unset($list['root']);
00841         unset($list['auto']);
00842         unset($list['browser']);
00843         unset($list['environment']);
00844         return $list;
00845     }
00846 
00852     public static function getCache()
00853     {
00854         require_once 'Zend/Locale/Data.php';
00855         $cache = Zend_Locale_Data::getCache();
00856 
00857         return $cache;
00858     }
00859 
00866     public static function setCache(Zend_Cache_Core $cache)
00867     {
00868         require_once 'Zend/Locale/Data.php';
00869         Zend_Locale_Data::setCache($cache);
00870     }
00871 
00877     public static function hasCache()
00878     {
00879         require_once 'Zend/Locale/Data.php';
00880         return Zend_Locale_Data::hasCache();
00881     }
00882 
00888     public static function removeCache()
00889     {
00890         require_once 'Zend/Locale/Data.php';
00891         Zend_Locale_Data::removeCache();
00892     }
00893 
00899     public static function clearCache()
00900     {
00901         require_once 'Zend/Locale/Data.php';
00902         Zend_Locale_Data::clearCache();
00903     }
00904 
00911     public static function disableCache($flag)
00912     {
00913         require_once 'Zend/Locale/Data.php';
00914         Zend_Locale_Data::disableCache($flag);
00915     }
00916 
00925     private static function _prepareLocale($locale, $strict = false)
00926     {
00927         if ($locale instanceof Zend_Locale) {
00928             $locale = $locale->toString();
00929         }
00930 
00931         if (is_array($locale)) {
00932             return '';
00933         }
00934 
00935         if (empty(self::$_auto) === true) {
00936             self::$_browser     = self::getBrowser();
00937             self::$_environment = self::getEnvironment();
00938             self::$_breakChain  = true;
00939             self::$_auto        = self::getBrowser() + self::getEnvironment() + self::getDefault();
00940         }
00941 
00942         if (!$strict) {
00943             if ($locale === 'browser') {
00944                 $locale = self::$_browser;
00945             }
00946 
00947             if ($locale === 'environment') {
00948                 $locale = self::$_environment;
00949             }
00950 
00951             if ($locale === 'default') {
00952                 $locale = self::$_default;
00953             }
00954 
00955             if (($locale === 'auto') or ($locale === null)) {
00956                 $locale = self::$_auto;
00957             }
00958 
00959             if (is_array($locale) === true) {
00960                 $locale = key($locale);
00961             }
00962         }
00963 
00964         // This can only happen when someone extends Zend_Locale and erases the default
00965         if ($locale === null) {
00966             require_once 'Zend/Locale/Exception.php';
00967             throw new Zend_Locale_Exception('Autodetection of Locale has been failed!');
00968         }
00969 
00970         if (strpos($locale, '-') !== false) {
00971             $locale = strtr($locale, '-', '_');
00972         }
00973 
00974         $parts = explode('_', $locale);
00975         if (!isset(self::$_localeData[$parts[0]])) {
00976             return '';
00977         }
00978 
00979         foreach($parts as $key => $value) {
00980             if ((strlen($value) < 2) || (strlen($value) > 3)) {
00981                 unset($parts[$key]);
00982             }
00983         }
00984 
00985         $locale = implode('_', $parts);
00986         return (string) $locale;
00987     }
00988 
00998     public static function getOrder($order = null)
00999     {
01000         switch ($order) {
01001             case self::ENVIRONMENT:
01002                 self::$_breakChain = true;
01003                 $languages         = self::getEnvironment() + self::getBrowser() + self::getDefault();
01004                 break;
01005 
01006             case self::ZFDEFAULT:
01007                 self::$_breakChain = true;
01008                 $languages         = self::getDefault() + self::getEnvironment() + self::getBrowser();
01009                 break;
01010 
01011             default:
01012                 self::$_breakChain = true;
01013                 $languages         = self::getBrowser() + self::getEnvironment() + self::getDefault();
01014                 break;
01015         }
01016 
01017         return $languages;
01018     }
01019 }

Generated on Thu Apr 19 2012 17:01:17 for openbiz by  doxygen 1.7.2