【问题标题】:How to recognize user language in PHP如何在 PHP 中识别用户语言
【发布时间】:2010-07-15 20:19:05
【问题描述】:

有什么方法可以解析 HTTP_USER_AGENT 以获取当前用户语言?

【问题讨论】:

    标签: php web-applications


    【解决方案1】:

    试试:

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

    【讨论】:

    • +1 如果您只需要检测最受支持的语言,这是最简单的解决方案。
    • HTTP_ACCEPT_LANGUAGE: 'pl-PL,pl;q=0.8,en-US;q=0.6,en;q=0.4' g8 这是我目前想做的事情的好解决方案,因为我只需要识别一种语言,因此我检查了该字符串中该语言的存在情况,它就可以工作。但我有一个问题:整个字符串代表什么 q 属性?
    【解决方案2】:

    您可能想在 $_SERVER 超全局中尝试 HTTP_ACCEPT_LANGUAGE。

    查看http://php.net/manual/en/reserved.variables.server.php 了解更多信息。

    这将返回一个类似“en-us”的值,然后您可以根据需要对其进行分解。

    【讨论】:

      【解决方案3】:

      理论上,您可以尝试围绕用户代理做一些体操,但还有一个 Accept-Language 标头似乎可以解决问题!

      【讨论】:

        【解决方案4】:

        执行此操作的另一种常用方法(作为创建替代方法)是根据具有相关区域的 IP 数据库检查用户的 IP。最常见的数据库是 GeoIP (http://www.maxmind.com)。如果您有兴趣,值得一看。然后,您可以继续将语言更改为该地区的语言。

        问候,
        丹尼斯 M.

        【讨论】:

        • 检查HTTP_ACCEPT_LANGUAGE 更加可靠,尤其是对于出国旅行的人。
        • 不要这样做!无法保证从任何特定 IP 访问的人实际上位于该 IP 的注册位置。除了访问其他国家/地区之外,还可以考虑代理服务器和具有限制性国家防火墙的国家/地区。
        • 就像我的帖子第一行所说的那样。我同意 HTTP_ACCEPT_LANGUAGE 更可靠。
        猜你喜欢
        • 1970-01-01
        • 2011-11-03
        • 1970-01-01
        • 1970-01-01
        • 2011-05-27
        • 2015-01-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多