개발환경 :
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파일에 정의해놓은 키값을 입력하면 문자가 치환되어 출력된다
'프로그래밍 노트 > Spring, Java, Kotlin' 카테고리의 다른 글
모듈경로/build.gradle is not part of the build defined by settings file 프로젝트경로/settings.gradle (0) | 2023.11.23 |
---|---|
thymeleaf 와 tailwind 로 자바 서블릿 프로젝트 구성하기 (0) | 2023.11.15 |
SpringBoot 2.6에서 swagger 3.0 사용 (11) | 2021.12.15 |
JAVA로 API 개발할 때 DTO파일 읽어서 필요하거나 필요 없는 필드 확인하기 (0) | 2021.08.03 |
java AES 인코딩, 디코딩 예제 (0) | 2020.11.06 |