【发布时间】:2018-11-14 01:17:02
【问题描述】:
我正在尝试使用以下方式获取当前用户的语言设置:
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
当我 VPN 进入另一个国家,甚至使用 geopeeker.com 时,当我回显 $lang 时,我仍然会得到“en”。
这种方法不是解决这个问题的最佳方法吗?还是我的测试方法有缺陷?
【问题讨论】:
我正在尝试使用以下方式获取当前用户的语言设置:
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
当我 VPN 进入另一个国家,甚至使用 geopeeker.com 时,当我回显 $lang 时,我仍然会得到“en”。
这种方法不是解决这个问题的最佳方法吗?还是我的测试方法有缺陷?
【问题讨论】:
Accept-Language 标头不是由您访问的国家/地区设置的,而是由您的浏览器设置的。如果您,使用相同的浏览器,VPN 到另一个国家,您的浏览器仍将发送相同的标头。它要么是浏览器首选项中的设置,要么是浏览器从系统的区域设置首选项中获取的。
【讨论】:
这取决于您的浏览器设置,并在请求标头中发送。请参阅 How to add custom Accept-Languages to Chrome for pseudolocalization testing? 更改浏览器设置,或考虑使用 curl 之类的工具手动指定它们。
【讨论】: