다국어 지원 - taeyun-ham/andalos GitHub Wiki
ISO-639-1
ISO-639-1
Header
// 클라이언트가 서버에게 받을 수 있는 언어의 종류를 보냄
Accept-Language : ko-KR,ko;q=0.9,en-US;q=0.8, en;q=0.7
// 서버가 클라이언트에게 보내는 내용의 언어를 알려줌
Content-Language : ko-KR
Locale
- 기본으로 적용되는 localeResolver 는 AcceptHeaderLocaleResolver 이다.
- header 에 정의된 Accept-Language 의 지역정보를 읽어 locale 을 지정한다.
- header 에 지역정보가 없을 경우 시스템 locale (JVM Locale) 을 사용한다.
- 기본 로케일을 지정할 경우 다음과 같이 SpringConfig 에 bean 을 등록한다.
@Bean
public LocaleResolver localeResolver() {
// Accept-Language 헤더를 기반으로 로케일을 결정하는 LocaleResolver
AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver();
// 기본 로케일 설정 (선택 사항)
localeResolver.setDefaultLocale(Locale.ENGLISH);
return localeResolver;
}
MessageSource
- Locale 에 해당하는 messageSource 파일을 검색한다.
- 파일이 없을 경우 시스템 locale 에 해당하는 파일에서 찾는다.
- default messageSource 를 지정할 경우 다음과 같이 SpringConfig 에 bean 을 등록한다.
@Bean
public ReloadableResourceBundleMessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("classpath:messages");
messageSource.setCacheSeconds(60);
messageSource.setDefaultLocale(Locale.ENGLISH); // message_en.properties 파일을 기본값으로 지정
return messageSource;
}
주의
- locale 에 해당하는 파일이 존재하나 property key 가 없을 경우 Accept-Language header 에 지정된 지역정보 순서대로 messageSource 파일을 검색하는 것이 아니라 default 로 지정된 messageSource 파일에서 찾는다.