将“区域设置”设置为例如“是什么意思”是什么意思日本?这是否意味着浏览器已准备好识别日文字符?或者,它与OS设置更相关吗?
与i18n(国际化和本地化)相关,我们如何检测访问我们网站的用户是否有例如使用JavaScript的日语语言环境?以下简单的检查是否足够?
var userLocale = navigator.language || navigator.userLanguage;
if (userLocale.toLowerCase() == 'ja-jp') { ... }
日语区域设置浏览器是否可以返回其他内容而不是ja-jp
?
事先谢谢。
答案 0 :(得分:6)
首先,我们需要定义Locale是什么。在您使用的上下文中,ISO639 Language Identifier可选地后跟ISO3166 Country Identifier。这用于确定最终用户的偏好(如本地化内容的语言或日期和时间格式以及数字格式)。
现在,可以在多个位置设置Locale。 OS通常具有多种设置,例如键盘布局,格式化首选项,语言首选项,代码页(用于非Unicode程序)等
除此之外,Web浏览器通常允许您选择自己的首选项(Safari在此处是例外)。这些首选项随每个请求一起通过HTTP Accept-Language标头发送到Web服务器。这是您应该在服务器端以某种方式阅读的内容(不幸的是,这意味着PHP中的一些服务器端代码,C#,Java,等等)并且可能会传递给您的客户端脚本。
我必须在此声明,像navigator.language这样的东西不是出路的原因有两个:
这不是跨浏览器兼容的,即其他网络浏览器需要不同的代码。也就是说,如果他们允许首先阅读这些信息。
此设置通常是指网络浏览器的语言(语言网络浏览器的用户界面已翻译为),与实际用户的偏好无关。
所以回答你的问题:不,这个检查是不够的。
答案 1 :(得分:0)
这主要是OS /浏览器设置,例如控制操作系统的语言,日期/时间格式,小数点/逗号等 - 换句话说,在世界的不同区域设置中有所不同的设置。这与字体/字符支持没有直接关联。
据我所知,ja-jp
是唯一标准化的日语语言环境/语言组合;但正如@ Siku-siku.com在评论中所建议的那样“(基于使用日语版IE / WinXP的真实测试)也检查ja
,因为这是IE语言设置中的可用选项之一。”