14

我选择将其作为一个问题本身,因为它在原始帖子的评论中引起了如此多的争论。

有趣的是,SO 上的很多人(他们是开发人员)只是没有获得本地化。这是我对它应该如何工作的看法:

在我查看过的所有浏览器中(以及那里的 .NET 开发人员),当您查看用户的文化偏好时,它采用以下格式:语言-文化。

所以我们有:

  • zh-CN - 英语 - 英国文化
  • en-US - 英语 - 美国文化
  • en - 英语 - 不变的文化。
  • fr-FR – 法语 – 法国文化
  • fr-CH – 法语 – 瑞士文化
  • de-CH – 德语 – 瑞士文化
  • de-DE – 德语 – 德国文化

有关.NET 框架支持的完整列表,请参阅MSDN 。

当我访问一个网站时,它知道我想要从 en 部分开始使用英语,并且它知道我对它偏向英国感兴趣(数字格式、日期格式)。因此,当我访问 google.com 并将我带到 google.de(因为我的 IP 地址)时,如果 google.de 以英语向我显示所有内容但由于 google.de 是德语完全错误,那完全没问题。我几乎无法控制我的 IP 地址,但可以完全控制我的语言和文化设置。如果您有兴趣,Microsoft 的新搜索引擎 (bing.com) 会处理得当。让我们希望微软可以像谷歌一样学习如何进行搜索,或者谷歌可以像微软一样学习本地化;)

MSDN有另一篇好文章在这里了解更多信息

那么您对网站应如何处理本地化有什么建议?

4

8 回答 8

13

这里的解决方案非常简单,开发人员做任何其他事情都很烦人。

  1. 尊重浏览器设置。如果它说英语,那么上帝就是英语。

  2. 如果您绝对必须,那么只需在顶部添加一个按钮即可选择其他内容。然后,只有这样,你才覆盖浏览器。

  3. 如果你认为你的方法更好。停下来,让别人打你一巴掌。它不是。根据需要重复。

  4. 摆脱那些要求某人所在国家/地区的网页启动页面。只需根据浏览器默认值显示您的正常页面,然后查看上面的第 2 项。 我还没有遇到真正重要的网站。 更新: 几年后,现在有理由这样做。2013 年,英国制定了有关 cookie 的政策,网站运营商需要尊重位于该国家/地区的网站,这些网站为来自该国家/地区的访问者提供页面。因此,请注意您所在国家/地区的法律。

  5. 如果您碰巧有一个站点确实由多个国家/地区的多台服务器提供服务,那么您可能可以检测到您的哪一台服务器确实更接近提供服务。如果你做不到,就停止重定向的疯狂,然后不要试图为他们做出决定。

于 2009-06-29T19:36:02.180 回答
4

如果本地化设置可用 - 包括但不限于 HTTP Accept-Language 标头 - 那么网站绝对应该尊重它们。

反对这一点的常见论点是“普通用户”不够聪明,无法找到语言设置并配置它们以匹配他们自己的偏好,因此这些设置通常是不正确的(除非用户恰好在我们)。

那是错误的解决方案。

如果很大一部分用户找不到(或懒得找)他们的浏览器语言设置,那么正确的反应是让他们更容易找到,而不是让网站忽略他们的设置到。也许可以从程序的顶级菜单直接访问语言设置,而不是将其隐藏在过于复杂的“首选项”对话框中。也许在程序第一次运行时询问语言偏好。也许使用操作系统的本地化设置。或者可能是完全不同的东西,如果这就是几乎可以肯定浏览器将发送有关用户偏好的正确信息所需要的。但不要只是举手,说“没用,修不了!

其他答案谈到让用户在网站上的个人资料中选择语言或区域设置,这也很重要并且绝对应该是标准的,但这只是为了为用户的正常设置提供特定于站点的覆盖。但是,如果用户没有在网站上覆盖此设置,正确的操作是默认为其浏览器设置中指定的最喜欢的可用语言/区域设置,而不是基于其 IP 地址的地理位置。

于 2009-07-13T19:37:14.237 回答
3

在我职业生涯的某一时刻,我维护了部分 TCP/IP 堆栈。这让我非常了解 IP 地址不应该用作网络层地址以外的任何东西。IP 地址和位置之间的任何关联几乎都是巧合——它是地址分配方式的产物,而不是 IP 地址含义的任何基本部分。

