【问题标题】:how to know the language used by the computer?如何知道计算机使用的语言?
【发布时间】:2014-03-12 03:52:08
【问题描述】:

我正在创建一个网络应用程序,并且我已经在需要了解计算机使用的语言(例如“en-US”,ja)并根据客户使用的内容更改应用程序的语言的部分。

我如何使用 javascript 来做到这一点?

【问题讨论】:

  • 以下是我找到的一些可能的解决方案:123

标签: javascript internationalization i18next


【解决方案1】:

尝试仅使用 JavaScript 进行本地化时存在限制。您的大部分工作应该在服务器端来支持您的应用程序。您是使用纯 HTML/JavaScript 还是有服务器端语言?

查看navigator 对象。检查标题中的Accept-Language 是一种更好的方法,但是我不相信您可以仅使用 JavaScript 来做到这一点。

【讨论】:

  • 现在我知道“尝试仅使用 JavaScript 进行本地化时存在限制”是什么意思。和“但是我不相信你可以只用 JavaScript 做到这一点。”使用的服务器端语言是 C,但我不知道如何使用服务器来操作客户端的语言。我在根据用户的选择更改 webapp 的语言时遇到问题(我做了让用户选择语言的下拉菜单)。将首选语言保存到 cookie 并重新加载页面不起作用。想不出用用户想要的语言加载页面的方法。
【解决方案2】:

很遗憾,无法通过 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 作为有效默认值的来源。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-13
    • 2013-04-16
    • 1970-01-01
    • 1970-01-01
    • 2019-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多