Localization 检测浏览器用户的最佳方法是什么';2012年是什么地方?

Localization 检测浏览器用户的最佳方法是什么';2012年是什么地方?,localization,internationalization,locale,Localization,Internationalization,Locale,我想检测用户的区域设置(而不是他们的位置)。问题是这些方法似乎都不可靠 接受语言标题 专业人士 如果浏览器已被更改为默认设置为其他内容,您将获得一个值列表,该列表可以显示真实的语言环境 默认情况下在IE中似乎是准确的 默认情况下IE中的精确是指默认情况下Windows上FF中的精确?(即从mozilla.org下载正确的版本) 与Windows上Opera的#3相同 缺点 服务器端开销和对缓存的干扰(或额外的XHR) 在所有英语系统的Chrome中,默认为“en-us”,除非您安装本地词典并将其

我想检测用户的区域设置(而不是他们的位置)。问题是这些方法似乎都不可靠

接受语言标题 专业人士

  • 如果浏览器已被更改为默认设置为其他内容,您将获得一个值列表,该列表可以显示真实的语言环境
  • 默认情况下在IE中似乎是准确的
  • 默认情况下IE中的精确是指默认情况下Windows上FF中的精确?(即从mozilla.org下载正确的版本)
  • 与Windows上Opera的#3相同
  • 缺点

  • 服务器端开销和对缓存的干扰(或额外的XHR)
  • 在所有英语系统的Chrome中,默认为“en-us”,除非您安装本地词典并将其拖到顶部
  • 不是用Safari寄来的
  • Safari和Chrome中默认不正确意味着,它会直接向用户提供错误的下载,并且还会安装自己的“en-us”版本
  • 结论

    • 在OSX上完全不可靠,因为默认情况下每个浏览器都会出错。然而,在IE和FF中,Windows应该是准确的
    window.navigator.language/userLanguage 专业人士

  • 最好的部分是它是一个很好的轻量级客户端解决方案
  • 默认情况下在IE中似乎是准确的
  • 默认情况下,在Windows上的FF中是否精确
  • 缺点

  • 在所有系统上的Safari中,默认情况下始终为“en-us”
  • 在所有英语系统的Chrome中,默认为“en-us”,除非您安装本地词典并将其拖到顶部
  • 在歌剧中总是“恩”
  • 结论

    • 甚至比接受语言更不可靠
    IP地理定位 专业人士

  • 独立于浏览器和操作系统语言设置工作
  • 缺点

  • 独立于浏览器和操作系统语言设置工作
  • 所有关于性能、定价、保持最新等的常规信息
  • 结论

    • 这是否真的有效取决于您为什么试图检测用户的区域设置。此方法提供的用户位置与i18n意义上的区域设置不同
    HTML5地理定位 专业人士

  • 通常与IP地理定位一样精确,无需服务器开销
  • 缺点

  • 要求用户允许您访问其位置
  • 浏览器支持(实际上支持看起来很好)
  • 结论

    • 不得不请求许可通常是交易的破坏者。与IP地理定位的结论相同
    总结 现在似乎检测用户的区域设置比以往任何时候都困难,而检测他们的物理位置变得更容易。最大的问题是Safari,它至少应该反映OSX上默认的操作系统设置,但Chrome也没有设置任何示例。即使人们将本地词典安装到Chrome上,我真的怀疑他们是否会将其拖到列表的顶部

    我不能责怪Mozilla和Opera被其他浏览器误传下载页面而拖累。然而,如果他们将下载页面切换到使用地理位置,而不是可能查看Accept语言,那么问题就会得到缓解


    但实际上,在IE不再占主导地位的情况下,还剩下什么选项来检测用户的区域设置呢?还剩下什么吗?

    这取决于您所说的“用户的区域设置”是什么意思。问题中列出的可能性反映了“用户所在地”的不同含义。它们都没有反映现代本地化中的适当含义,即用户偏好的一套文化习俗(包括按偏好顺序排列的人类语言列表)。找到它们的方法是询问用户

    当然,您只需要询问在上下文中真正重要的约定,您可以考虑将首选项存储在cookie、HTML5存储、用户数据库或其他地方。


    浏览器通常允许用户指定首选语言列表,以
    Accept Language
    标题发送。然而,这仅与区域设置概念的一个方面有关,大多数用户都不知道,并且已知其默认值经常不正确。

    截至2013年10月,似乎Accept Language Header在Mobile Safari中起作用。