프레젠테이션 레이어 서블릿 관리하는 xml에서
(나의 경우 WEB-INF/config/presentation-layer.xml)에 위치시켯다)
==== presentation-layer.xml ===============================================
...
...
...
<!-- 다국어 관련 설정 -->
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<list>
<value>message.messageSource</value>
</list>
</property>
</bean>
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />
<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="lang"></property>
</bean>
</mvc:interceptors>
=========================================================================
** 1. 메시지 파일(~~.properties)을 읽어들이는 MessageSource 객체를 Bean에 등록한다.
※ 여기서 파일을 보면 messageSource_en.properties, messageSource_ko.properties라고 작성되어있는 파일인데 xml에서는 message패키지.파일명(_ko,en제외)인것을 알수있다. 프로그램상에서 properties가 이름일수있는 예외적인상황도 있어(인공지능이 아니므로),확장자를 제거해주고 또한 _ko _en 등 자세히 기억은 안나지만 제외를 시켜줄수있다고 교육을 받았다. (이에 대하여 자세히 알고있는분은 댓글로 부탁드려요..)
** 2. 이렇게 등록을 한 뒤, localeResolver로 클라이언트의 요청이 들어오면 그 정보(Locale)를 설정한다. 이때 정의가 되어있지 않다면(나의 경우 LocaleChangeInterceptor 로 설정하였다.), AccepHaderLocaleResolver를 이용하는데 성능이 떨어지므로, 나처럼 Session~ 으로 하는걸 추천한다.
** 3. 마지막으로 웹페이지 이용 중 중간에 언어를 변경하려면 LocaleChaneInterceptor를 설정해야만 적용이 가능하다. class는 꼭 org.springframework.web.servlet.i18n.LocaleChangeInterceptor 로 설정하고, 속성안에 value의 값에 따라 웹페이지에서 index.jsp?lang=ko 파라메터 데이터이름을 변경해주어야한다.
마지막으로. properties 데이터 입력시 아시아언어는 2byte를 사용하므로 유니코드로 변경하여 데이터를 입력해주어야 한다. (이클립스 루나버전의 경우 텍스트 파일에 한글로 입력하고 properties에 붙여넣기하면 자동으로 변환이 된다. 나머지 버전은 잘 모르겠다. 아니면 자바 경로 ex) C:\Program Files\Java\jdk1.7.0_04\bin\native2ascii 를 이용하여 변환이 가능하다)
'홈페이지 만들기 > Spring' 카테고리의 다른 글
iBatis 연동 (0) | 2015.04.17 |
---|---|
스프링 파일 업로드 (0) | 2015.04.16 |
스프링 ViewResolver (0) | 2015.04.15 |
스프링 action-servlet 위치 및 파일명 변경 (0) | 2015.04.15 |
스프링 한글 인코딩으로 만들기 (0) | 2015.04.15 |
댓글