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

时间:2010-03-18 11:34:06

标签: java windows properties system locale

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

我试过了

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

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

请帮忙。

4 个答案:

答案 0 :(得分:29)

Windows XP systeminfo命令显示了很多内容,但相关信息是:

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

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

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


更新:显然,Java 7改变了在{1}上确定getDefault()使用的区域设置信息的方式;见https://stackoverflow.com/a/8319889/139985

答案 1 :(得分:14)

怎么样?
System.getProperty("user.country"); 
System.getProperty("user.language");

在我的情况下返回

  

user.country = DE

     

user.language = DE

您可以轻松地根据此信息生成区域设置。在我的情况下,本地是'语言'_'国家' de_DE这个

答案 2 :(得分:8)

如何使用默认语言环境?

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

根据Windows systeminfo命令返回我当前的语言和国家/地区。这是你在找什么? (如果您想要语言/国家/地区的双字符代码,则只需使用getLanguage()getCountry())。

答案 3 :(得分:2)

准确地说,您可以尝试以下代码:

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