스프링 메시지
- 메시지를 한 곳에서 모아서 관리 (한 곳만 수정하면 전체가 수정)
- 스프링이 제공하는 MessageSource를 스프링 빈으로 등록
- (MessageSource는 인터페이스, 구현체인 ResourceBundleMessageSource 생성)
- /resources/messages.properties, messages_en.properties ..
스프링 부트
- 스프링 부트는 MessageSource 를 스프링 빈으로 등록하지 않아도 messages 라는 이름으로 기본 등록
- messages.properties 에서 파라미터 바인딩 {0}, {1} ..
//application.properties
spring.messages.basename=messages,config.i18n.messages
(한글 깨짐 방지, IDE에서 *.properties 파일의 인코딩을 UTF-8로 설정)
타임리프의 메시지 표현식
- 타임리프는 #{...} 를 사용하면 messages.properties에 입력해놓은 메시지를 불러올 수 있다.
<th th:text="#{label.item.itemName(${item.itemName})}">상품명</th>
<!-- messages.properties -->
<!-- label.item.itemName=name {0} -->
<!-- {0} 에 ${item.itemName}이 바인딩 -->
LocaleResolver
- 스프링은 Locale 선택 방식을 변경할 수 있도록 LocaleResolver 라는 인터페이스를 제공
- 스프링 부트는 기본으로 Accept-Language를 활용하는 AcceptHeaderLocaleResolver를 사용한다.
- 만약 Locale 선택 방식을 변경하려면 LocaleResolver 의 구현체를 변경
- 쿠키나 세션 기반의 Locale 선택 (ex. 고객이 직접 Locale 을 선택) 등
[참고] 인프런 김영한님 강의를 공부한 내용입니다.
'Spring' 카테고리의 다른 글
[스프링 MVC2] 쿠키와 세션 (0) | 2022.06.16 |
---|---|
[스프링 MVC2] 애노테이션 검증 (Bean Validation) (0) | 2022.06.15 |
[스프링 MVC2] 타임리프(Thymeleaf) 기본 문법 (0) | 2022.06.14 |
[스프링 MVC1] 서블릿, MVC 패턴 (2/2) (0) | 2022.06.13 |
[스프링 MVC1] 서블릿(Servlet), MVC 패턴 (1/2) (0) | 2022.06.13 |