(它们也不能用作计算机的唯一标识符,但那是另一回事)

我建议将地理位置排除在外。HTTP 标准包括一种让浏览器或其他用户代理在每个请求中包含用户文化偏好的方法(请记住,它是加权偏好列表,不一定只是一种文化)。由于浏览器比您更接近用户,因此您应该尊重此请求,至少作为默认请求。

然后可以允许用户临时或永久更改他们对您网站的偏好。甚至可以允许用户选择查看具有不同文化设置的不同内容。一个疯狂的例子是一个同时包含政治新闻和技术信息的网站。有人想要他们的“自然”语言的新闻,但想要英语的技术信息,这是很合理的。

最后,可以有一个后备模式。例如,如果您有一个根据用户所在地区(例如经销商)为用户提供服务的网站,那么日语内容可能只存在于您的亚洲地区子网站上。访问您的 EMEA 网站的说日语的用户可能只是卡在看到英文内容,这很可能是他的最后选择。

于 2009-06-26T17:58:49.397 回答
3

在我创建的网站上,我通常遵循以下模式:

  • 每个页面都有一个唯一的 URL,其中包含某处的语言,通常类似/en/page或不同的(子)域
  • 如果用户打开一个未指定语言的 URL,就像/page我开始猜测的那样:
    • 上一个会话的 cookie 是否可用?
    • 如果没有,是否Accept-Language可用,我可以将其映射到网站上可用的语言吗?
    • 如果没有,如果有可能,我可以通过 IP 猜测吗?
    • 如果不是,则默认为站点的默认语言。
  • 我使用猜测的语言设置了一个 cookie,并将用户重定向到具有适当 URL 的站点
  • 我在每个页面上都设置了语言开关,因此/en/page可以轻松切换到/xx/page
    • 如果用户切换到不同的页面,Cookie 会得到更新

理想情况下,我只需要猜测一次,然后使用用户的 cookie,或者用户直接访问所需的页面。

于 2009-07-31T06:25:03.263 回答
2

我同意,让用户有机会在您的应用中使用用户偏好来覆盖它们。这对于您无法从浏览器设置中获得的时区本地化问题特别方便。

于 2009-06-23T00:01:35.753 回答
1

我冒着被认为不礼貌的风险,但我认为我关于这个主题的帖子会有更多信息丰富的答案,主要是因为我的帖子真的是一个问题。我很抱歉,虽然我之前没有找到那个帖子。

于 2009-06-19T23:50:41.153 回答
1

智能默认值与用户覆盖它们的能力之间存在差异。在我从事过的大型应用程序中,我从浏览器设置、地理位置等假设用户的区域设置——但总是为用户提供一种轻松切换的方式。

我不知道别人会怎么做。不给用户机会来纠正你的假设是很成问题的,因为你有时会弄错。

添加:

我认为您的问题是,虽然您可以编辑您的语言环境设置,但如果它们看起来与默认设置基本相同,那么应用程序开发人员无法判断您是否有意保留它,或者因为您不知道如何或者为什么要改变它。

我建议尊重用户的本地化设置,除非设置是压倒性的默认设置,用户可能不会更改。例如,我相信绝大多数 (90+%) 的用户en-us在越南的地理位置设置几乎总是会通过查看越南内容而不是美国英语内容得到更好的服务,只要有一种简单的方式来切换区域设置。另一方面,如果位于美国的用户具有越南语设置,请务必向他或她提供越南语内容。

这对越南的美国英语用户来说是不是很烦人?当然。但这也是对大多数人的最大好处,并有助于确保普通的非技术用户获得最佳的真实体验。直到我们可以用枪指着用户的脑袋并迫使他们在打开计算机之前诚实地声明他们的语言/文化偏好,我们将需要这样的启发式方法。

于 2009-06-22T17:28:57.683 回答
0

我已经看到来自客户的足够有力的错误报告,当调查结果是其中一个用户的浏览器文化设置错误时,我们现在让客户使用配置设置覆盖浏览器。浏览器的文化设置经常出错,以至于它不是很有用,对于大多数最终用户来说也很难找到或更改它。

于 2009-07-07T10:43:35.003 回答