5

也就是说,如果我有“English (United States)”,我想得到“en-US”,或者合适的java.util.Locale. 看起来API是一条单行道,但也许我没有找对地方。提前致谢。

4

4 回答 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 回答