SWT/Jface 다국어 (MultiLanguage) 지원

zerolism ㅣ 2012. 5. 4. 13:24

SMALL

프로그램 배포시 고정된 자원과 변화하는 자원이 있다.
게시판 배포를 예로 든다면 안에 소스는 대부분 고정된 자원이다. 하지만 사용자마다 database의 설정 등은 수정해서 사용해야 하는 부분이다.
이러한 값들은 프로그램의 알고리즘과 상관없는 부분으로 따로 관리해야 하는 자원들이다. 이러한 자원은 파일로 저장해서 관리하는 것이 보편적 추세로 ResourceBundle을 이용 할 수 있다.

ResourceBundle클래스는 국제화를 지원하기 Locale 파일 규칙을 이용해서 파일명을 사용할 수 있다.


[출처] ResourceBundle의 활용|작성자 토토


사용할 리소스 파일을 생성하기 위해 클래스 내에 [파일명]. properties 파일을 생성하고 아래와 같이 구성할 수 있다.

ID=id
PW=pass

 

위에서 보면 단순히 "="를 기준으로 해서 왼쪽에 key 오른쪽에 value가 들어 가는 단순한 형식임을 볼 수 있다.

#주석

[key]=[value]

[출처] ResourceBundle의 활용|작성자 토토

위와 같이 Locale 마다 .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


String 자원을 예로 들면 Locale 에 따라 properties 파일에서 특정 키의 값을 가져오는 방법은 다음과 같다.

     ResourceBundle bundle = ResourceBundle.getBundle(“server.properties”, 가져올 Locale 값); // 가져올 Resource Locale 을 지정한다.

     또는 ResourceBundle bundle = ResourceBundle.getBundle(“server.properties”); // 시스템 에서 Locale 을 가져온다.

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

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

     “MyResource_ko_KR.properties”

LIST