Request가 들어오면 Dispatcher는 Locale resolver를 찾게 되고 만약에 있으면 Locale을 설정할 때 사용합니다. RequestContext.getLocale() 메소드를 사용해서 Locale resolver에 의해 설정 된 Locale을 가져올 수 있습니다.

13.6.1. AcceptHeaderLocaleResolver

사용자의 브라우져에서 보내진 request의 헤더에 accept-language 부분에서 Locale을 읽어들입니다. 사용자의 OS locale을 나타냅니다.

13.6.2. CookieLocaleResolver

사용자 컴터에 쿠키를 남아 있다면 그 쿠키에 설정한 Locale을 읽어 들입니다.
다음과 같은 속성을 설정할 수 있습니다.

Property

Default

Description

cookieName

classname +
LOCALE

쿠키 이름

cookieMaxAge

Integer.MAX_INT

쿠키 살려둘 시간.

-1로 해두면 브라우저를 닫을 때 없어집니다.

cookiePath

/

Path를 지정해
주면 해당 하는 path와 그 하위 path에서만 참조할
수 있습니다.

13.6.3. SessionLocaleResolver

requst가 가지고 있는 session으로 부터 locale 정보를 가져옵니다.

13.6.4. LocaleChangeInterceptor

HandlerMapping에 인터셉터를 등록하여 특정 locale의 요청을 가로채서 특정 파라미터에 넘어 온 값으로 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로 끝나는 요청을 가로채서 siteLanguage라는 request의 파라미터를 조사 하여 locale을 알 수 있게 됩니다.