【问题标题】:HTTP_ACCEPT_LANGUAGE always showing englishHTTP_ACCEPT_LANGUAGE 总是显示英文
【发布时间】:2018-11-14 01:17:02
【问题描述】:

我正在尝试使用以下方式获取当前用户的语言设置:

$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);

当我 VPN 进入另一个国家,甚至使用 geopeeker.com 时,当我回显 $lang 时,我仍然会得到“en”。

这种方法不是解决这个问题的最佳方法吗?还是我的测试方法有缺陷?

【问题讨论】:

    标签: php http-accept-language


    【解决方案1】:

    Accept-Language 标头不是由您访问的国家/地区设置的,而是由您的浏览器设置的。如果,使用相同的浏览器,VPN 到另一个国家,您的浏览器仍将发送相同的标头。它要么是浏览器首选项中的设置,要么是浏览器从系统的区域设置首选项中获取的。

    【讨论】:

    • 为什么,如果我通过我的 VPN 访问另一个网站,比如 PayPal,它会检测到西班牙语作为我的语言,例如?
    • '因为他们忽略 Accept-Language 标头并使用您的 IP 对您进行地理定位并推断您的语言......?
    【解决方案2】:

    这取决于您的浏览器设置,并在请求标头中发送。请参阅 How to add custom Accept-Languages to Chrome for pseudolocalization testing? 更改浏览器设置,或考虑使用 curl 之类的工具手动指定它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多