Форум → Программирование → PHP для идиотов → как правильно читать HTTP_ACCEPT_LANGUAGE
как правильно читать HTTP_ACCEPT_LANGUAGE
Страницы: ← Следующая страница →
-
31 марта 2012 г. 16:07, спустя 8 минут 49 секунд
kostyl, ты не видишь в первом примере что даже там первые два не канают?
ты чё на приколе, первые два символа это те что в нулевом элементе или у тебя заголовок массивами приходит? )) -
31 марта 2012 г. 16:22, спустя 15 минут 30 секунд
kostyl, туплю, точно на приколе :DСапожник без сапог -
31 марта 2012 г. 19:02, спустя 2 часа 39 минут 26 секунд
Лучше всех ответил Stasovsky, хотя с ошибками )))
не помню откуда спиздил такое:
class Http
{
//…
protected static
$_acceptLanguages;
static function getAcceptedLanguages()
{
if(self::$_acceptLanguages === NULL) {
self::$_acceptLanguages = array();
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) &&
($n = preg_match_all('/([\w\-_]+)\s*(;\s*q\s*=\s*(\d*\.\d*))?/', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches)) > 0) {
$languages = array();
for($i=0; $i < $n; ++$i) {
$language = strtolower(str_replace('-', '_', $matches[1][$i]));
$languages[$language] = empty($matches[3][$i])
? 1.0
: floatval($matches[3][$i]);
}
arsort($languages);
self::$_acceptLanguages = array_keys($languages);
}
}
return self::$_acceptLanguages;
}
}
array (
0 => 'ru_ru',
1 => 'ru',
2 => 'en_us',
3 => 'en',
)
Пусть у нас есть эээ…, ну типа "языки локализации", тогда
$has = array('kz', 'en', 'ru');
var_export(array_intersect(Http::getAcceptedLanguages(), $has));
выдаст нам массив чего мы можем этому клиенту дать. первым будет самый предпочтительный язык
array (
1 => 'ru',
3 => 'en',
)ιιlllιlllι унц-унц -
31 марта 2012 г. 20:17, спустя 1 час 15 минут 33 секунды
-
31 марта 2012 г. 20:23, спустя 5 минут 29 секунд
ага, воровали кажется в одном месте.ιιlllιlllι унц-унц -
-
1 апреля 2012 г. 8:23, спустя 10 часов 8 минут 27 секунд
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
foreach (explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']) as $value) {
if (strpos($value, ';') !== false) {
list($value, ) = explode(';', $value);
}
if (strpos($value, '-') !== false) {
list($value, ) = explode('-', $value);
}
$langs[] = $value;
}
}не всё полезно, что в swap полезло -
1 апреля 2012 г. 8:59, спустя 36 минут 12 секунд
что это? master, ты обратил внимание на arsort($languages) ? оно там не зряιιlllιlllι унц-унц -
1 апреля 2012 г. 13:29, спустя 4 часа 30 минут 16 секунд
artoodetoo, да вроде браузер в accept-language и так первым ставит приоритетный языкне всё полезно, что в swap полезло -
1 апреля 2012 г. 16:22, спустя 2 часа 53 минуты 8 секунд
это в окне настроек он первый ))) а в строке не фактιιlllιlllι унц-унц -
1 апреля 2012 г. 17:41, спустя 1 час 18 минут 40 секунд
artoodetoo, проверьне всё полезно, что в swap полезло -
1 апреля 2012 г. 20:26, спустя 2 часа 45 минут 13 секунд
ты чтоли доебался? у этого заголовка есть Quality factors, это стандарт. хочешь полагаться на сортировку от браузера? я тебе не запрещаю.ιιlllιlllι унц-унц -
-
2 апреля 2012 г. 2:19, спустя 5 часов 17 минут 15 секунд
главрыб же приводил ссылку, разве это не вторая симфа?$languages = $this->splitHttpAcceptHeader($this->headers->get('Accept-Language'));
хидеры поглубже упряталиιιlllιlllι унц-унц
Страницы: ← Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!