如何从java代码中检测操作系统语言(语言环境)

如何从java代码中检测操作系统语言(语言环境),java,windows,properties,system,locale,Java,Windows,Properties,System,Locale,从java代码中了解操作系统语言(语言环境)的正确方法是什么 我试过了 Locale.getDefault() System.getProperties("user.language") 等等 但它们并不正确。实际上,没有任何内容显示windows中“systeminfo”命令可用的“系统语言环境” 请提供帮助。使用默认语言环境如何 Locale locale = Locale.getDefault(); String lang = locale.getDisplayLanguage(); S

从java代码中了解操作系统语言(语言环境)的正确方法是什么

我试过了

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

但它们并不正确。实际上,没有任何内容显示windows中“systeminfo”命令可用的“系统语言环境”


请提供帮助。

使用默认语言环境如何

Locale locale = Locale.getDefault();
String lang = locale.getDisplayLanguage();
String country = locale.getDisplayCountry();

这将根据Windows
systeminfo
命令返回我当前的语言和国家/地区。这就是你要找的吗?(如果您想要语言/国家/地区的两个字符代码,可以使用
getLanguage()
getCountry()
)。

Windows XP
systeminfo
命令显示大量内容,但相关信息如下:

System Locale:             en-us;English (United States)
Input Locale:              en-us;English (United States)
要获取Java中的等效信息,请使用
Locale.getDefault()
获取Java正在使用的语言环境,并使用语言环境对象上的方法(例如)获取详细信息。可使用ISO代码和人类可读/可显示的名称获取信息

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


更新:显然,Java 7改变了在Windows上确定
getDefault()
使用的区域设置信息的方式;参见

关于

System.getProperty("user.country"); 
System.getProperty("user.language");
在我的情况下返回

user.country=DE

user.language=de

您可以轻松地根据此信息生成区域设置。本地语是“语言”“国家”,所以在我的例子中
确切地说,您可以尝试以下代码:

public Locale getLocale() {
    if (this.locale == null) {
        this.locale = new Locale(System.getProperty("user.language"), System.getProperty("user.country"));
    }
    return this.locale;
}

对不起,我忘了提及,我通过控制面板->区域和语言选项将语言设置更改为“法语”。当我运行上述代码时,它将正确的(更改的)区域设置显示为“fr”,但当我运行“systeminfo”时,它仍然将“en-US”显示为系统和输入区域设置。您可能需要关闭命令提示符并再次打开它。与Windows中的许多东西一样,还不完全清楚“systeminfo”从何处获取显示的信息。如何确保Java从系统区域设置开始?@VladIlie-AFAIK,你不能。对不起,我忘了提到这一点,我通过控制面板->区域和语言选项将语言设置更改为“法语”。当我运行上述代码时,它将正确的(更改的)区域设置显示为“fr”,但当我运行“systeminfo”时,它仍然将“en US”显示为系统和输入区域设置。所以我的问题是,由于“用户区域设置”和“系统区域设置”之间的差异,我们通过控制面板更改的是“用户区域设置”,而不是“系统区域设置”,上面的代码返回“用户语言环境”?那么获取“系统语言环境”的方法是什么?这与locale.getDefault()相比如何?