본문 바로가기

Tip/Spring

[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