Определение языка пользователя на PHP


Определение языка пользователя на PHP Сайты, которые рассчитаны на множество стран мира, как правило, имеют несколько языков. Безусловно, на всех страницах сайта там можно переключиться с одного языка на другой. Однако, Вы, наверняка, замечали, что в большинстве случаев сайты каким-то образом определяют Ваш язык и устанавливают сразу для Вас наиболее подходяющий. Вот о том, как определяется язык пользователя на PHP, я и расскажу в данной статье. В основе лежит константа $_SERVER["HTTP_ACCEPT_LANGUAGE"], которая как раз и содержит сведения о предпочитаемых языках пользователя. Выглядит она примерно так: "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3". Здесь перечисляются языки и регионы, а также приоритет q. Чем больше q, тем больше пользователь предпочитает данный язык. Если q нет, значит, оно равно 1. Например, у ru-RU нет q, значит, оно равно 1, и данный язык наиболее подходящий. Чтобы определить язык пользователя на PHP, надо воспользоваться следующим кодом: <?php preg_match_all('/([a-z]{1,8}(?:-[a-z]{1,8})?)(?:;q=([0-9.]+))?/', strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"]), $matches); // Получаем массив $matches с соответствиями $langs = array_combine($matches[1], $matches[2]); // Создаём массив с ключами $matches[1] и значениями $matches[2] foreach ($langs as $n => $v) $langs[$n] = $v ? $v : 1; // Если нет q, то ставим значение 1 arsort($langs); // Сортируем по убыванию q $default_lang = key($langs); // Берём 1-й ключ первого (текущего) элемента (он же максимальный по q) echo $default_lang; // Выводим язык по умолчанию ?> Получив язык по умолчанию, мы можем сразу же установить его и на сайте, тем самым, выводя контент для пользователя на том языке, который он предпочитает. Таким образом определяется язык пользователя на PHP, что очень пригодится мультиязычным сайтам.