메시지 & 국제화
메시지
다양한 메시지를 한 곳에서 관리하도록 하여 유지보수를 용이하게 하는 기능
Spring 메시지 관리 클래스 = MessageSource
(interface)
기본 구현체 = ResourceBundleMessageSource
설정 방법
1
2
3
4
5
6
7
@Bean
public MessageSource messageSource() {
ResourceBundleMessageSource ms = new ResourceBundleMessageSource();
ms.setBaseNames("messages", "errors");
ms.setDefaultEncoding("utf-8");
return ms;
}
setBaseNames()
에 사용할 메시지 파일의 이름을 넘겨주고,setDefaultEncoding()
에 인코딩 정보를 넘겨준다.- 메시지 파일은
/resources
디렉토리 하위에 둔다. - 국제화를 적용하려면 메시지 파일을 복제하여 이름 뒤에
_en
과 같이 언어정보를 적어주기만 하면 된다. - 스프링부트를 사용하면
MessageSource
를 자동으로 빈으로 등록해줘서messages
라는 이름의 메시지 파일만 생성하면 별도의 설정없이 바로 사용할 수 있다. messages 파일 외에 추가로 메시지 파일을 적용하려면 application.properties 파일에 아래와 같이 작성하면 된다.
1
spring.messages.basename=messages,config.i18n.messages
config.i18n.messages
는/resources/config/i18n/messages.properties
를 의미한다.
타임리프에 메시지 적용 방법 : #{…}
1
2
3
4
5
<h2 th:text="#{page.addItem}">상품 등록</h2>
<!-- 등록한 메시지 파일 중 page.addItem 에 설정된 값을 읽어 적용한다. -->
<h2 th:text="#{hello.name(${item.itemName})">상품명</h2>
<!-- argument 가 존재하는 메시지 사용 -->
Spring은 기본적으로 요청 헤더의
Accept-Language
헤더의 값을 기준으로 Locale 을 적용하는AcceptHeaderLocaleResolver
클래스를 사용한다. 만약 Locale 선택 방식을 변경하고 싶다면LocaleResolver
인터페이스를 implements 하면 된다.
This post is licensed under CC BY 4.0 by the author.