区域设置:浏览器或操作系统设置?

时间:2011-08-02 12:12:16

标签: javascript localization internationalization

将“区域设置”设置为例如“是什么意思”是什么意思日本?这是否意味着浏览器已准备好识别日文字符?或者,它与OS设置更相关吗?

与i18n(国际化和本地化)相关,我们如何检测访问我们网站的用户是否有例如使用JavaScript的日语语言环境?以下简单的检查是否足够?

var userLocale = navigator.language || navigator.userLanguage;
if (userLocale.toLowerCase() == 'ja-jp') { ... }

日语区域设置浏览器是否可以返回其他内容而不是ja-jp

事先谢谢。

2 个答案:

答案 0 :(得分:6)

首先,我们需要定义Locale是什么。在您使用的上下文中,ISO639 Language Identifier可选地后跟ISO3166 Country Identifier。这用于确定最终用户的偏好(如本地化内容的语言或日期和时间格式以及数字格式)。

现在,可以在多个位置设置Locale。 OS通常具有多种设置,例如键盘布局,格式化首选项,语言首选项,代码页(用于非Unicode程序)等 除此之外,Web浏览器通常允许您选择自己的首选项(Safari在此处是例外)。这些首选项随每个请求一起通过HTTP Accept-Language标头发送到Web服务器。这是您应该在服务器端以某种方式阅读的内容(不幸的是,这意味着PHP中的一些服务器端代码,C#,Java,等等)并且可能会传递给您的客户端脚本。
我必须在此声明,像navigator.language这样的东西不是出路的原因有两个:

  1. 这不是跨浏览器兼容的,即其他网络浏览器需要不同的代码。也就是说,如果他们允许首先阅读这些信息。

  2. 此设置通常是指网络浏览器的语言(语言网络浏览器的用户界面已翻译为),与实际用户的偏好无关。

  3. 所以回答你的问题:不,这个检查是不够的。

答案 1 :(得分:0)

这主要是OS /浏览器设置,例如控制操作系统的语言,日期/时间格式,小数点/逗号等 - 换句话说,在世界的不同区域设置中有所不同的设置。这与字体/字符支持没有直接关联。

据我所知,ja-jp是唯一标准化的日语语言环境/语言组合;但正如@ Siku-siku.com在评论中所建议的那样“(基于使用日语版IE / WinXP的真实测试)也检查ja,因为这是IE语言设置中的可用选项之一。”