PHP: определение языка пользователя сайта
В ранние годы, чаще всего определяли языка пользователя на основании его IP. Да и до исх пор так часто делают. И всё чаще ошибаются из-за широкого распространения VPN и всяческих аномайзеров. Поэтом правильнее будет полагаться на стандарт W3C, согласно которому браузер должен передавать на сервер в заголовке HTTP заполненую переменную HTTP_ACCEPT_LANGUAGE. Собстевенно в PHP оно попадает в $_SERVER[‘HTTP_ACCEPT_LANGUAGE’]. Далее остается распрасить переменную с сортировкой по «весам»:
| 1 2 3 4 5 6 7 8 |         if (($list = strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']))) {                     if (preg_match_all('/([a-z]{1,8}(?:-[a-z]{1,8})?)(?:;q=([0-9.]+))?/', $list, $list)) {                         $language = array_combine($list[1], $list[2]);                         foreach ($language as $n => $v)                             $language[$n] = $v ? $v : 1;                         arsort($language, SORT_NUMERIC);                     }         } else $language = array(); | 
Получаем массив вида:
| 1 2 3 4 5 6 7 | Array (     [ru-ru] => 1     [ru] => 0.8     [en-us] => 0.6     [en] => 0.4 ) |