很长一段时间以来,我一直对谷歌在以下情况下的行为不满意,并且在不小心注意到 80+ other people 之后有同感(并且有 20 多人支持 Google 错误报告的想法)我认为利用 SO 在 HTTP 协议(protocol)和网络文化方面的智慧很有用。
每次我去不同的国家并从笔记本电脑访问 google.com
或安装新浏览器时,都会出现此行为。在包括越南在内的许多国家/地区,Google 会自动重定向到本地化版本(例如 google.com.vn ),这是我实际上看不懂的版本,因此我绝望地扫描它以尝试找到英文版的 Google.com 链接。
第一次发生这种情况时,我感到很困惑,并花了一些时间找出我的请求 header 可能出了什么问题;如我所料,我的 Accept-Language
始终是 en-US
或类似 en-US,ru;q=0.5
的内容。对不同 IP 的进一步测试证实,即使您已登录,它们也会进行 IP 地理定位。后来我了解到有一个语言查询 ?hl=...
,但仍然如此。
那么,我的问题是:您认为从网络文化角度来看,这是合理且预期的行为吗?其他网站也这样做吗? 如果您要设计一个多语言网站,您会如何处理来自 .vn
IP 但使用 en-US
语言的人?
我想有不同的 IP 地理定位方法:
contra:我认为这是不礼貌的:我明确告诉你我想要什么, 给我别的东西有什么好处?
pro: 可能是刚安装了默认语言包的浏览器,对
Accept-*
header一无所知,仍然会更喜欢查看网站的本地化版本。contra:然而,非技术人员可以通过安装语言包轻松更改接受语言。事实上,如果您去下载 Firefox,您很可能会下载您想要的语言版本,并带有符合您意愿的接受语言 header 。
请注意,我阅读了 HTTP 1.1 specification从 1999 年开始,但他们似乎忽略了多少 Accept-Language
的问题应该真正考虑在内。
我认为这个问题属于 SO 作为网络应用程序设计问题。而且我仍在考虑提交正式的错误报告(如果我认为这种行为与网络标准相去甚远的话)。
最佳答案
我认为这里确实有两个不同的问题在起作用。语言和国家。它们绝对不是同一回事。 HTTP 规范将 Accept-Language 请求 header 字段明确定义为语言 说明符,而不是国家/地区说明符。
例如:en-US 指的是一种特定的语言(主要在美国使用的英语版本),en-GB 指的是另一种语言(主要在英国使用的英语版本)。这实际上与您目前在世界上的位置无关,它只是定义了您在浏览网站时最能接受的语言。这应该得到尊重,因为即使是新手用户也应该有一个使用他们语言的浏览器,默认情况下会发送正确的请求 header 字段。
但这并不是网站传统上使用它的方式。像另一位发帖人一样,我注意到网站将语言等同于国家/地区,并根据该国家/地区独特的政治限制/自由/公司在那里提供的产品定制网站,不一定针对语言。给出的例子是一家公司不在特定国家/地区销售特定产品,但在其他国家/地区销售。
在为不同的国家展示什么产品的情况下,地理定位 IP 地址会比根据语言做出决定更好,但它仍然不是完美的。如果我暂时在另一个国家/地区但想订购一些东西并将其送回国内怎么办?如果我的 IP 地址不能反射(reflect)我的实际位置怎么办?这不是完美的吗?
是的,大多数时候事情对大多数人来说都是正常的。但是,到底为什么要让人们很难以他们要求的语言访问该网站?这只是糟糕的 UI 设计。
关于http - 网站(Google 和/或您)应该如何处理 Accept-Language header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1020494/