방법1: .properites 파일 사용
다국어에 대한 메시지를 `프로퍼티 파일`에 저장하고, 해당 파일을 다국어별로 구분하여 작성합니다. 각 언어에 대한 프로퍼티 파일을 생성하고, 메시지 키와 해당 언어에 대한 값을 정의합니다. Spring Framework에서는 `MessageSource` 인터페이스를 사용하여 다국어 메시지를 관리합니다. MessageSource를 구현하는 `ResourceBundleMessageSource` 클래스를 주로 사용합니다.
- 프로퍼티 파일 생성
한국어인 경우: messages_ko.properties
greeting.message=안녕
영어인 경우: messages_en.properties
greeting.message=Hello
- MessageSource 설정
@Configuration
public class AppConfig {
@Bean
public MessageSource messageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasename("messages");
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
}
- 다국어 적용
@Service
public class GreetingService {
@Autowired
private MessageSource messageSource;
public String getGreetingMessage(String locale) {
Locale targetLocale = Locale.forLanguageTag(locale);
return messageSource.getMessage("greeting.message", null, locale);
// 한국어 적용 예시
// Locale koreanLocale = Locale.forLanguageTag("ko");
// return messageSource.getMessage("welcome.message", null, koreanLocale);
}
}
`messageSource.getMessage()` 메서드를 이용해 메시지를 가져옵니다.
첫 번째 인자: message key
두 번째 인자: 메시지에 전달할 인자 배열
세 번째 인자: `Locale` 객체
`Locale` 객체
특정 지역 또는 언어를 나타내는 클래스입니다. 언어는 소문자, 국가는 대문자로 표시하며 `Locale` 객체를 통해 "en-US" 미국언어, "ko-KR" 대한민국 한국어를 나타낼 수 있습니다. 이 객체를 사용한다고 해서 자동으로 번역되지는 않습니다. Spring Framework에서 다국어 처리할 때, MessageSource를 통해 해당 `Locale`에 맞는 번역된 메시지를 가져올 수 있습니다.
각 언어에 맞춰서 파일을 적용하면 됩니다. 언어를 구분하는 방법은 여러가지가 있습니다.
기본 언어를 설정한 다음 언어를 바꾸어 적용하여도 되지만, 브라우저가 서버에 요청을 전송할 시 Accept-Language 헤더에 들어 있는 언어 정보를 읽어 언어를 구분하는 방법도 있습니다.
방법2: 어노테이션 기반 메시지 처리
Spring Framework 4.3부터는 어노테이션 기반의 메시지 처리가 가능합니다. `@EnableMessageSource` 어노테이션을 사용하여 메시지 처리를 활성화하고, `@Message` 어노테이션을 사용하여 메시지를 정의할 수 있습니다.
방법3: 데이터베이스 사용
다국어 메시지를 데이터베이스에 저장하고, 필요할 때 해당 메시지를 조회하여 사용할 수 있습니다. 데이터베이스에 메시지 테이블을 생성하고, 각 언어에 대한 메시지를 저장합니다. Spring Framework에서는 `MessageSource` 인터페이스를 구현한 `ReloadableResourceBundleMessageSource` 클래스를 사용하여 데이터베이스를 통해 다국어 메시지를 관리할 수 있습니다.
방법4: Spring Boot의 MessageSourceAutoConfiguration 사용
Spring Boot를 사용하면 자동 구성을 통해 다국어 메시지 처리를 쉽게 설정할 수 있습니다. `MessageSourceAutoConfiguration` 클래스를 사용하여 `MessageSource` 빈을 자동으로 구성할 수 있습니다. 프로퍼티 파일이나 데이터베이스를 사용하여 다국어 메시지를 관리할 수 있습니다.
'Spring Framework' 카테고리의 다른 글
Spring Cookie와 Session (로그인 유지 예제) (0) | 2022.09.01 |
---|---|
Spring 공통적인 작업 처리를 위한 HandlerInterceptor (0) | 2022.09.01 |
Spring 트랜잭션 (0) | 2022.08.29 |
Spring 스프링 JDBC (feat. JdbcTemplate) (0) | 2022.08.26 |
Spring 프로퍼티 파일 ( .properties, .yaml), 프로파일(profiles) (0) | 2022.08.25 |