반응형
Spring_Boot_Study/4.spring-MVC2/message at master · NamHyeop/Spring_Boot_Study
1.메시지 국제화 소개
- 메시지는 아래와 같이 Message.propertis에 내용을 관리하면서 수정에 용이하게 만드는것을 의미한다.
//messages_kr.properties
item=상품
item.id=상품 ID
item.itemName=상품명
item.price=가격
item.quantity=수량
/**
타임리프의 텍스트내용에 item.itemName이란 곳의 내용을 동시에 치환해준다
*/
<label for="itemName" th:text="#{item.itemName}"></label>
- 국제화란 페이지에 접근시에 Http 요청에 있는 언어의 우선순위에 따라 해당 언어로 페이지를 보여주는 기능을 의미한다.
- 단 별도로 아래처럼 해당 언어에대한 propertis를 사전에 등록해야한다.
//messages_en.properties
label.item.id=Item ID
label.item.itemName=Item Name
label.item.price=price
label.item.quantity=quantity
page.items=Item List
page.item=Item Detail
2.스프링 메시지 소스 설정
- 스프링은 기본적으로 메시지 관리 기능을 제공한다.
- 메시지 관리 기능을 사용하기 위해서는 MessageSource를 스프링 빈에 등록해야한다.
- MessageSource는 인터페이스이며 구현체인 ResourceMessageSource를 등록해야하는데 스프링이 load시에 아래의 Bean 정보를 자동으로 주입을 해준다.
- 기본값으로 messages와 errors를 등록하며 기본 인코딩 정보로는 UTF-8을 등록한다.
- 그렇기에 messages_kr.properties, messages_en.propertise 같이 사용하며 messages_{언어}.proerties 형식으로 resources하단에 저장하면 된다.
- messages만 사용하면 해당 properties가 국제화의 기본값 적용 대상이 된다.
@Bean
public MessageSource messageSource(){
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource(); messageSource.setBasenames("messages", "errors");
messageSource.setDefaultEncoding("utf-8");
return messageSource;
}
별도의 메시지값 소스 설정 방법
- 메시지값의 기본 소스값을 변경하고 싶다면 basename 변수 부분에 자신이 원하는 이름을 설정해주면 된다.
//aplication.properties
spring.messages.basename=messages,config.i18n.messages
메시지 파일 만들어보기
//resources/message.properties 기본값.
hello=안녕
hello.name=안녕 {0}
//resources/message_e .properties 영어국가 접근시 메시지값.
hello=hello
hello.name=hello {0}
💡 Locale 정보를 사용자가 선택하도록 하고 싶으면 LocaleResolver 개념을 검색해보자
7.정리
- 상품명 카테고리와 관련된 프로젝트 내부의 text값을 동시에 다 바꿔야할 때 메시지 기능을 사용한다.
- 일일이 수작업으로 한 개씩 바꾸는것은 매우 비효율적이며 이를 한 번에 바꾸기 위해 사용하는 기능이다.
- 국제화는 이런 기능을 Http요청의 우선순에 맞는 언어로 변환해주는 역할을한다.
- 기술적으로 메시지 기능을 적용하기 위한 파일을 만드는 방법과 HTTP 요청이 도착했을 경우 해당언어에 응답에 맞게 반환해주는 방법만 알면 된다.
- 개념적으로는 Spring이 MessageSource인터페이스의 구현체를 자동으로 추가해준다는것만 알면될거 같다.
반응형
'Spring' 카테고리의 다른 글
Spring의 쿠키,세션 (0) | 2022.06.29 |
---|---|
Spring의 Bean Validation (0) | 2022.06.28 |
Spring의 Validation이란 (0) | 2022.06.27 |
Spring MVC 구조 및 구현 (0) | 2022.04.16 |
스프링 빈 기능 (0) | 2022.04.12 |