Esempio n. 1
0
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;
    }
}
Esempio n. 2
0
    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;
}