我正在尝试使用以下方法获取当前用户的语言设置:
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
当我通过VPN进入另一个国家或什至使用geopeeker.com时,回显$ lang时仍会显示“ en”。
此方法不是解决此问题的最佳方法吗?还是我的测试方法有缺陷?
答案 0 :(得分:1)
Accept-Language标头不是由您所访问的国家/地区设置的,而是由您的浏览器设置的。如果 you ,并且使用相同的浏览器将VPN连接到另一个国家/地区,则您的浏览器仍会发送相同的标头。这是浏览器首选项中的一项设置,或者浏览器从系统的语言环境首选项中获取它。
答案 1 :(得分:0)
这基于您的浏览器设置,并在请求标头中发送。有关更改浏览器设置的信息,请参见How to add custom Accept-Languages to Chrome for pseudolocalization testing?,或考虑使用curl之类的方法手动指定它们。