moe*_*oey 3 javascript localization internationalization
将"语言环境"设置为例如日语时意味着什么?这是否意味着浏览器已准备好识别日文字符?或者,它与操作系统设置更相关吗?
与i18n(国际化和本地化)相关,我们如何检测访问我们网站的用户是否具有使用JavaScript的日语语言环境?以下简单的检查是否足够?
var userLocale = navigator.language || navigator.userLanguage;
if (userLocale.toLowerCase() == 'ja-jp') { ... }
Run Code Online (Sandbox Code Playgroud)
日语语言环境浏览器可以返回其他内容而不是ja-jp吗?
先谢谢.
首先,我们需要定义Locale是什么.在您使用它的上下文中,ISO639语言标识符可选地后跟ISO3166国家标识符.这用于确定最终用户的偏好(如本地化内容的语言或日期和时间格式以及数字格式).
现在,可以在多个位置设置Locale.操作系统通常有多种设置,例如键盘布局,格式化首选项,语言首选项,代码页(非Unicode程序)等.
除此之外,Web浏览器通常允许您选择自己的首选项(Safari在此处例外) .这些首选项随每个请求一起通过HTTP Accept-Language标头发送到Web服务器.这是您应该在服务器端以某种方式阅读的内容(不幸的是,这意味着PHP,C#,Java等中的一些服务器端代码),并且可能会传递给您的客户端脚本.
我必须在此声明,像navigator.language这样的东西不是出路的原因有两个:
这不是跨浏览器兼容的,即其他Web浏览器需要不同的代码.也就是说,如果他们允许首先阅读这些信息.
此设置通常是指Web浏览器的语言(语言Web浏览器的用户界面已转换为),与实际用户的首选项无关.
所以回答你的问题:不,这个检查是不够的.