【发布时间】:2011-01-28 23:48:46
【问题描述】:
从 java 代码中了解操作系统语言(区域设置)的正确方法是什么?
我试过了
Locale.getDefault()
System.getProperties("user.language")
等等
但它们不正确,实际上并没有显示 Windows 中的命令“systeminfo”可用的“系统区域设置”。
请帮忙。
【问题讨论】:
标签: java windows properties system locale
从 java 代码中了解操作系统语言(区域设置)的正确方法是什么?
我试过了
Locale.getDefault()
System.getProperties("user.language")
等等
但它们不正确,实际上并没有显示 Windows 中的命令“systeminfo”可用的“系统区域设置”。
请帮忙。
【问题讨论】:
标签: java windows properties system locale
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 改变了在 Windows 上确定 getDefault() 使用的语言环境信息的方式;见https://stackoverflow.com/a/8319889/139985
【讨论】:
怎么样
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 命令返回我当前的语言和国家/地区。这是你要找的吗? (如果您想要语言/国家/地区的 2 字符代码,您可以使用 getLanguage() 或 getCountry())。
【讨论】:
确切地说,您可以尝试以下代码:
public Locale getLocale() {
if (this.locale == null) {
this.locale = new Locale(System.getProperty("user.language"), System.getProperty("user.country"));
}
return this.locale;
}
【讨论】: