MessageSource를 이용한 메시지 국제화

채상엽·2022년 9월 30일
0

Spring

목록 보기
13/21

스프링 메세지소스(Spring MessageSource)

국제화(i18n)을 제공하는 인터페이스이다. 메세지 설정 파일들을 모아놓은 뒤, 접속한 국가 환경에 따라 쉽게 각 지역에 맞춘 메세지를 제공할 수 있다.

메세지 설정 파일 세팅

[파일이름]_[언어]_[국가].properites 형식으로 메세지 파일을 추가해 설정 파일을 세팅할 수 있다.
예시는 아래와 같다.

  • message.properties
    기본 메시지, 시스템의 언어 및 지역에 맞는 속성 파일이 존재하지 않을 경우 사용
  • message_ko.properties
    한글 메시지
  • message_en.properties
    영어 메시지
  • 등등...

간단한 사용 예제

먼저 resources 하위에 다음과 같이 properties 파일을 추가한다.

# message.properties

greeting = Hello, {0}
# message_ko.properties

greeting = 안녕, {0}

Spring 환경에서는 별도로 MessageSource를 Bean으로 등록해주어야 하지만, SpringBoot에서는 properties 파일만 생성하여도 자동으로 이것들을 Bean으로 관리해주기 때문에, 별도로 Bean으로 등록하는 과정을 거치지 않아도 된다.

간단하게 아래와 같이 코드를 작성해 사용해 보았다.

@RestController
public class TestController {

    @Autowired
    private MessageSource messageSource;

    @GetMapping("/test1")
    public void test1() throws RuntimeException {

        String greetingKR = messageSource.getMessage("greeting", new String[]{"채상엽"}, Locale.KOREA);
        String greetingEN = messageSource.getMessage("greeting", new String[]{"채상엽"}, Locale.getDefault());

        System.out.println(greeting);
        System.out.println(greeting1);
        
        throw new RuntimeException();
    }
}

/test1으로 요청을 보내게 되면, 두 가지 Locale에 설정된 국가에 맞는 메시지 소스를 읽어오게 된다. greetingKRLocale.KOREA로 설정되어 있으므로, message_ko.properties에 설정된 내용을 읽어온다. 그리고 greetingENLocale.getDefault()로 설정되어 있으므로, message.properties에 설정된 내용을 읽어온다.

이를 응용하여 사용하면 사용자가 사용하는 언어 환경에 맞는 메세지를 제공하여, 손쉽게 메세지 국제화를 처리할 수 있게 된다.

profile
프로게이머 연습생 출신 주니어 서버 개발자 채상엽입니다.

0개의 댓글