스프링 mvc - 메시지, 국제화

meluu_·2024년 1월 15일
0

스프링

목록 보기
19/27
post-thumbnail

🌿 시작하기 앞서


스프링 부트 3.2.1 버전을 기준으로 작성됨
대부분이 실습코드이므로 학습위주로 정리함

✔️ 메시지


messages.properties 라는 관리용 파일에 다양한 메시지를 관리

파일명 : application.properties

spring.messages.basename=messages (기본)

// 추가할 수 있음 
// properties 파일 생성
// ex) home.properties

spring.messages.basename=messages, home
item=상품
item.id=상품 ID
item.itemName=상품명
item.price=가격
item.quantity=수량
// 사용
#{item.itemName}
hello=안녕
hello.name=안녕 {0} // 파라미터 받기 가능

// 파라미터 사용
<p th:text="#{hello.name(${item.itemName})}"></p>

스프링 메시지 소스 사용

//  메시지를 읽어오는 기능을 제공
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;
@SpringBootTest
public class MessageSourceTest {

	@Autowired
	MessageSource ms;
    
	@Test
	void helloMessage() {
		String result = ms.getMessage("hello", null, null);
		assertThat(result).isEqualTo("안녕");
 }
}


ms.getMessage("hello", null, null)
code: hello
args: null
(defaultMessage) : @Nullable
locale: null

✔️ 국제화


// 파일이름 
// messages_ko.properties
item=상품
item.id=상품 ID
item.itemName=상품명
item.price=가격
item.quantity=수량


// messages_en.properties
item=Item
item.id=Item ID
item.itemName=Item Name
item.price=price
item.quantity=quantity
  • 파일명 마지막에 언어 정보
  • messages.properties (언어정보가 없는 파일명)를 기본으로 사용

나라 구별

  • HTTP accept-language 해더 값 사용
  • 사용자가 직접 언어를 선택 후 쿠키 등을 사용해서 처리


스프링 국제화 메시지 선택


메시지 기능은 Locale 정보를 알아야 언어 선택 가능

LocaleResolver

  • 스프링은 Locale 선택 방식을 변경할 수 있도록 LocaleResolver 라는 인터페이스를 제공

  • 스프링 부트는 기본으로 Accept-Language 를 활용하는 AcceptHeaderLocaleResolver 를 사용

public interface LocaleResolver {

	Locale resolveLocale(HttpServletRequest request);
	void setLocale(HttpServletRequest request, @Nullable HttpServletResponse response, @Nullable Locale locale);
}

Locale 선택 방식

만약 Locale 선택 방식을 변경하려면 LocaleResolver 의 구현체를 변경해서 쿠키나 세션 기반의 Locale 선택
기능을 사용 가능

ex) 고객이 직접 Locale 을 선택

자세한 것은 찾아보고 직접 구현해볼 것



🔖 학습내용 출처

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

profile
열심히 살자

0개의 댓글