Да, значение $_SERVER['HTTP_ACCEPT_LANGUAGE']
является строкой - см. $_SERVER
.
Его содержимое отправляется браузером - что объясняет, почему вы получаете разные результаты в зависимости от браузера, который вы используете: скорее всего, ваш Firefox настроен для запроса страниц на английском языке (высокий приоритет) или japanese (низкий приоритет) , в то время как ваш IE настроен на запрос страниц на китайском языке.
Это потому, что заголовок HTTP может содержать:
- список языков
- опционально, с кодами регионов
- с соответствующими приоритетами.
Идея заключается в том, что сервер должен отвечать, используя язык, который "лучше" соответствует тому, что запрашивает пользователь.
Что касается разбора этого заголовка, этот пост может быть интересным: Разобрать Accept-Language для определения языка пользователя
Существует часть кода, предложенная для анализа этого HTTP-заголовка - и он генерирует массив, который выглядит следующим образом (цитирование) :
Array
(
[en-ca] => 1
[en] => 0.8
[en-us] => 0.6
[de-de] => 0.4
[de] => 0.2
)
Это массив языков, отсортированных по приоритету, в порядке убывания - что, вероятно, вам и нужно.