13.6. Using locales
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 + |
쿠키 이름 |
cookieMaxAge |
Integer.MAX_INT |
쿠키 살려둘 시간. -1로 해두면 브라우저를 닫을 때 없어집니다. |
cookiePath |
/ |
Path를 지정해 |
13.6.3. SessionLocaleResolver
requst가 가지고 있는 session으로 부터 locale 정보를 가져옵니다.
13.6.4. LocaleChangeInterceptor
HandlerMapping에 인터셉터를 등록하여 특정 locale의 요청을 가로채서 특정 파라미터에 넘어 온 값으로 locale 을 알아낼 수 있습니다.
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을 알 수 있게 됩니다.