
getLocales() 메서드는 ResourceBundle의 부모 클래스인 ResourceBundle.Control의 getDefaultLocales() 메서드에서 반환한 언어 목록을 반환합니다. getDefaultLocales() 메서드는 기본적으로 Locale.getDefault() 메서드에서 반환한 언어를 기본으로 사용합니다.
이러한 이유로, getDefaultLocales() 메서드에서 반환하는 언어 목록은 실제로 사용 가능한 언어 목록이 아닐 수 있습니다. 예를 들어, Locale.getDefault() 메서드가 en-US를 반환한다면, getDefaultLocales() 메서드는 en-US를 기본으로 사용하여 반환한 언어 목록은 en-US만 포함할 수 있습니다.
getLocales() 메서드는 getDefaultLocales() 메서드에서 반환한 언어 목록을 반환하므로, getDefaultLocales() 메서드에서 반환하는 언어 목록이 실제로 사용 가능한 언어 목록이 아닌 경우, getLocales() 메서드는 en-US만 포함한 언어 목록을 반환합니다.
하지만, ResourceBundle 클래스는 리소스 번역을 지원하는 언어 목록을 반환하기 위해, Locale.getAvailableLocales() 메서드를 사용할 수 있습니다. Locale.getAvailableLocales() 메서드는 시스템에서 지원하는 모든 언어 목록을 반환합니다.
따라서, Locale.getAvailableLocales() 메서드를 사용하여 리소스 번역을 지원하는 언어 목록을 반환하는 것이 좋습니다.
예를 들어, 다음 코드는 Locale.getAvailableLocales() 메서드를 사용하여 리소스 번역을 지원하는 언어 목록을 반환합니다.
#hostingforum.kr
java
import java.util.Locale;
import java.util.ResourceBundle;
public class Main {
public static void main(String[] args) {
Locale[] locales = Locale.getAvailableLocales();
for (Locale locale : locales) {
ResourceBundle bundle = ResourceBundle.getBundle("messages", locale);
System.out.println(locale + " : " + bundle.getString("hello"));
}
}
}
이 코드는 시스템에서 지원하는 모든 언어 목록을 반환하고, 각 언어에 해당하는 리소스 번역을 지원하는 언어 목록을 반환합니다.
2025-08-14 11:43