在2012年检测浏览器用户的区域设置的最佳方法是什么?

Kyl*_*ane 23 locale localization internationalization

我想检测用户的区域设置(不是它们的位置).问题是没有一种方法看起来可靠.

接受语言标题

优点

  1. 您的意思是获取一个值列表,如果浏览器已被更改为默认值,则可以显示真正的区域设置.
  2. 默认情况下IE似乎准确无误?
  3. 默认情况下在IE中准确表示默认情况下在Windows上的FF是否准确?(即从mozilla.org下载正确的版本)
  4. 与Windows上的Opera#3相同?

缺点

  1. 服务器端开销和干扰缓存(或额外的XHR).
  2. 除非您安装本地词典并将其拖到顶部,否则在所有英语系统的Chrome中默认为"en-us".
  3. Safari不发送?
  4. Safari和Chrome默认情况下不正确意味着http://mozilla.orghttp://opera.com会向用户发送错误的下载内容,并且还会安装自己的"en-us"版本.

结论

  • 在OSX上完全不可靠,因为默认情况下每个浏览器都会出错.但是在Windows上的IE和FF应该是准确的.

window.navigator.language /用户语言

优点

  1. 最好的部分是它是一个很好的轻量级客户端解决方案.
  2. 默认情况下IE似乎准确无误?
  3. 默认情况下,Windows上的FF似乎准确无误?

缺点

  1. 在所有系统上,默认情况下始终在Safari中"启用".
  2. 除非您安装本地词典并将其拖到顶部,否则在所有英语系统的Chrome中默认为"en-us".
  3. 始终只是Opera中的"en".

结论

  • 比Accept-Language更不可靠.

IP地理位置

优点

  1. 独立于浏览器和操作系统语言设置工作.

缺点

  1. 独立于浏览器和操作系统语言设置工作.
  2. 通常关于性能,定价,保持最新等等.

结论

  • 这是否作品真的取决于为什么你要检测用户的语言环境.此方法为您提供用户的位置,该位置与i18n意义上的区域设置不同.

HTML5地理位置

优点

  1. 通常与没有服务器开销的IP地理定位一样准确.

缺点

  1. 要求用户允许您访问其位置.
  2. 浏览器支持(实际上支持看起来很不错).

结论

  • 必须要求许可通常是一个交易破坏者.与IP地理定位相同的结论.

摘要

现在看来检测用户的区域设置比以往更难,而检测到它们的物理位置变得更容易.最大的罪犯是Safari,至少应该在OSX上默认反映操作系统设置,但Chrome也没有设置任何示例.即使人们将本地字典安装到Chrome,我也很怀疑他们是否也会将其拖到列表的顶部.

我不能责怪Mozilla和Opera被其他浏览器误导到他们的下载页面拖累.但是,如果他们将下载页面切换为使用地理位置而不是大概查看Accept-Language,则可以缓解问题.

但实际上,由于IE不再占主导地位,还有哪些选项可以检测用户的区域设置?还剩下什么吗?

Juk*_*ela 2

这取决于 \xe2\x80\x9cuser\xe2\x80\x99s locale\xe2\x80\x9d 的含义。问题中列出的可能性反映了 \xe2\x80\x9cuser\xe2\x80\x99s locale\xe2\x80\x9d 的不同含义。它们都没有反映现代本地化中的充分含义,即用户首选的文化约定集(包括按偏好顺序排列的人类语言列表)。找到这一点的方法是询问用户有关它们的信息。

\n\n

当然,您应该只询问在上下文中真正重要的约定,并且您可以考虑将用户表达的首选项存储在 cookie、HTML5 存储、用户数据库或其他位置。

\n\n

浏览器通常允许用户指定要在标头中发送的首选语言列表Accept-Language。然而,这仅涉及区域设置概念的一个方面,大多数用户都不知道,并且众所周知,它经常具有不正确的默认值。

\n