Я пытаюсь получить языковые настройки текущего пользователя, используя:
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
Когда я использую VPN в другой стране или даже использую geopeeker.com, я все равно получаю "en", когда выхожу эхом из $ lang.
Разве этот метод - не лучший способ решить эту проблему? Или мой метод тестирования ошибочен?






Заголовок Accept-Language не устанавливается страной, из которой вы посещаете, он устанавливается ваш браузер. Если ты с тем же браузером использует VPN в другой стране, ваш браузер все равно будет отправлять тот же заголовок. Это либо параметр в настройках вашего браузера, либо браузер берет его из настроек локали системы.
Потому что они игнорируют заголовок Accept-Language и используют ваш IP-адрес для геолокации вас и определения вашего языка…?
Это зависит от настроек вашего браузера и отправляется в заголовках запроса. См. Как добавить пользовательские Accept-языки в Chrome для тестирования псевдолокализации? для изменения настроек вашего браузера или рассмотрите возможность использования чего-то вроде curl, чтобы указать их вручную.
Почему же тогда, если я перейду на другой сайт, например PayPal, через мою VPN, он определит, например, испанский как мой язык?