According to the Java reference, Locale.getLanguage()
is supposed to return the 2-letters lowercase ISO code of the language (e.g. en
), while get
I've figured it out. This happened because I had previously called Locale.setDefault() and passed it a Locale which in turn I had created by erroneously passing it the whole language name (I took the language from a preference setting and I mistakenly picked the label of the entry instead of the value).
That is, I did:
String lang= //... here I assigned "English" while I thought
// I was assigning it "en"
Locale locale=new Locale(lang);
Locale.setDefault(locale); // (*)
// and later
Locale.getLocale().getLanguage(); //returns "english"
So when I queried for the default locale, it actually was the locale I had created whose language code I had erroneously set to "english".
There are a couple of funny things, though: