Kyl*_*ane 23 locale localization internationalization
我想检测用户的区域设置(不是它们的位置).问题是没有一种方法看起来可靠.
优点
缺点
结论
优点
缺点
结论
优点
缺点
结论
优点
缺点
结论
现在看来检测用户的区域设置比以往更难,而检测到它们的物理位置变得更容易.最大的罪犯是Safari,至少应该在OSX上默认反映操作系统设置,但Chrome也没有设置任何示例.即使人们将本地字典安装到Chrome,我也很怀疑他们是否也会将其拖到列表的顶部.
我不能责怪Mozilla和Opera被其他浏览器误导到他们的下载页面拖累.但是,如果他们将下载页面切换为使用地理位置而不是大概查看Accept-Language,则可以缓解问题.
但实际上,由于IE不再占主导地位,还有哪些选项可以检测用户的区域设置?还剩下什么吗?
这取决于 \xe2\x80\x9cuser\xe2\x80\x99s locale\xe2\x80\x9d 的含义。问题中列出的可能性反映了 \xe2\x80\x9cuser\xe2\x80\x99s locale\xe2\x80\x9d 的不同含义。它们都没有反映现代本地化中的充分含义,即用户首选的文化约定集(包括按偏好顺序排列的人类语言列表)。找到这一点的方法是询问用户有关它们的信息。
\n\n当然,您应该只询问在上下文中真正重要的约定,并且您可以考虑将用户表达的首选项存储在 cookie、HTML5 存储、用户数据库或其他位置。
\n\n浏览器通常允许用户指定要在标头中发送的首选语言列表Accept-Language。然而,这仅涉及区域设置概念的一个方面,大多数用户都不知道,并且众所周知,它经常具有不正确的默认值。