Пример #1
0
 function _setLocaleWindows($category, $locale)
 {
     fbDebug::enter();
     static $locale_cache = array();
     if (isset($locale_cache[$locale])) {
         return fbLocale::_setLocale($category, $locale_cache[$locale]);
     }
     $language_id2 = $locale;
     if (preg_match('/^([^_]+)_(.*)$/', $locale, $matches)) {
         $language_id2 = $matches[1];
         $country_id2 = $matches[2];
     }
     fbDebug::dump($language_id2, '$language_id2');
     do {
         // get the full language name for the ISO 639 2 character language code
         $language_name = fbISO639::getLanguageName($language_id2);
         fbDebug::dump($language_name, '$language_name');
         if (!$language_id2) {
             // if it's not a valid language, then try the locale and return
             $rv = fbLocale::_setLocale($category, $locale);
             break;
         }
         // first, try the full language name
         $rv = fbLocale::_setLocale($category, $language_name);
         if ($rv) {
             break;
         }
         $language_id3 = fbISO639_Alpha3::getLanguageID($language_name);
         fbDebug::dump($language_id3, '$language_id3');
         if (!$language_id3) {
             $rv = fbLocale::_setLocale($category, $locale);
             break;
         }
         // next, try the ISO 639 3 character language code
         $rv = fbLocale::_setLocale($category, $language_id3);
         if ($rv) {
             break;
         }
         // next, try the ISO 639 2 character language code
         $rv = fbLocale::_setLocale($category, $language_id2);
         if ($rv) {
             break;
         }
         // finally, try the original locale
         $rv = fbLocale::_setLocale($category, $locale);
     } while (false);
     $locale_cache[$locale] = $rv;
     fbDebug::leave($rv);
     return $rv;
 }