【问题标题】:How to get user's OS locale in java [duplicate]如何在java中获取用户的操作系统区域设置[重复]
【发布时间】:2023-04-10 11:50:01
【问题描述】:

谁能告诉我如何在Java获取用户的操作系统语言环境。我正在使用具有国际化支持的 Spring MVC 创建 Web 应用程序,因此我需要检索用户的操作系统的区域设置

我尝试过Locale.getDefault(),但即使我的系统的语言环境是fr-FR,它总是给出en-US 的值

我知道如何从用户的浏览器获取语言(使用Accept Header),但我需要读取操作系统语言设置。

【问题讨论】:

标签: java spring-mvc


【解决方案1】:

Locale.getDefault() 将获得 服务器 的语言环境,所以这绝对不是你想要的。

Accept-Language HTTP 标头将指定客户端可接受的语言,这很可能由 Web 浏览器通过查看客户端的操作系统语言来完成。

然后,您必须解析该值以为您的 Web 应用程序找到匹配的语言环境。

【讨论】:

  • 不是通过查看客户端的操作系统语言来完成的。这是所有主要浏览器中特定于浏览器的设置。
【解决方案2】:

如果您想了解网络请求用户的语言环境,请尝试https://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getLocale()

【讨论】:

    【解决方案3】:

    我们谈论的是 Web 应用程序,因此一般而言,您对用户的了解只是 HTTP 请求提供的内容(这是一种简化,但作为一般规则)。 HTTP 请求在语言方面提供的是 Accept-Language 标头,仅此而已。这是您可以获得的特定于浏览器的设置。获取网络用户的操作系统语言不是给你的,所以不,你不能得到。

    (有一些解决方法,例如,如果您想运行一个 java 小程序来找出这个问题,这可能是可能的。但是,这将是我不推荐的路径。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-16
      • 2016-03-26
      • 2011-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-18
      相关资源
      最近更新 更多