function gs_setlang($locale) { global $g_gs_language; $locale = gs_lang_name_locale($locale); if (GS_INTL_USE_GETTEXT && extension_loaded('gettext')) { switch (strToLower(subStr($locale, 0, 2))) { case 'de': setLocale(LC_MESSAGES, array($locale, 'de_DE@euro', 'de_DE', 'de', 'deu_deu', 'ge')); break; case 'en': setLocale(LC_MESSAGES, array($locale, 'en_US', 'en')); break; default: setLocale(LC_MESSAGES, $locale); } putEnv('LANGUAGE=' . $locale); putEnv('LANG=' . $locale); return setLocale(LC_MESSAGES, '0'); } else { $langdirs = glob(GS_DIR . 'locale/*_*'); foreach ($langdirs as $langdir) { $langdir = baseName($langdir); $lc_locale = strToLower($locale); if ($lc_locale === strToLower($langdir)) { $g_gs_language = $langdir; return $langdir; } } foreach ($langdirs as $langdir) { $langdir = baseName($langdir); $lc_lang_locale = strToLower(subStr($locale, 0, 2)); if ($lc_lang_locale === strToLower(subStr($langdir, 0, 2))) { $g_gs_language = $langdir; return $langdir; } } return false; } }
aRSort($accept); return $accept; } # set language # if (array_key_exists('setlang', $_REQUEST)) { @($_SESSION['lang'] = gs_lang_name_locale(@$_REQUEST['setlang'])); } else { if (!array_key_exists('lang', $_SESSION)) { # try to use the best language according to the Accept-Language header if (array_key_exists('HTTP_ACCEPT_LANGUAGE', $_SERVER)) { $accept_langs = parse_http_accept_header($_SERVER['HTTP_ACCEPT_LANGUAGE']); foreach ($accept_langs as $accept_lang => $qval) { if ($qval > 0) { //echo "trying to set $accept_lang ... "; $ret = gs_setlang(gs_lang_name_locale($accept_lang)); //FIXME - works for "de-de" but not for "de" - fix gs_setlang()? if ($ret) { $_SESSION['lang'] = $ret; //echo " worked ($ret) "; break; } } } unset($accept_langs, $accept_lang, $qval, $ret); } } } if (!array_key_exists('lang', $_SESSION)) { $_SESSION['lang'] = GS_INTL_LANG; }