Programming/Spring

Spring - 메시지, 국제화

잇(IT) 2023. 6. 22. 00:12

- 메시지

1. 다양한 메시지를 한 곳에서 관리하도록 하는 기능을 메시지 기능이라 한다.

 

hello=안녕
hello.name=안녕 {0}

label.item=상품333
label.item.id=상품 ID333
label.item.itemName=상품명333
label.item.price=가격333
label.item.quantity=수량333
page.items=상품 목록333
page.item=상품 상세333
page.addItem=상품 등록333
page.updateItem=상품 수정333
button.save=저장333
button.cancel=취소333

- resources 폴더 아래 messages.properties라는 파일을 생성한 후 위와 같이 내용을 작성한다.


- 스프링 부트를 사용하면 스프링 부트가 MessageSource 를 자동으로 스프링 빈으로 등록한다.

 

- application.properties 파일에 아래와 같이 메시지 소스를 설정할 수 있다.

spring.messages.basename=messages,config.i18n.messages

 

- 스프링 부트 메시지 소스 기본 값

spring.messages.basename=messages

- MessageSource 를 스프링 빈으로 등록하지 않고, 스프링 부트와 관련된 별도의 설정을 하지 않으면 messages 라는 이름으로 기본 등록된다. 따라서 messages_en.properties , messages_ko.properties , messages.properties 파일만 등록하면 자동으로 인식된다.


- MessageSource 인터페이스

public interface MessageSource {

	String getMessage(String code, @Nullable Object[] args, @Nullable String
defaultMessage, Locale locale);

	String getMessage(String code, @Nullable Object[] args, Locale locale) throws
NoSuchMessageException;

- 타임리프 메시지 적용

 

label.item=상품
label.item.id=상품 ID
label.item.itemName=상품명
label.item.price=가격
label.item.quantity=수량
page.items=상품 목록
page.item=상품 상세
page.addItem=상품 등록
page.updateItem=상품 수정
button.save=저장
button.cancel=취소

- messages.properties에 위와 같이 작성되어 있다고 가정한다.

 

- 타임리프의 메시지 표현식 #{...} 를 사용하면 스프링의 메시지를 편리하게 조회할 수 있다.

- 예를 들어서 방금 등록한 상품이라는 이름을 조회하려면 #{label.item} 이라고 하면 된다

 

- 랜더링 전

<div th:text="#{label.item}"></h2>

- 랜더링 후

<div>상품</h2>

 

 

 

 

 

 

 

 

 

 

 

출처 : 인프런 - 우아한 형제들 기술이사 김영한의 스프링 완전 정복 (스프링 핵심원리 - 기본 편)

728x90

'Programming > Spring' 카테고리의 다른 글

Spring - Bean Validation  (0) 2023.06.22
Spring - 검증 1 - Validation  (0) 2023.06.22
Spring - 타임리프 - 기본 기능  (0) 2023.06.20
Spring - 스프링 MVC - 기본 기능  (0) 2023.06.18
Spring - 스프링 MVC - 구조 이해  (0) 2023.06.18