也就是说,如果我有“English (United States)”,我想得到“en-US”,或者合适的java.util.Locale
. 看起来API是一条单行道,但也许我没有找对地方。提前致谢。
问问题
3275 次
4 回答
7
不,API 中似乎没有这种方法。Locales
但是,您可以使用返回的Locale.getAvailableLocales()
;创建缓存。然后您可以简单地在此缓存中查找显示名称。
private static Map<String, Locale> displayNames = new HashMap<String, Locale>();
static {
for (Locale l : Locale.getAvailableLocales()) {
displayNames.put(l.getDisplayName(), l);
}
}
public static Locale getLocale(String displayName) {
return displayNames.get(displayName);
}
于 2009-06-05T21:16:14.950 回答
3
以哪种语言显示名称?
Locale[] locales = Locale.getAvailableLocales();
for (Locale current : locales) {
for (Locale test : locales) {
System.out
.print(test.getDisplayName(current) + " ");
}
System.out.println();
}
我假设如果您正在处理语言环境,则需要处理多种语言。
于 2009-06-05T23:46:18.283 回答
1
我这样做过一次,但我认为它不能保证一直有效,因为在每个 JVM 实现中语言环境的名称可能不同。遍历语言环境,直到找到所需的语言。
于 2009-06-05T21:16:04.547 回答
-1
您可以使用 Apache 的 commons-lang:
org.apache.commons.lang.LocaleUtils.toLocale(localeStr);
于 2013-10-08T15:04:00.997 回答