That is, if I have "English (United States)" I'd like to get "en-US", or an appropriate java.util.Locale
. It looks like the API is a one-way street, but perhaps I'm not looking in the right place. Thanks in advance.
To get equivalent information in Java, use Locale. getDefault() to get the Locale that Java is using, and use methods on the Locale object such as getCountry() , getLanguage() to get details. The information is available using ISO codes and as human readable/displayable names.
A map from single character keys to string values, indicating extensions apart from language identification. The extensions in Locale implement the semantics and syntax of BCP 47 extension subtags and private use subtags.
No, it does not appear that there is such a method in the API. However, you could create a cache using the Locales
returned by Locale.getAvailableLocales()
; then you can simply look up the display name in this cache.
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);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With