2
如何獲取語言全名列表?我檢查了Locale
類,發現getISOLanguages()
,但是當我需要語言的全名(例如「英語」)時,它返回2個字母的語言代碼(例如'en')。獲取Java語言的完整語言名稱列表
那有什麼更好的方法?
如何獲取語言全名列表?我檢查了Locale
類,發現getISOLanguages()
,但是當我需要語言的全名(例如「英語」)時,它返回2個字母的語言代碼(例如'en')。獲取Java語言的完整語言名稱列表
那有什麼更好的方法?
最後,感謝托馬斯的意見,我實現它以這樣一種方式:
SortedSet<String> allLanguages = new TreeSet<String>();
String[] languages = Locale.getISOLanguages();
for (int i = 0; i < languages.length; i++){
Locale loc = new Locale(languages[i]);
allLanguages.add(loc.getDisplayLanguage());
}
UPD。也有更現代的風格:
Set<String> languages = Arrays.stream(Locale.getISOLanguages())
.map(Locale::new)
.map(Locale::getDisplayLanguage)
.collect(Collectors.toCollection(TreeSet::new));
嘗試'getDisplayLanguage()'方法,可能是最好的一個區域傳遞,例如'Locale.GERMAN.getDisplayLanguage(Locale.ENGLISH)'。要獲得所有語言的列表,只需遍歷'getISOLanguages()'的結果並執行像'new Locale(isoLang).getDisplayLanguage(Locale.ENGLISH)'這樣的操作。請注意,可能沒有每個iso語言的名稱。 – Thomas
或者遍歷'Locale.getAvailableLocales()',它返回所有已安裝語言環境的列表。請注意,這可能不會爲每種語言代碼返回一個語言環境,但可能會爲其他語言環境返回多個語言環境(例如,國家和地區部分)。 – Thomas