[java] Spring MVC에서 다국어 지원 및 번역 처리 방법

Spring MVC 프레임워크를 사용하여 웹 애플리케이션을 개발할 때, 다국어 지원 및 번역 처리는 중요한 요소입니다. 이를 통해 사용자들이 웹 애플리케이션을 자신의 언어로 이해할 수 있으며, 국제 시장에 대한 접근성을 개선할 수 있습니다.

1. 다국어 설정하기

Spring MVC에서 다국어를 지원하려면 다음과 같이 설정해야 합니다.

1.1. 메시지 리소스 구성

먼저, MessageSource 빈을 구성하여 다국어 메시지들을 로드할 수 있도록 해야 합니다. 이는 MessageSource 인터페이스를 구현한 클래스를 생성하고, 해당 클래스의 빈을 스프링 컨텍스트에 등록하는 과정을 포함합니다.

@Configuration
public class AppConfig {

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

위의 예제에서는 ResourceBundleMessageSource 클래스를 사용하여 메시지 리소스를 구성하였습니다. basename 속성은 메시지 리소스 파일(messages.properties, messages_en.properties, messages_fr.properties 등)의 기본 이름을 나타냅니다. defaultEncoding 속성은 메시지 리소스 파일의 인코딩을 설정합니다.

1.2. 다국어 설정 적용

spring-webmvc.xml 파일에 다음과 같이 다국어 설정을 추가해야 합니다.

<mvc:interceptors>
  <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
    <property name="paramName" value="lang" />
  </bean>
</mvc:interceptors>

<mvc:annotation-driven />

이 설정은 LocaleChangeInterceptor 인터셉터를 등록하여 사용자의 언어 설정을 변경하는 데 사용됩니다. 또한 mvc:annotation-driven 요소가 있는지 확인해야 합니다.

2. 번역 처리하기

위의 설정을 마쳤다면, 이제 번역 처리를 할 준비가 되었습니다. 번역 처리는 다음과 같은 방법으로 수행할 수 있습니다.

2.1. 컨트롤러에서 번역 사용하기

컨트롤러 메서드에서 MessageSource를 주입받아 번역 처리를 할 수 있습니다.

@Controller
public class MyController {

    @Autowired
    private MessageSource messageSource;

    @RequestMapping("/greeting")
    public ModelAndView greeting(Locale locale) {
        String greeting = messageSource.getMessage("greeting.message", null, locale);
        ModelAndView modelAndView = new ModelAndView("greeting");
        modelAndView.addObject("greeting", greeting);
        return modelAndView;
    }

}

위의 예제에서 messageSource.getMessage() 메서드를 사용하여 다국어에 따른 메시지를 가져옵니다. greeting.messagemessages.properties 파일에서 해당 메시지의 키를 나타냅니다.

2.2. 뷰 템플릿에서 번역 사용하기

뷰 템플릿에서 번역 처리를 할 경우, 다음과 같이 사용할 수 있습니다.

<h1 th:text="#{greeting.message}"></h1>

위의 예제에서 #{greeting.message}messages.properties 파일에서 해당 메시지의 키를 나타냅니다.

3. 메시지 리소스 파일 생성하기

다국어별로 번역된 메시지를 담은 리소스 파일을 생성해야 합니다. 예를 들어, 다음과 같이 messages_en.propertiesmessages_fr.properties 파일을 생성할 수 있습니다.

# messages_en.properties
greeting.message=Hello!
# messages_fr.properties
greeting.message=Bonjour!

이렇게 생성한 리소스 파일을 클래스 경로에 위치시켜야 합니다.

4. 결과 확인하기

다국어 설정과 번역 처리가 모두 완료되었다면, 웹 애플리케이션을 다국어로 접속하여 결과를 확인할 수 있습니다.

예를 들어, http://localhost:8080/yourapp/greeting?lang=enhttp://localhost:8080/yourapp/greeting?lang=fr를 차례로 접속하여 영어와 프랑스어로 번역된 인사말을 확인할 수 있습니다.

참고 자료