代码之家  ›  专栏  ›  技术社区  ›  ilya n.

网站(谷歌和/或你)应该如何对待接受语言标题?

  •  12
  • ilya n.  · 技术社区  · 15 年前

    很长一段时间以来,我一直对谷歌在下面的案例中的行为感到不高兴,在无意中注意到这一点之后 80+ other people 同样的感觉(20多人赞成谷歌bug报告的想法),我认为利用So在HTTP协议和网络文化方面的智慧是有用的。

    每次我去一个不同的国家并进入 google.com 从我的笔记本电脑或安装一个新的浏览器。在许多国家,包括越南,谷歌自动重定向到本地化版本(例如 google.com.vn ,实际上我看不懂的那本书,所以我不顾一切地扫描它,想找到 英文版google.com 链接。

    第一次发生这种情况时,我很困惑,花了一些时间找出我的请求头可能有什么问题;正如我所预期的,我的 Accept-Language 总是 en-US 或者类似的 en-US,ru;q=0.5 . 使用不同IP进行的进一步测试确认,它们执行IP地理定位,即使在您登录时也是如此。后来我知道有一个语言查询 ?hl=... 但仍然如此。

    所以,我的问题是:你认为这是合理的预期行为吗,从网络文化的角度来看?其他网站也这么做吗? 如果你要设计一个多语言网站,你会对一个来自 .vn 但IP 恩努斯 语言?

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

    • 逆反 我认为这是不礼貌的:我明确地告诉你我想要什么, 给我点别的有什么好处?

    • 赞成的意见 :可能是某个人刚刚安装了带有默认语言包的浏览器,而不知道 Accept-* 标题,并且仍然希望看到网站的本地化版本。

    • 逆反 :但是,非技术人员可以通过安装语言包轻松更改接受语言。事实上,如果你去下载火狐,很可能你会下载一个你想要的语言,带有符合你意愿的接受语言标题。

    注意我读了 HTTP 1.1 specification 从1999年开始,但他们似乎忽略了 Accept-Language 应该认真考虑。

    我认为这个问题属于SO,作为一个Web应用程序设计问题。我仍在考虑提交一份正式的bug报告(如果我是正确的,那么这种行为远远不符合Web标准的话)。

    8 回复  |  直到 6 年前
        1
  •  7
  •   colithium    15 年前

    我认为这里确实有两个不同的问题。语言和国家。他们肯定不是一回事。HTTP规范将接受语言请求头字段显式定义为 语言 说明符,而不是国家说明符。

    例如:en-us指的是一种特定的语言(大部分在美国使用的英语版本),en-gb指的是另一种语言(大部分在英国使用的英语版本)。这真的与你目前在世界上的位置无关,它只是定义了你在浏览网站时最能接受的语言。那 应该 因为即使是新手用户也应该有他们的语言浏览器,默认情况下,浏览器会发送正确的请求头字段。

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

    在为不同国家展示什么产品的情况下,地理定位IP地址比基于语言做出决定要好,但它仍然不完美。如果我暂时在另一个国家,但想订购一些东西,然后把它送回家呢?如果我的IP地址不能反映我的身体状况,那又会怎样呢?

    是的,大多数人都能正常工作。但你为什么要让人们很难用他们要求的语言来访问这个网站呢??这只是糟糕的用户界面设计。

        2
  •  2
  •   Ksempac    15 年前

    尽管我理解甚至分享你的沮丧,但有一些正当的理由可以做到。

    许多公司都有针对每个特定国家的网站。例如,因为他们不向每个国家销售他们的所有产品,或者因为某个特定国家的法律在他们的网站上规定了某些特定的义务(禁止的一系列产品,添加的法律公告,或捕鲸船,…)。

    因此,他们将为您提供适合您所在国家的版本,因为这是最有用的(如果我目前不在Z国,X公司在Z国销售产品Y并不重要)。

        3
  •  1
  •   Paolo Bergantino    15 年前

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

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

        4
  •  1
  •   Spencer Ruport    15 年前

    我敢打赌,比起生活在一个国家不说/不读母语的人,更多的人使用不正确使用这个HTTP头值的软件。这可以解释谷歌的行为。

        5
  •  1
  •   user151323    12 年前

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

    请注意,我从1999年开始阅读了HTTP1.1规范,但它们似乎忽略了这样一个问题:到底应该考虑多少接受语言。

    现代浏览器积极支持此设置。没有充分的理由不加以考虑。如果请求中不存在头,请执行地理位置,否则请尊重用户区域性设置。

        6
  •  1
  •   Karlis    12 年前

    我是拉脱维亚人,我更喜欢英语。由于Windows区域设置的原因,firefox默认发送en-us,即发送lv-lv(即使是英文版本)。所以接受头是不可靠的。

    我认为最好的办法是同时进行地理定位和接受语言检查,

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

        7
  •  0
  •   dso    15 年前

    我猜想,在非英语国家,相当大一部分人使用的浏览器接受英语(也许是因为他们使用的是盗版的英语版本,谁知道呢)。

    他们中的大多数人,除了在一个英语编程网站上发声的少数人之外,都希望看到自己语言的网站,而普通人并不关心HTTP规范。这将使accept-language头在本质上毫无用处,成为现实世界的一个完美例子!=程序员幻想世界。

        8
  •  0
  •   Chris Moschini    6 年前

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

    这意味着,当您的IP进入时,与其说是IP地理位置,不如说是哪个服务器集群首先响应了您的请求。在越南离你最近的那个集群被优化为在越南提供页面服务。

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