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