Spring MVC - Locale

프로그래밍/Spring MVC 2009. 12. 23. 14:07


Using locales
Spring 에서는 국제화를 지원한다. DispatcherServlet 은 자동으로 사용자의 locale 을 파악할 수 있다. 이때 사용자의 locale 을 파악하기 위해LocaleResolver 가 사용된다.
request 가 들어오면 DispatcherServlet 이 locale resolver 를 찾게 되고 찾은 locale resolver 는 사용자의 locale 을 설정한다.
사용자는 RequestContext.getLocale() static 메소드로 설정된 locale 을 가져올 수 있다.

AcceptHeaderLocaleResolver
request 의 accept-language 헤더를 사용해서 locale 을 결정한다.

CookieLocaleResolver
cookie 에 설정된 locale 정보를 사용해서 사용자의 locale 을 결정한다.

<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
    <property name="cookieName" value="clientlanguage"/>
   
    <!-- in seconds. If set to -1, the cookie is not persisted (deleted when browser shuts down) -->
    <property name="cookieMaxAge" value="100000">
</bean>

SessionLocaleResolver
Session 에서 locale 정보를 가져온다.

LocaleChangeInterceptor
handler mapping 에 interceptor 로 설정되어 설정된 parameter 의 값으로 locale 을 설정한다.

<bean id="localeChangeInterceptor"
      class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
    <property name="paramName" value="siteLanguage"/>
</bean>

<bean id="localeResolver"
      class="org.springframework.web.servlet.i18n.CookieLocaleResolver"/>

<bean id="urlMapping"
      class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="interceptors">
        <list>
            <ref bean="localeChangeInterceptor"/>
        </list>
    </property>
    <property name="mappings">
        <value>/**/*.view=someController</value>
    </property>
</bean>

.view 로 들어오는 모든 request 에 대해서는 LocaleChangeInterceptor 가 수행되도록 설정되어 있다.
그리고 LocaleChangeInterceptor 의 paramName 으로 siteLanguage 가 설정되어 있다.
따라서 http://www.sf.net/home.view?siteLanguage=nl 이라면 해당 request 에 대한 locale 은 nl 로 설정된다.

'프로그래밍 > Spring MVC' 카테고리의 다른 글

Spring MVC - fileupload  (0) 2009.12.24
Spring MVC - Themes  (0) 2009.12.23
Spring MVC - Views  (0) 2009.12.23
Spring MVC - Handler Mapping  (0) 2009.12.22
Spring MVC - Controllers  (0) 2009.12.22
: