如何在PHP中识别用户语言

3
有没有办法解析HTTP_USER_AGENT以获取当前用户的语言?
4个回答

5

尝试:

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

+1 如果你只需要检测最受支持的语言,那么这是最简单的解决方案。 - Maerlyn
HTTP_ACCEPT_LANGUAGE: 'pl-PL,pl;q=0.8,en-US;q=0.6,en;q=0.4'这是一个很好的解决方案,因为我只需要识别一种语言,所以我检查了该字符串中该语言的存在,并且它有效。但我有一个问题: 整个字符串代表什么?q属性是什么? - Galileox86

2

1
在理论上,你可以尝试绕过用户代理做一些体操,但也有一个 Accept-Language 头部似乎可以解决问题!

0

另一种常见的方法(作为创建替代方案)是将用户的IP与具有关联地区的IP数据库进行比较。这方面最常用的数据库是GeoIP(http://www.maxmind.com)。如果您感兴趣,可以看一下它。然后,您可以继续将语言更改为该地区的语言。

敬礼,
丹尼斯·M。


检查HTTP_ACCEPT_LANGUAGE更加可靠,特别是对于旅居国外的人来说。 - Maerlyn
不要这样做!无法保证来自特定IP的访问者实际上位于IP注册的位置。除了访问其他国家,还要考虑代理服务器和有限制性国家防火墙的国家。 - Charles
正如我帖子中的第一行所说,这只是一个替代方案。我同意HTTP_ACCEPT_LANGUAGE更可靠。 - RageD

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接