在Java中,有没有办法获得一个Locale给它的显示名称?

Che*_*ter 3 java locale internationalization

也就是说,如果我有"英语(美国)",我想得到"en-US",或者说是合适的java.util.Locale.看起来API是一条单行道,但也许我找不到合适的地方.提前致谢.

Mic*_*ers 6

不,似乎API中没有这样的方法.但是,您可以使用Locales返回的by 创建一个缓存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);
}
Run Code Online (Sandbox Code Playgroud)