본문 바로가기
개발자의 삶

다국어 처리

by 나.R.D.(Rule Destoryer) 2017. 3. 21.

동기

쇼핑몰 사이트를 맡게 되어 정말 오랜만에 locale 설정에 의해 properties 로 다국어 작업을 해보게 되었다.




방법

#1. xml 설정


<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver">

<property name="defaultLocale" value="ko" />

</bean>

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">

<property name="basename" value="WEB-INF/message/message" />

<property name="defaultEncoding" value="UTF-8" />

<property name="fileEncodings" value="UTF-8" />

<property name="cacheSeconds" value="5" />

<property name="useCodeAsDefaultMessage" value="true" />

</bean>

 


언어 설정하는 리졸버는 여러가지 있는데, 그 중에서 session 으로 설정할 수 있는 SessionLocaleResolver 를 선택하였다.


- basename : 로딩할 메시지의 기본 이름?(루트?)를 설정한다.

- cacheSeconds : value 값(초 설정)이 설정된 초마다 properties 가 수정된 것을 인지해서 반영해준다.

- defaultEncoding : 기본 인코딩을 설정한다.

- fileEncodings : 파일 인코딩을 설정한다.

- useCodeAsDefaultMessage : 



#2. properties 설정(ex. message_ko.properties)


...

hello=안녕

...

 



#3. 언어 설정(java단에서 처리해주어야 하는 부분)


...

String locales = "ko"; // 보통 전달인자로 받겠지만, 예시이므로 ko 로 넣어봤다.

...

session.setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME, locales);

...

 


※ SessionLocaleResolver 를 사용해주었기 때문에 session 에 locale을 설정해주면 언어는 세션 값에 의해 해당 언어로 설정이 된다.



#4. jsp 사용


...

<%@ taglib prefix="msg" uri="http://www.springframework.org/tags"%>

...

<msg:message code="hello"/>

...


 


필자는 spring 에서 제공해주는 태그라이브러리를 이용하였다.



참고

설정별 역할만 알고, 내부사정은 잘 몰라서 링크를 걸어봤다. ㅎㅎ

http://devbox.tistory.com/entry/Spring-Locale-%EC%B2%98%EB%A6%AC

반응형

댓글