[Spring + Thymeleaf] 국제화 메세지 처리
Thymeleaf 에서 메세징 처리를 위해서는 다음과 같이 적용할 수 있다.
servlet-context.xml
<interceptors>
<beans:ref bean="localeChangeInterceptor"/>
</interceptors>
<beans:bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<beans:property name="basename" value="META-INF/message/messages" />
<beans:property name="defaultEncoding" value="UTF-8" />
</beans:bean>
<beans:bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<beans:property name="paramName" value="lang" />
</beans:bean>
<beans:bean id="localeResolver"
class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
<beans:property name="defaultLocale" value="en"/>
</beans:bean>
META-INF/message/messages 에 파일 추가
messages_en.properties
test=test
test.param=Test {0}
messages_ko.properties
test=테스트
test.param=테스트 {0}
Test.html 에서의 thymeleaf 문법
<div th:text="#{'test'}"></div>
<div th:text="#{'test'}"></div>
또는
<div th:text="${#messages.msg('test')}">기본값</div>
<div th:text="${#messages.msg('test1', '?')}">기본값</div>
<div th:text="${#messages.msgOrNull('test1')?:'대체값'}">기본값</div>
${#messages.msg('test')} 는 test 키 값이 없을 경우 ??test?? 라는 기본 메세지 형태로 출력이 되고
${#messages.msgOrNull('test')} 의 경우에는 null 을 리턴한다.
위의 설정대로 진행하면 URL 요청시 파라메터로 ?lang=en, ?lang=ko 의 형태로 언어셋을 변경할 수 있다.
참고 |
http://www.thymeleaf.org/doc/html/Thymeleaf-Spring3.html#listing-seed-starter-data
http://www.thymeleaf.org/doc/html/Using-Thymeleaf.html#messages-1