반응형

개발환경 : 

Springboot

kotlin

gradle

yml

jsp

 

사용하게된 계기 :

간단한 기능을 제공하는 웹페이지를 만들었는데 국내는 물론 영어권 사용자에게도 사용될 수 있었으면 좋겠다 싶어 구현하게 되었다

 

나와 같은 환경에서 사용방법 : 

 

application.yml

spring:
  messages:
    basename: messages
    encoding: utf-8

위와 같이 spring설정에 messages를 넣고 간단하게 설정만 해주면 바로 사용이 가능한데 (springboot이기 때문에 가능)

resources 디렉토리 안에 messages.properties 파일과 messages_ko_KR.properties 파일을 만들어주고 그 안에 내용을 입력해주면 된다 매우 간단하다

나의 경우엔 이런식으로 했다

반응형

문제는 페이지를 로드할 때의 파라미터 값에 따라 한글 혹은 영어로 변경되도록 하고싶은데 그게 자꾸만 안되는 것이였다

아무리 구글링을 해봐도 springboot가 아닌 일반 framework에서 ReloadableResourceBundleMessageSource 를 생성하여 bean적용하라는 말밖에 없어서 springboot에서 bean을 수동으로 등록해서 사용해야 하나 뻘짓하고 있었다

 

그런데 알고보니 springboot는 이미 reload가 되는 MessageSource를 사용하고 있나보다

해결은 허무하게도

spring:
  messages:
    basename: messages
    encoding: utf-8
    cache-duration: 3

application.yml에 이렇게 cache-duration 옵션을 추가하여 캐싱하지 않도록 하는 것이다..

cache-duration옵션을 추가하지 않을 경우 default는 forever이다 즉, 죽을때까지 캐싱한다

나는 3으로 하여 3초간만 캐싱하도록 하였다

springboot의 문제가 아니였다. 나의 꼼꼼하지 못함이 문제였다

 

 

아 jsp에서의 다국어 사용법은

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

를 jsp파일에 임포트한 후 문자 대신에

<spring:message code="add_front"/>

와 같이 code="" 안에 message.properties파일에 정의해놓은 키값을 입력하면 문자가 치환되어 출력된다

 

반응형
복사했습니다!