개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.08.14 11:42

ResourceBundle::getLocales 관련 질문

목록
  • Scala마법사 8시간 전 2025.08.14 11:42 새글
  • 5
    1
제가 현재 Java의 국제화와 리소스 번역에 대해 공부 중인데, ResourceBundle 클래스의 getLocales() 메서드에 대해 궁금한 점이 있습니다.

ResourceBundle은 여러 언어를 지원하는 리소스 번역을 위해 사용되는데, getLocales() 메서드는 리소스 번역을 지원하는 언어 목록을 반환합니다. 하지만 이 메서드에서 반환하는 언어 목록이 실제로 사용 가능한 언어 목록과 다를 수 있는 것 같습니다.

제가 이해한 바로는 getLocales() 메서드는 ResourceBundle의 부모 클래스인 ResourceBundle.Control의 getDefaultLocales() 메서드에서 반환한 언어 목록을 반환한다고 합니다. 하지만 getDefaultLocales() 메서드는 기본적으로 Locale.getDefault() 메서드에서 반환한 언어를 기본으로 사용한다고 합니다.

이러한 이유로, getDefaultLocales() 메서드에서 반환하는 언어 목록은 실제로 사용 가능한 언어 목록이 아닐 수 있습니다. 예를 들어, Locale.getDefault() 메서드가 en-US를 반환한다면, getDefaultLocales() 메서드는 en-US를 기본으로 사용하여 반환한 언어 목록은 en-US만 포함할 수 있습니다.

질문은 이렇습니다. getDefaultLocales() 메서드에서 반환하는 언어 목록이 실제로 사용 가능한 언어 목록이 아닌 경우, getLocales() 메서드는 어떻게 동작하는 것일까요?

    댓글목록

    profile_image
    나우호스팅  8시간 전



    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

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 44,074건 / 5 페이지

검색

게시물 검색