'resource bundle'에 해당되는 글 1건

  1. 2011.07.14 [java] Resource Bundle의 로딩 방법
2011. 7. 14. 08:24 IT
// 예전에 쓴 자료 (2004) // 기록을 위해 남깁니다. 

클라이언트의 정보를 얻는 방법은

http request에서 제공되는 정보, client 스크립트(자바스크립트,VB스크립트)에서 제공해주는 정보, Form에서 전송되는 고객이 선택한 정보. 이 세가지가 일반적이고 그 이상의 정보를 얻기 위해서는 applet, activeX 등을 직접 제작해야  합니다.

 

1. 먼저 다국어와 로케일시간을 처리하는 방법을 보자면

단순한 쿠키세팅값을 읽어와 출력해주는 것입니다.

-----------
timeNameObj = new Array("사모아", "하와이",
 "알래스카", "태평양 표준시",
 "애리조나", "미국(중부)",
 "미국(동부)", "상파울로",
 "브라질리아", "중부-대서양",
 "아조레스", "런던",
 "로마", "아테네",
 "모스크바", "두바이",
 "이슬라마바드", "아스타나",
 "자카르타", "북경",
 "서울", "시드니",
 "마가단", "오클랜드");
timeObj = new Array("GMT-11","GMT-10","GMT-9","GMT-8","GMT-7","GMT-6","GMT-5","GMT-4","GMT-3","GMT-2","GMT-1","GMT","GMT+1",
 "GMT+2","GMT+3","GMT+4","GMT+5","GMT+6","GMT+7","GMT+8","GMT+9","GMT+10","GMT+11","GMT+12");

// body on Load시 호출
f unction init(){
  saveTimezone = getCookie("saveTimezone");
  for (i=0;i<24;i++) {
    if (saveTimezone==timeObj[i]) {
      xform.TIMEZONE2.value = timeNameObj[i] + " (" + timeObj[i] + ")";
    }
    else
      xform.TIMEZONE2.value = timeNameObj[20] + " (" + timeObj[20] + ")";
  }
}
----------------------

위의 내용을 설명하자면 자바스크립트 배열로 GMT시간을 저장해놓고

saveTimezone 이란 이름의 쿠키에 값이 있는경우 해당 값을 화면에 출력해주는 것입니다.

쿠키에 값이 없는 경우엔 디폴트로 20번 배열(한국)을 보여줍니다.

 

다국어 처리도 마찬가지군요

<select name="LANG">
  <OPTION value="en_US.EUC-KR" >영어</OPTION>
  <OPTION value="ko_KR.EUC-KR" selected>한국어</OPTION>
  <OPTION value="ja_JP.SJIS" >일본어</OPTION>
  <OPTION value="zh_CN.GB2312" >중국어</OPTION>
</select>

기본값을 영어로 하고 쿠키에 셋팅되어있는 값을 읽어 언어 로케일을 설정한뒤
이 값을 가지고 이후에 resource bundle에 적용하게 됩니다.

 

2. resource bundle을 사용하는 방법
 먼저 언어별 properties file을 생성. (test.properties, test_fr.properties, test_de.properties )
 
 java application에서 bundle 사용 코드 작성
 ---------------------
 ResourceBundle labels = null;
 
 String localeString = "fr"; // 프랑스어로 설정
 
 Locale currentLocale = new Locale(localeString);
 
 labels = ResourceBundle.getBundle("test",currentLocale);

 String value  = labels.getString("xxx");
 
 localeString = "de"; // 독일어로 변경
 
 labels = ResourceBundle.getBundle("test",currentLocale);

 보다 자세한 내용은 .. http://java.sun.com/jdc/TechTips/1998/tt0521.html#tip2

 

3. 그러나 실제로 web application의 경우 ResourceBundle 클래스를 바로 쓰지 않고
 struts 의 경우와 같이 MessageResources 클래스를 이용합니다.
 (struts site를 참조하세요 ) http://jakarta.apache-korea.org/struts/doc-1.0.2/userGuide/building_view.html

 

posted by smplnote