ФорумПрограммированиеPHP для идиотов → как правильно читать HTTP_ACCEPT_LANGUAGE

как правильно читать HTTP_ACCEPT_LANGUAGE

  • phpdude

    Сообщения: 26618 Репутация: N Группа: в ухо

    Spritz 31 марта 2012 г. 7:58

    kostyl, ты не видишь в первом примере что даже там первые два не канают? опять пришел-спиздел непосмотрел :D {+++20+++} явно первый экзампл - опера, остальное файрфокс какой нить)
    Сапожник без сапог
  • kostyl

    Сообщения: 5203 Репутация: N Группа: Джедаи

    Spritz 31 марта 2012 г. 8:07, спустя 8 минут 49 секунд

    kostyl, ты не видишь в первом примере что даже там первые два не канают?

    ты чё на приколе, первые два символа это те что в нулевом элементе или у тебя заголовок массивами приходит? ))
  • phpdude

    Сообщения: 26618 Репутация: N Группа: в ухо

    Spritz 31 марта 2012 г. 8:22, спустя 15 минут 30 секунд

    kostyl, туплю, точно на приколе :D
    Сапожник без сапог
  • artoodetoo

    Сообщения: 5138 Репутация: N Группа: в ухо

    Spritz 31 марта 2012 г. 11: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(&#39;-&#39;, &#39;_&#39;, $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 => &#39;ru_ru&#39;,
    1 => &#39;ru&#39;,
    2 => &#39;en_us&#39;,
    3 => &#39;en&#39;,
    )


    Пусть у нас есть эээ…, ну типа &quot;языки локализации&quot;, тогда

    $has = array(&#39;kz&#39;, &#39;en&#39;, &#39;ru&#39;);
    var_export(array_intersect(Http::getAcceptedLanguages(), $has));

    выдаст нам массив чего мы можем этому клиенту дать. первым будет самый предпочтительный язык

    array (
    1 => &#39;ru&#39;,
    3 => &#39;en&#39;,
    )
    ιιlllιlllι унц-унц
  • Абырвалг

    Сообщения: 6477 Репутация: N Группа: Джедаи
  • artoodetoo

    Сообщения: 5138 Репутация: N Группа: в ухо

    Spritz 31 марта 2012 г. 12:23, спустя 5 минут 29 секунд

    ага, воровали кажется в одном месте.
    ιιlllιlllι унц-унц
  • kostyl

    Сообщения: 5203 Репутация: N Группа: Джедаи

    Spritz 31 марта 2012 г. 14:14, спустя 1 час 51 минуту 33 секунды

    Фёдор пропал ))
  • master

    Сообщения: 3236 Репутация: N Группа: Джедаи

    Spritz 1 апреля 2012 г. 0:23, спустя 10 часов 8 минут 27 секунд



    if (isset($_SERVER[&#39;HTTP_ACCEPT_LANGUAGE&#39;])) {
    foreach (explode(&#39;,&#39;, $_SERVER[&#39;HTTP_ACCEPT_LANGUAGE&#39;]) as $value) {
    if (strpos($value, &#39;;&#39;) !== false) {
    list($value, ) = explode(&#39;;&#39;, $value);
    }
    if (strpos($value, &#39;-&#39;) !== false) {
    list($value, ) = explode(&#39;-&#39;, $value);
    }
    $langs[] = $value;
    }
    }

    не всё полезно, что в swap полезло
  • artoodetoo

    Сообщения: 5138 Репутация: N Группа: в ухо

    Spritz 1 апреля 2012 г. 0:59, спустя 36 минут 12 секунд

    что это? master, ты обратил внимание на arsort($languages) ? оно там не зря
    ιιlllιlllι унц-унц
  • master

    Сообщения: 3236 Репутация: N Группа: Джедаи

    Spritz 1 апреля 2012 г. 5:29, спустя 4 часа 30 минут 16 секунд

    artoodetoo, да вроде браузер в accept-language и так первым ставит приоритетный язык
    не всё полезно, что в swap полезло
  • artoodetoo

    Сообщения: 5138 Репутация: N Группа: в ухо

    Spritz 1 апреля 2012 г. 8:22, спустя 2 часа 53 минуты 8 секунд

    это в окне настроек он первый ))) а в строке не факт
    ιιlllιlllι унц-унц
  • master

    Сообщения: 3236 Репутация: N Группа: Джедаи

    Spritz 1 апреля 2012 г. 9:41, спустя 1 час 18 минут 40 секунд

    artoodetoo, проверь
    не всё полезно, что в swap полезло
  • artoodetoo

    Сообщения: 5138 Репутация: N Группа: в ухо

    Spritz 1 апреля 2012 г. 12:26, спустя 2 часа 45 минут 13 секунд

    ты чтоли доебался? у этого заголовка есть Quality factors, это стандарт. хочешь полагаться на сортировку от браузера? я тебе не запрещаю.
    ιιlllιlllι унц-унц
  • artoodetoo

    Сообщения: 5138 Репутация: N Группа: в ухо

    Spritz 1 апреля 2012 г. 13:02, спустя 35 минут 42 секунды

    Yi и Symphony сортируют, а CI не хочет, ок. {+++187+++} Zend

    ιιlllιlllι унц-унц
  • artoodetoo

    Сообщения: 5138 Репутация: N Группа: в ухо

    Spritz 1 апреля 2012 г. 18:19, спустя 5 часов 17 минут 15 секунд

    главрыб же приводил ссылку, разве это не вторая симфа?
    $languages = $this->splitHttpAcceptHeader($this->headers->get(&#39;Accept-Language&#39;));

    хидеры поглубже упрятали
    ιιlllιlllι унц-унц

Пожалуйста, авторизуйтесь, чтобы написать комментарий!