본문 바로가기
프로그램/Java

[Java] java.util.ResourceBundle

by 로드러너 2013. 11. 15.
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

java에서 사용되는 properties 파일의 내용을 읽어올수 있다. ResourceBundle클래스는 국제화를 지원하기 Locale 파일 규칙을 이용해서 파일명을 사용할 수 있다.

properties 파일은 getBundle 메소드에 의해 객체로 전환이 된다. 따라서,크랠스 파일과 같이 위치를 추적할 수 있다. 만약 “server.properties” 라는 파일이 classes 폴더 밑에 conf 라는 폴더 아래 있다면 “conf.server.properties” 로 해서 찾을 수 있다.

     위치 : web-inf/classes/conf/server.properties

     ResourceBundle bundle = ResourceBundle.getBundle(“conf.server.properties”);

     Enumeration enum = bundle.getKeys();

     for(; enum.hasMoreElements();){

          String value = bundle.getString((String) enum.nextElement());

          out.println(“value : ” + value);

     }

 …

properties 파일에서 특정 키의 값을 가져오는 방법은 다음과 같다.

     ResourceBundle bundle = ResourceBundle.getBundle(“server.properties”);

     String value = bundle.getString(“키이름”);

ResourceBundle 을 이용해서 다국어를 지원하는 properties 파일을 읽어 들이는 방법은 Locale 파일 규칙을 이용하는 것이다.  파일의 이름이 “Server” 이고, 언어가 “ko”, 지역코드가 “KO” 일 경우에 파일 이름은 다음과 같이 된다.

     “Server_ko_KR.properties”

다음은 조합가능한 properties 파일 명이다. ResourceBundle 은 지정된 파일이 없는 경우 다음의 순서대로 파일을 검색한다.

     baseclass + “_” + language1 + “_” + country1 + “_” + variant1

     baseclass + “_” + language1 + “_” + country1 + “_” + variant1 + “.properties”

     baseclass + “_” + language1 + “_” + country1

     baseclass + “_” + language1 + “_” + country1 + “.properties”

     baseclass + “_” + language1

     baseclass + “_” + language1 + “.properties”

     baseclass + “_” + language2 + “_” + country2 + “_” + variant2

     baseclass + “_” + language2 + “_” + country2 + “_” + variant2 + “.properties”

     baseclass + “_” + language2 + “_” + country2

     baseclass + “_” + language2 + “_” + country2 + “.properties”

     baseclass + “_” + language2

     baseclass + “_” + language2 + “.properties”

     baseclass

     baseclass + “.properties”

현재 디폴트 로케일이 en_US 이고, 호출측에서 얻고자 하는 로케일이 fr_CH, 자원명이 MyResource 인 경우에 ResourceBundle 클래스는 다음의 순서로 검색을 한다.

     MyResource_fr_CH

     MyResource_fr_CH.properties

     MyResource_fr

     MyResource_fr.properties

     MyResource_en_US

     MyResource_en_US.properties

     MyResource_en

     MyResource_en.properties

     MyResource

     MyResource.properties

해당하는 파일을 찾을 수 없는 경우 MissingResourceException 이 발생한다.