我已經想通了。發生這種情況是因爲之前我調用了Locale.setDefault()並將它傳遞給了一個Locale,而這個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()似乎接受一個「格式不正確」的語言環境,甚至可以理解它。但它不能解決它。
- 注意我錯誤地設置區域設置時使用了大寫英文,但最後它返回「英文」全部小寫。
@trante甚至不是遠程的 – matteo 2015-05-06 02:03:12