Фактически они оба фиксируют язык, установленный в браузере. Основное отличие состоит в том, что $_SERVER
поддерживает несколько языков в порядке предпочтения, тогда как navigator.language
сможет только выбрать первый язык, который предпочитает браузер.
Еще одно отличие заключается в том, что один захвачен на стороне клиента с использованием JavaScript, а другой на стороне сервера с использованием HTTP-заголовков. Справедливости ради следует сказать (хотя заголовки могут быть подделаны), что захват значения на стороне сервера является более стабильным.
Скажите в Firefox, используя tools->options->content->language
. Если установить язык сказать Chinese
Тогда, когда я делаю запрос и изучить заголовки HTTP он будет говорить:
Accept-Language: zh,en-us;q=0.7,en;q=0.3
// ж это два письма китайское представление
$_SERVER["HTTP_ACCEPT_LANGUAGE"]
и даст мне zh,en-us;q=0.7,en;q=0.3
navigator.language даст мне только zh
Таким образом, в заголовке вы можете увидеть, что вы можете поддержать несколько вариантов языка в порядке. Поэтому, если по какой-то причине китайский не может быть отображен, вы можете проверить второй предпочтительный язык.
Если вы используете navigator.language
вы не можете сделать это ..
бы вы ни выбрали, я бы просто сделать его язык по умолчанию, я всегда позволяет пользователю изменить язык после того, как факт. – Pitchinnate
Конечно, я делаю это, но мне просто нужно установить язык, чтобы начать просмотр страницы, и я подумал, что это будет очень близко, если я выберу его из браузера пользователя. –