Если создаваемый вами сайт рассчитан на посетителей с разных стран мира вам обязательно требуется автоматическое определение языка пользователя, в одном из проектов потребовалось решить эту задачу. О том, как определяется язык пользователя на PHP, я и расскажу в данной статье.
Чтобы определить язык пользователя на 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 = $langs[0]; // Берём 1-й элемент (он же максимальный по q)
echo $default_lang; // Выводим язык по умолчанию
?>
В основе лежит константа
$_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, что очень пригодится мультиязычным сайтам.
Отзывы