网站(Google和/或您)应该如何对待Accept-Language标头?

ily*_* n. 13 localization http

很长一段时间以来,我一直对谷歌在下面的案例中的行为不满意,并且在意外地注意到80多个其他人都有同样的感觉(并且有20多人赞成谷歌错误报告的想法)我觉得它很有用利用SO在HTTP协议和网络文化方面的智慧.

每次我去不同的国家/地区并google.com从我的笔记本电脑访问或安装新的浏览器时,都会出现此问题.在包括越南在内的许多国家/地区,谷歌会自动重定向到本地化版本(例如google.com.vn),这是我实际上无法阅读的版本,因此我会在拼命尝试查找Google.com的英文链接中进行扫描.

它第一次发生时我很困惑,花了一些时间找出我的请求标题可能出错的地方; 正如我所料,我Accept-Language总是en-US或类似的东西en-US,ru;q=0.5.使用不同IP的进一步测试证实,即使您已登录,它们也会进行IP地理定位.后来我了解到有语言查询?hl=...,但仍然存在.

所以,我的问题是:你认为这是合理的和预期的行为吗,网络文化明智吗?其他网站也这样做吗?如果您要设计一个多语言网站,您会对来自.vnIP但使用en-US语言的人做些什么?

我想有不同的IP地理定位方法:

  • 反对:我认为这是不礼貌的:我明确告诉你我想要什么,给我一些其他的东西有什么好处?

  • :可能是一个人刚安装了默认语言包的浏览器,不知道Accept-*标题,仍然希望看到网站的本地化版本.

  • contra:然而,非技术人员可以通过安装语言包轻松更改接受语言.事实上,如果你去下载Firefox,你很可能会用你想要的语言下载一个,使用符合你意愿的接受语言标题.

请注意,我从1999年开始阅读HTTP 1.1规范,但它们似乎省略了Accept-Language应该考虑多少应该考虑的问题.

我相信这个问题属于SO作为网络应用程序设计问题.而且我还在考虑提交正式的错误报告(如果我说的话,这种行为远非网络标准).

col*_*ium 7

我认为这里有两个独立的问题.语言和国家.他们绝对不是一回事.HTTP规范明确地将Accept-Language请求标头字段定义为语言说明符,而不是国家说明符.

例如:en-US是指特定语言(主要在美国使用的英语版本),en-GB是指另一种语言(主要在英国使用的英语版本).这实际上与您目前在世界上的位置无关,它只是定义了您在查看网站时最容易接受的语言.这应该得到尊重,因为即使新手用户也应该使用他们语言的浏览器,默认情况下会发送正确的请求标头字段.

但这不是传统上使用它的网站.像另一张海报一样,我注意到网站将语言与国家等同,并将其网站定制为该国独特的政治限制/自由/公司在那里的产品,而不一定是语言.给出的例子是一家公司不在特定国家销售特定产品,但在其他国家销售特定产品.

在针对不同国家/地区展示哪些产品的情况下,对IP地址进行地理定位将比基于语言做出决策更好,但仍然不是完美的.如果我暂时在另一个国家,但想要订购并将其送回家,该怎么办?如果我的IP地址不能反映我的身体状况,那会怎么样?

是的,大多数时候,大多数人都能正常工作.但是为什么在地球上你会让人们难以用他们要求的语言获取网站?这只是糟糕的UI设计.