2009-06-19 168 views
10

很长时间以来,我一直对Google的行为感到不满意,并且在意外地注意到80+ other people也有同样的感受(并且有超过20人赞同Google bug报告的想法),我认为这对于利用SO在HTTP协议和网络文化方面的智慧。网站(Google和/或您)应该如何处理Accept-Language标头?

每当我到其他国家/地区并从我的笔记本电脑访问google.com或安装新浏览器时,都会出现此行为。在包括越南在内的许多国家中,Google会自动将其重定向到一个本地化版本(例如google.com.vn),这是我实际上无法读取的版本,因此我在拼命试图找到Google.com英文链接进行扫描。

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

所以,我的问题是:你认为这是合理的和预期的行为,webculture明智吗?其他网站是否也这样做? 如果您要设计一个多语言网站,您将如何处理来自.vn IP但具有en-US语言的人员?

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

  • 禁忌:我认为这是不礼貌的:我告诉你明确我想要什么, 什么好的给我点别的?

  • :这可能是一个人刚刚安装了默认的语言包浏览器,没有任何想法有关Accept-*头,并且还希望看到一个网站的本地化版本。

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

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

我相信这个问题属于SO作为一个网络应用程序设计问题。而且我仍然在考虑提交一份正式的错误报告(如果我正确地认为这种行为远离网络标准)。

+1

忽略Accept-Language标题现在真的让我失望了,因为我住在国外但是说英语。我在这里发表了关于我的经历的博客:http://www.planetjones.co.uk/blog/27-04-2014/web-internationalization-often-inconsistent.html – planetjones 2014-04-27 08:30:44

+0

我发现这个网站做得非常好:https://www.crazy-factory.com它首先尝试获得Accept-Language头,如果不存在,它会检测使用GeoIP,这正是每个人都应该做的。 – 2016-08-24 02:06:16

回答

6

我认为这里有两个独立的问题。语言和国家。他们绝对不是一回事。 HTTP规范明确定义了接受语言请求标头字段语言说明符,而不是国家说明符。例如:en-US是指特定语言(主要在美国使用的英语版本),en-GB是指另一种语言(主要在英国使用的英语版本)。这与您目前在世界上的位置无关,只是定义了您在查看网站时最能接受的语言。 应该受到尊重,因为即使新手用户应该有一个浏览器在他们的语言默认情况下会发送正确的请求标头字段。

但这不是网站传统上使用它的原因。像其他的海报,我已经注意到,网站等同于语言与国家和定制他们的网站,以该国的独特政治限制/自由/该公司的产品有,不一定是语言。给出的例子是一家公司,该公司不在特定国家销售特定产品,但在其他国家销售。

在什么样的产品来显示不同的国家,将进行地理定位IP地址会比基于使得从语言决定更好,但它仍然是不完美的情况。如果我暂时在另一个国家,但想要点东西并将其送回家,该怎么办?如果我的IP地址不能反映我的身体状况,那么这不完美?

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

1

谷歌很聪明。我想他们会这样做,因为如果你在越南的话,你很可能想要大部分案例.vn - 我们是技术人员,所以我们都知道接受语言等等,但绝大多数人都不会“T。

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

+1

你说的绝对合理 - 你介意测试一下.vn的谷歌网页,看看它们在英文链接中是否合理?我个人认为这很令人沮丧。 – 2009-06-19 23:57:18

+0

我不确定你看到了什么,但是我的网页没有显示任何特别暗示谷歌认为我可能想要英语的任何内容;尽管如此,它确实有你在底部说的“Google.com in English”链接。 – 2009-06-19 23:59:38

+0

是的,这就是我说的 - 他们并不尊重你的标题。好的,在这种情况下,您可以在那里手动导航,但如果您是通过代理服务器获得的,那么您将从google.com获得这些内容。 – 2009-06-20 00:02:25

1

我敢打赌,有更多的人使用不正确使用之外还有谁住在一个国家,不说这个人的HTTP标头值的软件/读取的母语。这将解释Google的行为。

2

虽然我明白,甚至分享你的无奈,也有一些合法的理由这样做。

许多公司都有针对每个特定国家的网站。例如,因为他们不把所有产品出售给每个国家,或者因为某个特定国家的法律在其网站上规定了一些具体义务(禁止一条产品线,增加一个法律通知或更多......) 。

因此,他们将竭诚为您量身定做您的,因为这应该是国内的版本是最有用的(也不要紧,X公司的产品销售中的Y Z国,如果我不是现在在Z国)。

0

我猜的人在非英语国家显著比例使用报告接受语言英语的(也许是因为他们使用盗版,英文版本,谁知道)的浏览器。

其中大部分人,除了英语语言编程网站上的少数民族声音:),都希望能够以自己的语言看到网站,而普通人不会关心HTTP规范。这将使Accept-language头部实质上无用,这是一个真实世界!=程序员幻想世界的完美例子。

1

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

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

现代浏览器主动支持此设置。没有理由不考虑。如果请求中不存在标题,请执行地理定位,否则请尊重用户区域设置。

1

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

恕我直言,最好的办法是做既地理位置和接受语言检查,

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

相关问题