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