본문 바로가기

백엔드

[Spring Boot] 메시지 국제화 (Internationalization)

728x90

/* 메시지 국제화 */

내가 만들고 있는 웹이 여러 언어 환경을 지원할 수 있도록 설계하는 것을 의미한다. (독일에 있는 독일인이 내 웹을 보고싶다 -> 자동으로 독일어를 지원하게 하는 웹)

 

/* 디폴트값 설정 */

나는 REST API로 메시지 국제화를 해볼 생각이다. 그래서 localhost:8080/hello-world-internationaized 를 방문했을 때 Good Morning 을 디폴트 값으로 설정하고 독일어를 지원할 생각이다. 그러면 디폴트값은 다음과 같이 설정할 수 있다.

 

// messages.properties

good.morning.message = Good Morning

 

파일명은 반드시 messages.properties로 해야한다. yml파일은 안된다 (혹시 되나요?)

 

/* 독일값 설정 */

// messages_nl.properties

good.morning.message = Goedemoergen

 

독일이 nl 이므로 messages_nl.properties와 같이 지어준다. 만약 프랑스일경우는 messages_fr.properties로 하면 되겠다.

 

/* 컨트롤러 설정 */

 

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Locale;

@RestController
public class HelloWorldController{
	private final 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",locale);

    }
}

 

MessageSource 객체를 불러오고 생성자 주입을 한다. 

GetMapping을 설정해준다.

message.Source.getMessage -

    -  첫번째 패러미터 : 참조할 값

    -  두번째 패러미터 : args

    -  세번째 패러미터 : 디폴트값 (근데 우리는 이미 디폴트값을 messages.properties에 설정해서 사실상 무의미하다)

    -  네번째 패러미터 : locale (이 값이 fr이면 fr, nl이면 nl, ko면 ko 이렇게 매핑을 해준다.)

 

/* Test (Talend API) */

 

 

 

 

다음과 같이 얻을 수 있다. 

728x90