스프링 메시지

  • 메시지를 한 곳에서 모아서 관리 (한 곳만 수정하면 전체가 수정)
  • 스프링이 제공하는 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 을 선택) 등

[참고] 인프런 김영한님 강의를 공부한 내용입니다.

 

 

+ Recent posts