我听说过许多依赖于 csv 或数据库等文件的方法,但我认为在我的网站上上传一个额外的数据库来做到这一点并不是一个好主意好方法还是不好,因为服务器会等待外部提供商的响应,这会减慢网站速度?
4 回答
我会使用 PHP 变量$_SERVER['HTTP_ACCEPT_LANGUAGE'],在我的情况下,它保存这个值sk,cs;q=0.8,en-us;q=0.5,en;q=0.3。
这意味着,我的浏览器语言是“斯洛伐克语”。
我认为,这个选项更好。想象一下,你是英国人,但你正在某个地方度假。
你在那边用你的笔记本……你的IP地址会告诉你的服务器,你在克罗地亚,你想用他们的语言获取内容……但是你的浏览器仍然说你是说英语的人……那里是区别;)
我不会为此使用 GeoIP - 当它失败或产生错误结果时有太多场景。
正如@Paul 所说,HTTP Accept-Language 标头指定了浏览器中定义的用户语言首选项。您可以通过访问浏览器语言检测来查看您的浏览器设置。
有关实际工作示例,请参阅Parse Accept-Language 以检测用户的语言。
还要记住,爬虫不使用 Accept-Language,因此确保您有一个使其可用的策略(例如每种语言内容的 URL)并包含在站点地图中是很重要的。
另请参阅Apache 模块 mod_negotiation以了解内容选择。
无论如何,将语言选择基于 IP 地址实际上并不是一个好主意。如果我是从德国浏览的美国人,而我的德语不太好怎么办?您最符合标准的方式(我认为)是解析 Web 请求的 Accept-Language 标头,并使用它来设置用户的默认值,但始终为他们提供一种覆盖默认值并选择他们的语言(您'然后存储在他们的会话或用户偏好中)