티스토리 뷰

Dev/EL & JSTL

JSTL <fmt>

Pupustory 2009. 2. 13. 17:13
일반적으로 국제화에 맞춰 제작된 프로그램은 .properties를 이용해 전체 메시지 및 프로그램에 들어가는 버튼의 이름 등등을 정의 한다. 제품이 세계적으로 판매할 목적이라면 영어권은 영어버전과 국내 내수용 한국어 버전 등을 지원해야 할 것이다. 웹 솔루션이라면 뷰에 보여지는 메뉴들이 여기에 목표가 될 것이다.

JSTL은 <fmt/>에서 이런한 메시지 부분을 지원해 주고 있다. 물론 지역화를 위해 지역에 맞는 시간을 맞춘다던지 하는 기능역시 있지만, 필자는 이부분은 크게 사용하지 않을 것으로 예상되 메시지에 관한 부분만 다루고자 한다.(혹은 차후 수정하여 업데이트 하거나 새로운 포스트로 작성할 예정이다. 어쨋든 지금 알아볼 사항은 <fmt/>의 메시지부분이다.)

먼저 선언은 다음과 같다.

기타 설정에 관해선 이전 포스트를 참조하면 될 것이다.

먼저 .properties파일이 있어야 한다. 샘플로 사용하기 위해 간단한 파일을 다음과 같이 작성해 보자.
pupustory.welcome= hello {0} !! your message_{1}
pupustory.msg.sample=한글도 잘되나 보는거에요.
pupustory.msg.user.help=도움이 필요하면 .. 알아서 찾아서 하시라능..
파일명은 msg.properties로 하겠다. properties에 대한 정보는 우측에 있는 검색에 properties로 나오는 포스트를 참조하면 된다.(전에 포스트 해뒀음..!)

이제 어디다 저장할까 ..? 설마 c:\project\...등에 저장할 생각이라면.. 관두길 바란다. 우리는 웹어플을 하고 있으므로 WEB-INF에 있어야 할 것이다. 그리고 위치는...? .properties는 일반 소스처럼 관리하면 된다. 예를들어 패키지 구성이 pupustory. ... ... ... 과 같이 되어있다면 pupsutory.message 이런식으로 패키지를 만들고 하위에 위 내용의 msg.properties를 넣으면 된다.

<fmt:setBundle basename="" scope="" var="" />
먼저 properties를 불러오는 코드는 위와 같다. basename는 경로를 의미하는데 위에 설명한데로 소스와 같이 관리되므로 pupustory.message.msg로 하면 된다.(.properties는 넣지말자!)  var는 지겹게 봐왔지만 사용할 변수다. 이제 var의 이름으로 접근해 메시지를 불러올 것이다.

<fmt:message bundle="" key="" var="" scope=""/>
bundle는 위에 지정한 properties의 변수 명이다. key는 내가 찾고자 하는 메시지를 의미한다.

<fmt:param value="">
properties에 파라미터를 던져 지정된 값을 설정한다. 위 properties에서 {0}부분에 여기에 해당된다. 파라미터값을 던지면 {0}가 바뀌어 반환 될 것이다.

위에 작성한 코드대로 잘 나올 것 이다.

만약 한글이 깨진다면 ...? 대부분 properties파일이 아니라 그럴 수 있다. 만약 한글로 작성하고 txt파일로 그냥 저장 후 확장자만 바꾸게 되면 당연히 깨지게 된다. JVM은 유니코드로 구성되어 있는데 당연히 유니코드로 된 문자만 제대로 출력되기 때문이다. 이럴경우엔 뭐 ..native2ascii 이전파일 새로운파일 <--로 변경하는 방법이나 .. new Properties().store()...를 이용하는 방법이 있을 수 있다.

앞에서 얘기한데로 국제화에 맞추려고 사용하는것에 메시지라고 했다. 그렇다면 국가가 바뀌게 되면 ..? 이것은 하나의 형식이 존제 하는데 <fmt:setLocale value="" />로 설정하게 된다.

예를들어 한국어와 영어 두개의 언어를 지원한다면 파일을 msg_ko.properties , msg_en.properties로 작성하고 이용하면 된다. 페이지에선 <fmt:setLocale value="ko" />등의 방법으로 미리 설정해 주면 되는데, 영어로 바뀌게되면 value부분만 변경해 주면 된다.

'Dev > EL & JSTL' 카테고리의 다른 글

JSTL <fmt>  (1) 2009.02.13
JSTL <xml>  (0) 2009.02.12
JSTL <functions>  (0) 2009.02.11
JSTL <sql>  (0) 2009.02.11
JSTL <core>  (0) 2009.02.06
JSTL 처음 시작하기  (0) 2009.02.06
댓글
댓글쓰기 폼
Total
524,813
Today
4
Yesterday
2
«   2020/01   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
글 보관함