我有一个本地化为十几种语言的网站 (Flash),我想根据用户的浏览器设置自动定义默认值,以尽量减少访问内容的步骤。
仅供参考,由于代理限制,我无法使用服务器脚本,因此我想 JavaScript 或 ActionScript 适合解决该问题。
问题:
-
“猜测”用户区域设置的最佳方法是什么?
-
是否有任何现有的简单类/函数可以帮助我(没有复杂的本地化包)?特别是以一种聪明的方式将所有可能的语言减少到更小的数量(我拥有的翻译)。
-
我在多大程度上可以信任这样的解决方案?
-
还有其他解决方法或建议吗?
正确的方法是查看HTTP接受语言 http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4发送到服务器的标头。其中包含用户已将其浏览器配置为首选的语言的有序加权列表。
不幸的是,这个头文件无法在 JavaScript 中读取;你得到的只是navigator.language https://developer.mozilla.org/docs/Web/API/NavigatorLanguage/language,它告诉您安装的 Web 浏览器的本地化版本。这不一定与用户的首选语言相同。在 IE 上你会得到systemLanguage
(操作系统安装的语言),browserLanguage
(与...一样language
) and userLanguage
(用户配置的操作系统区域),这些都同样没有帮助。
如果我必须在这些属性之间进行选择,我会嗅探userLanguage
首先,回到language
并且只有在那之后(如果那些与任何可用语言不匹配)查看browserLanguage
最后systemLanguage
.
如果您可以将服务器端脚本放在网络上的其他位置,该脚本只需读取 Accept-Language 标头并将其作为 JavaScript 文件吐出,标头值位于字符串中,例如:
var acceptLanguage= 'en-gb,en;q=0.7,de;q=0.3';
那么您可以在 HTML 中包含一个指向该外部服务的
无论你最终做什么,你肯定需要用户覆盖,因为对于某些人来说它总是会猜错。通常,最简单的方法是将语言设置放在 URL 中(例如,http://www.example.com/en/site 与 http://www.example.com/de/site),然后让用户单击两者之间的联系。有时,您确实希望两种语言版本都使用一个 URL,在这种情况下,您必须将设置存储在 cookie 中,但这可能会使不支持 cookie 和搜索引擎的用户代理感到困惑。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)