[java] Spring Framework를 사용한 국제화(i18n) 인터페이스 구현

개요

국제화(i18n)는 여러 언어로 애플리케이션을 지원하기 위한 중요한 요소입니다. Spring Framework는 이러한 국제화를 쉽게 구현할 수 있는 기능을 제공합니다. 이번 글에서는 Spring Framework를 사용하여 국제화 인터페이스를 구현하는 방법에 대해 알아보겠습니다.

Spring Framework의 MessageSource 인터페이스

Spring Framework는 국제화를 위해 MessageSource 인터페이스를 제공합니다. MessageSource는 메세지 키에 해당하는 로케일별 메세지를 제공하는 역할을 합니다.

MessageSource 구현하기

MessageSource 인터페이스를 구현하는 가장 간단한 방법은 ResourceBundleMessageSource를 사용하는 것입니다. ResourceBundleMessageSource는 메세지를 로케일별 프로퍼티 파일에서 가져오는 역할을 합니다.

@Configuration
public class MessageSourceConfig {

    @Bean
    public MessageSource messageSource() {
        ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
        messageSource.setBasename("messages");
        messageSource.setDefaultEncoding("UTF-8");
        return messageSource;
    }
}

위의 예제에서는 messages.properties와 messages_ko.properties와 같은 프로퍼티 파일에서 메세지를 가져옵니다. 프로퍼티 파일을 추가로 작성하여 다른 언어로 메세지를 지원할 수 있습니다.

국제화 메세지 사용하기

메세지를 사용할 클래스에서 MessageSource를 주입받아 메세지를 가져와 사용할 수 있습니다. 메세지는 getMessage() 메서드를 사용하여 로케일 및 메세지 키를 지정하여 가져올 수 있습니다.

@Service
public class MyService {

    @Autowired
    private MessageSource messageSource;

    public void printMessage() {
        String message = messageSource.getMessage("my.key", null, LocaleContextHolder.getLocale());
        System.out.println(message);
    }
}

위의 예제에서는 my.key라는 키에 해당하는 메세지를 가져와 출력합니다. LocaleContextHolder.getLocale()를 사용하여 로케일을 동적으로 가져옵니다.

결론

Spring Framework의 MessageSource 인터페이스와 ResourceBundleMessageSource를 사용하여 간단하게 국제화(i18n)를 구현할 수 있습니다. 이를 통해 애플리케이션의 다국어 지원을 간편하게 처리할 수 있습니다.


참고 자료