我选择将此视为一个问题,因为它在original post的评论中产生了如此多的争论。
很有趣的是,很多SO(开发人员)的人都没有获得本地化。以下是我对它应该如何运作的看法:
在我查看用户的文化偏好设置的所有浏览器(以及那里的.NET开发人员)中,它采用以下格式: 语言文化。
所以我们有:
有关.NET框架支持的完整列表,请参阅MSDN。
当我访问一个网站时,它知道我需要英语语言,它知道我对它倾向于英国感兴趣(数字格式,日期格式)。所以,当我去google.com并且它带我去google.de(因为我的IP地址),如果google.de用英语向我显示所有内容,但完全错误,因为google.de是德语的。我几乎无法控制我的IP地址,但可以完全控制我的语言和文化设置。如果你有兴趣,微软的新搜索引擎(bing.com)会妥善处理事情。让我们希望微软可以学习如何进行搜索以及谷歌或谷歌可以学习本地化以及微软;)
MSDN这里有另一篇好文章了解更多信息
那么您对网站应如何处理本地化的建议是什么?
答案 0 :(得分:13)
这里的解决方案非常简单,开发者做其他任何事都很烦人。
尊重浏览器设置。如果它说英语,那么上帝就是英语。
如果你绝对必须,那么只需在顶部添加一个按钮即可选择其他内容。然后,只有那时,你是否覆盖浏览器。
如果您认为自己的方式更好。停下来,让别人打你。不是。根据需要重复。
摆脱那些要求某人所在国家/地区的网页启动页面。只需根据浏览器默认设置显示您的普通页面,然后参阅上面的第2项。 我还没有碰到一个真正重要的网站。 更新: 几年后,现在有理由这样做。 2013年,英国制定了围绕cookie的政策,网站运营商需要尊重该国家的网站,这些网站向该国的访问者提供网页。因此,请注意您所在国家/地区的法律。
如果您的网站确实由多个国家/地区的多台服务器提供服务,那么您可以检测到哪台服务器真的更接近于服务。如果你不能,只要停止重定向疯狂,然后不要试图为他们做出决定。
答案 1 :(得分:4)
如果可以使用本地化设置 - 包括但不限于HTTP Accept-Language标头 - 那么网站绝对应该尊重它们。
反对这一点的常见理由是“普通用户”不够聪明,无法找到语言设置并将其配置为与自己的偏好相匹配,因此这些设置通常是不正确的(除非用户碰巧在美国境内。)
这是错误的解决方案。
如果用户群的大部分用户无法找到(或无法找到)浏览器的语言设置,那么正确的回复是让他们更容易找到,而不是让网站忽略他们设置的内容。也许可以从程序的顶级菜单直接访问语言设置,而不是将其隐藏在过于复杂的“首选项”对话框中。也许在程序第一次运行时询问语言首选项。也许使用操作系统的本地化设置。或者可能是完全不同的东西,如果这是接近确定浏览器将发送有关用户偏好的正确信息所需要的东西。但是,不要只是举手,说“它没用,也无法修复!”,并忽略它。
其他答案已经讨论过让用户在网站上的个人资料中选择语言或区域设置,这也很重要,绝对应该是标准的,但这只是为用户的正常设置提供特定于站点的覆盖。但是,如果用户没有在网站上覆盖此操作,则正确的操作是默认为其浏览器设置中指定的首选可用语言/区域设置,而不是基于其IP地址的地理位置。
答案 2 :(得分:3)
在我职业生涯的某个阶段,我维护了部分TCP / IP堆栈。这让我处于一种罕见的位置,即非常清楚地知道IP地址不应该被用作网络层地址以外的任何其他地址。 IP地址和位置之间的任何关联都是巧合 - 它是地址分配方式的工件,而不是IP地址的基本部分。
(它们也没有用作计算机的唯一标识符,但这是一个不同的故事)
我建议将地理位置排除在外。 HTTP标准包括浏览器或其他用户代理在每个请求中包含用户文化偏好的方式(并且记住,它是加权偏好的列表,不一定只是一种文化)。由于浏览器比用户更接近用户,因此您应该尊重此请求,至少作为默认值。
然后允许用户暂时或永久地更改他们对您网站的偏好。甚至可以让用户选择使用不同的文化设置查看不同的内容。一个疯狂的例子是包含政治新闻和技术信息的网站。有人会用他们的“自然”语言来获取新闻,但是用英语提供技术信息是非常合理的。
最后,可以使用后备模式。例如,如果您有一个基于其区域(例如经销商)为用户提供服务的站点,则日语内容可能仅存在于您的亚洲区域子站点上。访问您的EMEA网站的日语用户可能只是看到英语内容,这可能是他的最后选择。
答案 3 :(得分:3)
在我创建的网站上,我通常遵循以下模式:
/en/page
或其他(子)域/page
)打开网址,我会开始猜测:
Accept-Language
是否可用,是否可以将其映射到网站上提供的语言?/en/page
可以轻松切换为/xx/page
理想情况下,我只需要猜测一次,然后使用用户的cookie,或者用户直接访问所需的页面。
答案 4 :(得分:2)
我同意,让用户有机会在您的应用中使用用户首选项覆盖它们。这对于时区本地化问题尤其方便,而这些问题无法从浏览器设置中获得。
答案 5 :(得分:1)
我冒着被认为是不礼貌的风险,但我认为我的post on this topic会提供更多信息,主要是因为我的帖子确实是一个问题。我很抱歉,我之前没有找到那个帖子。
答案 6 :(得分:1)
智能默认值与用户覆盖它们的能力有所不同。在我曾经使用过的大型应用程序中,我假设用户的语言环境来自浏览器设置,地理位置等等 - 但总是为用户提供了一种轻松切换的方式。
我不知道怎么会这样做。不给用户机会纠正你的假设是非常有问题的,因为你会在某些时候弄错。
此外:
我认为你的问题在于,虽然你可以编辑你的语言环境设置,但如果它们看起来与默认设置基本相同,那么应用程序开发人员无法告诉你是否故意离开它,或者因为你没有知道改变它的方式或原因。
我建议尊重用户的本地化设置,除了,如果设置是压倒性的默认设置,用户可能不会更改。例如,我相信绝大多数(90%以上)在越南设置了en-us
设置的用户,只要看到越南语内容而不是美国英语内容,只要有一个微不足道的方式,几乎总能得到更好的服务。切换区域设置。另一方面,如果在美国使用地理位置的用户有越南语设置,请务必提供他或她的越南语内容。
这对越南的美国英语用户有害吗?当然。但它也是最大数量的最大好处,并有助于确保普通的非技术用户获得最佳的实际体验。在我们开启计算机之前,我们可以向用户的头部拿枪并强迫他们诚实地宣布他们的语言/文化偏好,我们将需要这样的启发式。
答案 7 :(得分:0)
我已经看到了来自客户的足够强有力的错误报告,当调查结果是其中一个用户的浏览器文化设置错误时,我们现在让客户使用配置设置覆盖浏览器。浏览器的文化设置经常是错误的,它不是很有用,对大多数最终用户来说也很难找到或改变它。