如何从 Java 代码中检测操作系统语言(区域设置)

2022-09-01 08:19:36

从Java代码中了解操作系统语言(区域设置)的正确方法是什么?

我试过

Locale.getDefault()
System.getProperties("user.language")

等。

但它们不正确,实际上没有显示“系统区域设置”,该区域设置可通过窗口中的命令“systeminfo”获得。

请帮忙。


答案 1

Windows XP 命令显示很多东西,但相关信息是这样的:systeminfo

System Locale:             en-us;English (United States)
Input Locale:              en-us;English (United States)

要获取 Java 中的等效信息,请使用来获取 Java 正在使用的区域设置,并使用 Locale 对象上的方法,如 getCountry()getLanguage() 来获取详细信息。该信息可使用ISO代码和人类可读/可显示的名称获得。Locale.getDefault()

请注意,它为您提供了 Java 在启动时从环境中选取的区域设置,这可能与“系统”区域设置相同,也可能不同。要最终获得Java中的“系统”语言环境,您需要执行特定于平台的事情。IMO,确保Java从系统语言环境开始更简单...如果你真的需要这些信息。Locale.getDefault()


更新:显然,Java 7已经改变了在Windows上使用的区域设置信息的确定方式。查看 https://stackoverflow.com/a/8319889/139985getDefault()


答案 2

怎么样

System.getProperty("user.country"); 
System.getProperty("user.language");

在我的情况下退货

user.country=DE

user.language=de

您可以轻松地从此信息生成区域设置。本地是“语言_”国家“,所以在我的情况下de_DE