すべての国のリストが欲しいです。この目的には Java Locale が非常に便利であることがわかりました。Locale.getAvailableLocales()
は、JRE にインストールされているすべてのロケールを返します。
質問は:
- 異なる JRE 間で安全に使用できますか? OpenJDK、IBM Java、Oracle Java、1.6、1.7 としましょう。より良い実装はありますか?
Locale.getCountry()
特定のロケールへの翻訳を提供することは可能ですか? これらのいくつかの提供されたロケールでのみ使用できるかどうかがわかりましたが、それをスロバキア語ENGLISH,FRENCH,GERMAN,ITALIAN,JAPANESE,KOREAN,CHINESE,SIMPLIFIED_CHINESE,TRADITIONAL_CHINESE,FRANCE,GERMANY,ITALY,JAPAN,KOREA,CHINA,PRC,TAIWAN,UK,US,CANADA_FRENCH
に翻訳したい場合はどうすればよいでしょうか。Locale("sk", "SK")
すべての国がその英語名を保持し、スロバキア語のみが適切に翻訳されています:SK EN:Slovak (Slovakia) FR:slovaque (Slovaquie) SK:Slovenčina (Slovenská republika)
.Locale
利用可能な国/ロケールの翻訳の Java ディレクトリを新しい翻訳で拡張する適切な方法は何ですか。
private static final Locale SLOVAK = new Locale("sk", "SK");
Collection<?> COUNTRIES_LIST_EN = (Collection<?>) CollectionUtils
.collect(Arrays.asList(Locale.ENGLISH.getAvailableLocales()), new Transformer() {
@Override
public String transform(Object input) {
System.out.println(String.format("%s EN:%s FR:%s SK:%s", ((Locale) input).getCountry(),
((Locale) input).getDisplayName(),
((Locale) input).getDisplayName(Locale.FRANCE),
((Locale) input).getDisplayName(SLOVAK)));
return ((Locale) input).getDisplayCountry();
}
});
出力:
JP EN:Japanese (Japan) FR:japonais (Japon) SK:Japanese (Japan)
PE EN:Spanish (Peru) FR:espagnol (Pérou) SK:Spanish (Peru)
EN:English FR:anglais SK:English
JP EN:Japanese (Japan,JP) FR:japonais (Japon,JP) SK:Japanese (Japan,JP)
PA EN:Spanish (Panama) FR:espagnol (Panama) SK:Spanish (Panama)
CH EN:German (Switzerland) FR:allemand (Suisse) SK:German (Switzerland)
US EN:English (United States) FR:anglais (Etats-Unis) SK:English (United States)
SK EN:Slovak (Slovakia) FR:slovaque (Slovaquie) SK:Slovenčina (Slovenská republika)