public static function fetchLocale($localeCode) { // Fetch locale list $localeList = eZLocale::localeList(false, true); $localeObj = eZLocale::instance($localeCode); // Check if $localeName exists if ($localeObj === null or is_object($localeObj) and !in_array($localeObj->localeFullCode(), $localeList)) { $result = array('error' => array('error_type' => 'kernel', 'error_code' => eZError::KERNEL_NOT_FOUND)); } else { $result = array('result' => $localeObj); } return $result; }
function eZSetupLanguageList(&$languageList, &$defaultLanguage, &$defaultExtraLanguages) { $locales = eZLocale::localeList(true); $languageList = array(); $httpMap = array(); $httpMapShort = array(); // This alias array must be filled in with known names. // The key is the value from the locale INI file (HTTP group) // and the value is the HTTP alias. $httpAliases = array('no-bokmaal' => 'nb', 'no-nynorsk' => 'nn', 'ru-ru' => 'ru'); foreach (array_keys($locales) as $localeKey) { $locale =& $locales[$localeKey]; if (!$locale->attribute('country_variation')) { $languageList[] = $locale; $httpLocale = strtolower($locale->httpLocaleCode()); $httpMap[$httpLocale] = $locale; list($httpLocaleShort) = explode('-', $httpLocale); $httpMapShort[$httpLocale] = $locale; if (isset($httpAliases[$httpLocale])) { $httpMapShort[$httpAliases[$httpLocale]] = $locale; } } } // bubble sort language based on language name. bubble bad, but only about 8-9 elements for ($i = 0; $i < count($languageList); $i++) { for ($n = 0; $n < count($languageList) - 1; $n++) { if (strcmp($languageList[$n]->attribute('language_name'), $languageList[$n + 1]->attribute('language_name')) > 0) { $tmpElement = $languageList[$n]; $languageList[$n] = $languageList[$n + 1]; $languageList[$n + 1] = $tmpElement; } } } $defaultLanguage = false; $defaultExtraLanguages = array(); if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { $acceptLanguages = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']); foreach ($acceptLanguages as $acceptLanguage) { list($acceptLanguageCode) = explode(';', $acceptLanguage); $acceptLanguageCode = strtolower($acceptLanguageCode); $languageCode = false; if (isset($httpMap[$acceptLanguageCode])) { $languageCode = $httpMap[$acceptLanguageCode]->localeCode(); } elseif (isset($httpMapShort[$acceptLanguageCode])) { $languageCode = $httpMapShort[$acceptLanguageCode]->localeCode(); } if ($languageCode) { if ($defaultLanguage === false) { $defaultLanguage = $languageCode; } /* else { $defaultExtraLanguages[] = $languageCode; } */ } } } if ($defaultLanguage === false) { $defaultLanguage = 'eng-GB'; } $defaultExtraLanguages = array_unique(array_diff($defaultExtraLanguages, array($defaultLanguage))); }