Spring 메시지, 국제화
Spring

Spring 메시지, 국제화

반응형

Spring_Boot_Study/4.spring-MVC2/message at master · NamHyeop/Spring_Boot_Study

 

GitHub - NamHyeop/Spring_Boot_Study: Spring 공부를 하며 기록한 자료들입니다.

Spring 공부를 하며 기록한 자료들입니다. Contribute to NamHyeop/Spring_Boot_Study development by creating an account on GitHub.

github.com

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