在浏览器中确定用户区域设置的最佳方法
我有一个网站(Flash)本地化为十几种语言,并且我想根据用户的浏览器设置自动定义默认值,以最大程度地减少访问内容的步骤。
仅供参考,由于代理限制,我无法使用服务器脚本,因此我认为JavaScript或ActionScript将适合解决此问题。
“猜测”用户区域设置的最佳方法是什么?
是否有任何现有的简单类/函数可以帮助我(没有复杂的本地化软件包)?特别是以一种聪明的方式将所有可能的语言分解成较小的数量(我拥有的翻译版本)。
我可以信任这样的解决方案?
还有其他解决方法或建议吗?
回答:
正确的方法是查看发送到服务器的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中包含指向该外部服务的