从Java代码中了解操作系统语言(区域设置)的正确方法是什么?
我已经尝试过
Locale.getDefault()
System.getProperties("user.language")
但是它们都不正确,实际上没有显示出可通过Windows命令"systeminfo"获得的"系统区域设置"。
从Java代码中了解操作系统语言(区域设置)的正确方法是什么?
我已经尝试过
Locale.getDefault()
System.getProperties("user.language")
Windows XP的systeminfo
命令会显示很多内容,但重要信息是:
System Locale: en-us;English (United States)
Input Locale: en-us;English (United States)
要在Java中获取等效的信息,请使用Locale.getDefault()
获取Java正在使用的区域设置,并使用Locale对象上的方法(例如getCountry()
,getLanguage()
)获取详细信息。这些信息可用ISO代码和可读/显示名称。Locale.getDefault()
提供了Java从环境中获取的区域设置,但这可能与“系统”区域设置相同,也可能不同。要在Java中明确获取“系统”区域设置,需要执行特定于平台的操作。如果您真的需要该信息,则更简单的方法是确保Java使用系统区域设置启动...。getDefault()
使用的区域设置信息的方式;请参见https://dev59.com/22w05IYBdhLWcg3wqzes#8319889。那么呢?
System.getProperty("user.country");
System.getProperty("user.language");
在我的情况下返回值为
user.country=DE
user.language=de
你可以轻松地从这些信息中生成区域设置。 区域设置是“语言代码_国家/地区代码”,所以在我的情况下是 de_DE
使用默认语言环境如何?
Locale locale = Locale.getDefault();
String lang = locale.getDisplayLanguage();
String country = locale.getDisplayCountry();
这将根据Windows的systeminfo
命令返回我当前的语言和国家。这是你要找的吗?(如果你想要语言/国家的两个字符代码,你可以使用getLanguage()
或getCountry()
)。
确切地说,您可以尝试以下代码:
public Locale getLocale() {
if (this.locale == null) {
this.locale = new Locale(System.getProperty("user.language"), System.getProperty("user.country"));
}
return this.locale;
}