public static function ParsePreferred() { if (self::$_preferred == null) { // $session=Session::Get(); // if (($session->langs) && (is_array($session->langs))) // { // self::$_preferred=$session->langs; // return; // } preg_match_all('/([a-z]{1,8}(-[a-z]{1,8})?)\\s*(;\\s*q\\s*=\\s*(1|0\\.[0-9]+))?/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $lang_parse); if (count($lang_parse[1])) { for ($i = 0; $i < count($lang_parse[1]); $i++) { $lang_parse[1][$i] = array_shift(explode('-', $lang_parse[1][$i])); } $langs = array_combine($lang_parse[1], $lang_parse[4]); foreach ($langs as $lang => $val) { if ($val === '') { $langs[$lang] = 1; } } } if (is_array($langs)) { arsort($langs, SORT_NUMERIC); foreach ($langs as $lang => $value) { $thelangs[] = $lang; } } // $session->langs=$thelangs; // $session->save(); self::$_preferred = $thelangs; } }