在浏览器中确定用户区域设置的最佳方法

我有一个网站(Flash)本地化为十几种语言,并且我想根据用户的浏览器设置自动定义默认值,以最大程度地减少访问内容的步骤。

仅供参考,由于代理限制,我无法使用服务器脚本,因此我认为JavaScript或ActionScript将适合解决此问题。

  1. “猜测”用户区域设置的最佳方法是什么?

  2. 是否有任何现有的简单类/函数可以帮助我(没有复杂的本地化软件包)?特别是以一种聪明的方式将所有可能的语言分解成较小的数量(我拥有的翻译版本)。

  3. 我可以信任这样的解决方案?

  4. 还有其他解决方法或建议吗?

回答:

正确的方法是查看发送到服务器的HTTPAccept-Language标头。它包含用户已配置其浏览器首选的语言的排序后的加权语言列表。

不幸的是,此标头不可用于在JavaScript内部读取;您所获得的是navigator.language,它告诉您安装了什么本地化版本的Web浏览器。这不一定与用户的首选语言相同。相反,在IE上,您获得systemLanguage(操作系统安装的语言),browserLanguage(与相同language)和userLanguage(用户配置的OS区域),它们都无济于事。

如果必须在这些属性之间进行选择,那么我会先嗅userLanguage一下,language然后回头看,browserLanguage然后再看(如果那些与任何可用语言都不匹配),然后再看systemLanguage

如果您可以将服务器端脚本放在网上的其他位置,则只需读取Accept-Language标头并将其作为包含标头值的字符串的JavaScript文件发回,例如:

var acceptLanguage= 'en-gb,en;q=0.7,de;q=0.3';

那么您可以在HTML中包含指向该外部服务的

src>,并使用JavaScript解析语言标头。不过,我不知道有任何现有的库代码可以执行此操作,因为Accept-

Language解析几乎总是在服务器端完成的。

无论最终做什么,您肯定都需要用户覆盖,因为对于某些人来说,它总是会猜错。通常,将语言设置放在URL中最简单,然后让用户点击两者之间的联系。有时您确实希望为两种语言版本提供一个URL,在这种情况下,您必须将设置存储在Cookie中,但这可能会使用户代理感到困惑,因为它们不支持Cookie和搜索引擎。

以上是 在浏览器中确定用户区域设置的最佳方法 的全部内容, 来源链接: utcz.com/qa/418979.html

回到顶部