【发布时间】:2014-03-12 03:52:08
【问题描述】:
我正在创建一个网络应用程序,并且我已经在需要了解计算机使用的语言(例如“en-US”,ja)并根据客户使用的内容更改应用程序的语言的部分。
我如何使用 javascript 来做到这一点?
【问题讨论】:
标签: javascript internationalization i18next
我正在创建一个网络应用程序,并且我已经在需要了解计算机使用的语言(例如“en-US”,ja)并根据客户使用的内容更改应用程序的语言的部分。
我如何使用 javascript 来做到这一点?
【问题讨论】:
标签: javascript internationalization i18next
尝试仅使用 JavaScript 进行本地化时存在限制。您的大部分工作应该在服务器端来支持您的应用程序。您是使用纯 HTML/JavaScript 还是有服务器端语言?
查看navigator 对象。检查标题中的Accept-Language 是一种更好的方法,但是我不相信您可以仅使用 JavaScript 来做到这一点。
【讨论】:
很遗憾,无法通过 JavaScript 访问操作系统区域设置。 JavaScript 为您提供的是用户最喜欢的语言(不需要语言环境,即您可能无法获得国家/地区部分)。要访问此信息,您可能需要使用以下代码:
var locale = navigator.userLanguage || navigator.language;
就我个人而言,我不会使用它,因为没有回退机制。因此,例如,如果您没有给定语言的翻译,那么您最有可能使用应用程序的默认语言,无论用户是否理解它。正如 Cory 所建议的,更好的方法是使用服务器端language negotiation,但它也有its drawbacks。但是,在服务器端,您将访问类似于以下内容的 Accept-Language 标头:
Accept-Language: da, en-gb;q=0.8, en;q=0.7
这是首选language tags 的列表,如果您的应用程序不支持用户最喜欢的语言,但它支持此列表中的一种,则将后者用于用户界面翻译是有意义的。
相反,您希望使用最喜欢的语言环境进行格式化(日期、数字等)。
最后但并非最不重要的一点是,在任何足够复杂的应用程序中,您都会有一些用户配置文件的方法。最佳做法是将用户界面语言和格式语言设置放入其中,并使用 Accept-Language 作为有效默认值的来源。
【讨论】: