Я понял это. Это произошло потому, что я ранее вызвал Locale.setDefault () и передал ему Locale, который, в свою очередь, я создал, ошибочно передав ему полное имя языка (я взял язык из настроек предпочтения и вместо этого по ошибке выбрал метку записи) стоимости).
То есть я сделал:
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"
Поэтому, когда я запросил локаль по умолчанию, это была фактически созданная мной локаль, код языка которой я ошибочно установил на «английский».
Есть пара забавных вещей:
- Строка (*) фактически работает и фактически меняет локаль на английский (или на испанский, когда я использовал «испанский»), то есть setDefault (), кажется, принимает «искаженную» локаль и даже понимает ее. Но это не исправляет это.
- Обратите внимание, что я использовал заглавные буквы английского языка при неправильной настройке локали, но в конце он возвращает «английский» все строчные буквы.