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

时间:2009-06-19 23:39:19

标签: http localization

很长一段时间以来,我对以下情况下Google的行为感到不满意,并且在意外地注意到80+ other people有同样的感受之后(并且有20多人提出了Google错误报告的想法)我认为利用SO在HTTP协议和网络文化方面的智慧是有用的。

每次我访问其他国家/地区并从我的笔记本电脑访问google.com或安装新浏览器时,都会出现此问题。在包括越南在内的许多国家/地区,谷歌会自动重定向到本地化版本(例如google.com.vn),这是我实际上无法阅读的版本,所以我在拼命尝试用英语找到 Google.com < / em>链接。

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

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

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

  • contra :我认为这是不礼貌的:我明确告诉你我想要什么, 给我别的东西有什么好处?

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

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

请注意,我从1999年开始阅读HTTP 1.1 specification,但他们似乎忽略了应该真正考虑Accept-Language多少的问题。

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

8 个答案:

答案 0 :(得分:7)

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

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

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

对于针对不同国家/地区展示的产品,地理位置定位IP地址比根据语言做出决策要好,但仍然不完美。如果我暂时在另一个国家,但想要订购并将其送回家,该怎么办?如果我的IP地址没有反映我的身体状况,那会怎样呢?

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

答案 1 :(得分:2)

虽然我理解甚至分享你的挫败感,但有一些合理的理由可以做到这一点。

许多公司都有适合每个特定国家/地区的网站。例如,因为他们不会将所有产品销售给每个国家,或者因为特定国家/地区的法律在其网站上放置了一些特定义务(禁止使用产品线,添加法律声明,或者更新,......) 。

因此,他们将为您提供适合您所在国家/地区的版本,因为这应该是最有用的(如果我目前不在,则公司X在Z国销售产品Y无关紧要国家Z)。

答案 2 :(得分:1)

谷歌很聪明。我想他们会做他们做的事情,因为对于多数案例,如果你在越南,你很可能想要.vn - 我们是技术人员所以我们都知道接受语言和这样,但绝大多数人没有。

话虽如此,我认为他们可以至少对接受语言标题有礼貌,就是要显示某种通知(有点像本网站上显示的横幅)说“寻找”谷歌用英语?点击这里“如果标题表示他们想要英语 - 虽然这可能不适用于谷歌(因为他们没有这样做),我当然会考虑如果我正在制作一个多语种网站。

答案 3 :(得分:1)

我敢打赌,有更多的人使用的软件没有正确使用这个HTTP标头值,而不是生活在一个国家并且不会说/读本地语言的人。这可以解释谷歌的行为。

答案 4 :(得分:1)

我分享你的沮丧。我对很多网站感到很失望。大多数人做IP地理定位,但显然不了解浏览器文化设置。不用说,用户位置是关于用户喜欢哪种语言和文化的不可靠信息源。特别是在人口和文化混杂的全球化时代。

  

请注意,我从1999年开始阅读HTTP 1.1规范,但它们似乎省略了应该真正考虑接受语言的程度的问题。

现代浏览器积极支持此设置。没有理由不考虑它。如果请求中不存在标头,请执行地理位置,否则请遵守用户区域设置。

答案 5 :(得分:1)

我来自拉脱维亚,我更喜欢英语。 Firefox默认发送en-US,因为Windows区域设置,IE发送lv-LV(即使它是英文版)。所以accept-header是不可靠的。

恕我直言最好的方法是进行地理定位和接受语言检查,

如果地区和语言匹配=&gt;自动重定向 如果没有匹配=&gt;提供你最好的猜测并给用户一个选择(可能是屏幕的右上角是语言切换的最佳位置,因为它或多或少是UI标准)+记住在cookie中的选择

答案 6 :(得分:0)

我猜测非英语国家的很大一部分人使用报告英语接受语言的浏览器(也许是因为他们使用盗版英语版本,谁知道)。

除了英语编程网站上的少数人之外,他们中的大多数人都希望看到自己语言的网站,普通人不关心HTTP规范。这会使Accept-language标题基本无用,这是现实世界!=程序员幻想世界的完美例证。

答案 7 :(得分:0)

我同意Google行为不端。我怀疑这是结构性过度优化的结果。如果您将服务器放在靠近用户的位置,并且您的目标是获得极快的结果,那么最好不要在每个本地服务器群集中以单一语言提供单个搜索结果缓存。

这意味着当您输入IP时,与其说是IP地理位置定位,不如说是哪个服务器群集首先响应了您的请求。而且,在越南,离您最近的那个集群已经过优化,可以投放越南语网页。

我确定这是可以解决的,但是如果优化设计使他们难以修复,我不会感到惊讶。