[REST API] REST API의 국제화 알아보기

민지·2024년 3월 14일
0

REST API - Spring Boot

목록 보기
16/27
post-custom-banner

국제화란? - Accept-Language header

이전 포스팅에서 content negotiation을 배울 때, Accept-Language header를 이용하면, 원하는 언어에 맞는 response를 받을 수 있다고 했었다. 해당 방법에 대해 정리해보자.

국제화 구현

1. /src/main/resources/messages.properties 수정 - 메세지 값 저장

스프링과 스프링부트에서 국제화를 다루는 일반적인 방법은, 파일을 message.properties라는 이름으로 정의하는 것이다.

good.morning.message=Good Morning

프로퍼티의 키(good.morning.message)와 값(Good Morning)은 개발자가 임의로 정의해도 된다.
(뜻에는 안 맞지만, bad.morning.message=Good Morning 이따구로 해도 됨)

2. helloworld/HelloWorldController 수정 - 앞서 저장한 메세지값 가져오기

import java.util.Locale;
import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;

@RestController
public class HelloWorldController {
	
	private MessageSource messageSource;
	
	@Autowired
	public HelloWorldController(MessageSource messageSource) {
		this.messageSource = messageSource;
	}
	
	@GetMapping(path = "/hello-world-internationalized")
	public String helloWorldInternationalized() {
		Locale locale = LocaleContextHolder.getLocale();
		return messageSource.getMessage("good.morning.message", null, "Default Message", locale );
		
		//return "Hello World V2"; 

//		- Example: `en` - English (Good Morning)
//		- Example: `nl` - Dutch (Goedemorgen)
//		- Example: `fr` - French (Bonjour)
//		- Example: `de` - Deutsch (Guten Morgen)

	}

}
  • MessageSource 멤버변수 추가
    • MessageSource 클래스란, 메세지의 매개변수화나 국제화에 대한 지원을 통해 메세지를 처리하는
    • 즉, message.properties에 프로퍼티의 키-값을 설정해두면, MessageSource를 사용해 가져올 수 있다!

실행결과

네덜란드어로 customized한다면?

src/main/resources/messages_nl.properties New
good.morning.message=Goedemorgen

실행결과

이때 nl 헤더명은 파일명 messages_nl.properties와 같고, 이는 국제화 표준 약속이다.
이를 어기고 파일명과 헤더명을 마음대로 작성하면, 스프링의 MessageSource를 굳이 커스터마이징해야 되서 귀찮아진다.




참고 및 출처
이 시리즈는 Udemy 강의의 내용을 정리한 것입니다.
https://www.udemy.com/course/spring-boot-and-spring-framework-korean/

profile
배운 내용을 바로바로 기록하자!
post-custom-banner

0개의 댓글