Java 6以降を使用している場合は、何かがあります。明らかに、プロパティファイルから文字列をロードするには、この種のロケール階層を実装する必要がありました。ResourceBundle.Controlを使用して、ロケールの階層リストを取得できます。
Control control = Control.getControl(Control.FORMAT_DEFAULT);
List<Locale> locales = control.getCandidateLocales("messages",
Locale.forLanguageTag("zh-HK"));
for (Locale locale : locales) {
System.out.println(locale.toLanguageTag());
}
これは(Java 7)を返します:
zh-Hant-HK
zh-Hant
zh-HK
zh
und
ここで、「und」は「未定義」を意味します。あなたが実際にあなたのファイルの名前を作るかもしれないので、それはさらに良いです:
Control control = Control.getControl(Control.FORMAT_DEFAULT);
List<Locale> locales = control.getCandidateLocales("messages",
Locale.forLanguageTag("pl-PL"));
for (Locale locale : locales) {
String bundleName = control.toBundleName("messages", locale);
System.out.println(bundleName);
String resourceName = control.toResourceName(bundleName, "properties");
System.out.println(resourceName);
}
そして結果は次のとおりです。
messages_pl_PL
messages_pl_PL.properties
messages_pl
messages_pl.properties
messages
messages.properties
もちろん、特定のファイルが存在するかどうかを知る必要がありますが、これはかなり簡単なはずです。