IoC Container - MessageSource
Application을 다국화하는 방법을 제공하는 인터페이스
ApplicationContext는 MessageSource 인터페이스를 상속하고 있다.
Spring boot를 사용한다면 기본적으로 messages.properties
를 활용할 수 있다.
파일 네이밍 규칙에 따라 자동으로 언어를 교환한다.
- 한국어 :
messages_ko.properties
- 영어 :
messages_en.properties
Example
messageSource를 사용하기에 앞서 default를 먼저 살펴보도록 한다.
- AppRunner
@Component
public class AppRunner implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println(Locale.getDefault());
System.out.println(Locale.ENGLISH);
System.out.println(Locale.KOREAN);
}
}
Locale 확인 결과
ko_KR
en
ko
실행하게 되면 3가지가 출력된다.
- 서버 기준 default locale
- ENGLISH의 locale name
- KOREAN의 locale name
내 pc의 경우 한국어로 설정되어 있기 때문에 ko_KR이 출력되었다.
이 경우엔 messages.propertes
가 한국어를 띄우는 파일로 지정된다.
영어를 사용하고 싶다면 messages_en.properties
가 필요하다.
이제 파일을 생성하고 내용을 채워넣는다.
- messages.properties
hello=안녕!
- messages_en.properties
hello=hello!
그리고 AppRunner를 수정한다.
@Component
public class AppRunner implements ApplicationRunner {
@Autowired MessageSource messageSource;
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println(messageSource.getMessage(“hello”, null, Locale.getDefault()));
System.out.println(messageSource.getMessage("hello", null, Locale.KOREAN));
System.out.println(messageSource.getMessage("hello", null, Locale.ENGLISH));
}
}
- getMessage는 MessageSource에서 해당 key를 가져온다.
- getMessage의 매개변수는 message_key, args, Locale 순이다.
hello=안녕, {0}, {1}
으로 설정했다면 args을 순서대로 {0}, {1}에 대치시킨다.
결과는 아래와 같다.
안녕!
안녕!
hello!
Locale.getDefault()는 ko_KR로 나타나지만, ko 와도 호환된다.
'Java > Spring framework' 카테고리의 다른 글
Spring framework core (7) - ResourceLoader (0) | 2020.01.14 |
---|---|
Spring framework core (6) - ApplicationEventPublisher (0) | 2020.01.14 |
Spring framework core (4) - Environment (0) | 2020.01.12 |
Spring framework core (3) - Bean scope (0) | 2020.01.12 |
Spring framework 소스 코드 읽어보기 - Bean 생성 원리 (1) (0) | 2020.01.06 |