Loading...
Spring Framework Reference Documentation 7.0.2의 Locale의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
Spring의 대부분 아키텍처 부분은 Spring web MVC framework와 마찬가지로 국제화를 지원합니다. DispatcherServlet은 client의 로케일을 사용하여 메시지를 자동으로 해결할 수 있게 해 줍니다. 이는 LocaleResolver 객체로 수행됩니다.
request가 들어오면, DispatcherServlet은 로케일 리졸버를 찾고, 찾으면 이를 사용하여 로케일을 설정하려고 시도합니다. RequestContext.getLocale() 메서드를 사용하면 로케일 리졸버에 의해 해결된 로케일을 항상 조회할 수 있습니다.
자동 로케일 해결에 추가로, 특정 상황(예를 들어, request의 매개변수 기반)에서 로케일을 변경하기 위해 인터셉터를 핸들러 매핑에 붙일 수도 있습니다(handler mapping 인터셉터에 대한 더 많은 정보는 Interception을 참고하십시오).
로케일 리졸버와 인터셉터는 org.springframework.web.servlet.i18n 패키지에 정의되어 있으며 일반적인 방식으로 애플리케이션 컨텍스트에 설정됩니다. 다음은 Spring에 포함된 로케일 리졸버의 셀렉션입니다.
client의 로케일을 얻는 것에 더해, 그 시간대를 아는 것도 종종 유용합니다.
LocaleContextResolver 인터페이스는 리졸버가 시간대 정보를 포함할 수 있는 보다 풍부한 LocaleContext를 제공할 수 있게 해 주는 LocaleResolver에 대한 확장을 제공합니다.
사용자의 TimeZone이 사용 가능할 때는 RequestContext.getTimeZone() 메서드를 사용하여 얻을 수 있습니다. 시간대 정보는 Spring의 ConversionService에 등록된 모든 날짜/시간 Converter와 Formatter 객체에 의해 자동으로 사용됩니다.
이 로케일 리졸버는 client(예를 들어, 웹 브라우저)가 보낸 request의 accept-language 헤더를 검사합니다. 일반적으로 이 헤더 필드에는 client 운영 체제의 로케일이 포함됩니다. 이 리졸버는 시간대 정보를 지원하지 않는다는 점에 유의하십시오.
이 로케일 리졸버는 client에 존재할 수 있는 Cookie를 검사하여 Locale 또는 TimeZone이 지정되어 있는지 확인합니다. 지정되어 있으면 해당 세부 정보를 사용합니다. 이 로케일 리졸버의 프로퍼티를 사용하여 cookie의 이름과 최대 수명을 지정할 수 있습니다. 다음 예제는 CookieLocaleResolver를 정의합니다:
1<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver"> 2 3 <property name="cookieName" value="clientlanguage"/> 4 5 <!-- in seconds. If set to -1, the cookie is not persisted (deleted when browser shuts down) --> 6 <property name="cookieMaxAge" value="100000"/> 7 8</bean>
다음 표는 CookieLocaleResolver 프로퍼티를 설명합니다:
| Property | Default | Description |
|---|---|---|
cookieName | class name + LOCALE | cookie의 이름 |
cookieMaxAge | Servlet 컨테이너 기본값 | cookie가 client에 유지되는 최대 시간입니다. -1이 지정되면,<br>cookie는 지속되지 않습니다. 브라우저가 종료될 때까지에만<br>사용 가능합니다. |
cookiePath | / | site의 특정 부분으로 cookie의 가시성을 제한합니다. cookiePath가<br>지정되면 cookie는 해당 path와 그 아래 path에만 표시됩니다. |
Table 1. CookieLocaleResolver properties
SessionLocaleResolver는 user의 request와 연관될 수 있는 세션에서 Locale과 TimeZone을 조회할 수 있게 해 줍니다. CookieLocaleResolver와 달리, 이 전략은 Servlet 컨테이너의 HttpSession에 로컬로 선택된 로케일 설정을 저장합니다. 결과적으로 이러한 설정은 각 세션마다 임시이며, 각 세션이 종료될 때 사라집니다.
Spring Session project와 같은 외부 세션 관리 메커니즘과는 직접적인 관계가 없다는 점에 유의하십시오. 이 SessionLocaleResolver는 현재 HttpServletRequest에 대해 해당 HttpSession 속성을 평가하고 수정합니다.
LocaleChangeInterceptor를 HandlerMapping 정의 중 하나에 추가하여 로케일 변경을 활성화할 수 있습니다. 이는 request의 매개변수를 감지하고 이에 따라 로케일을 변경하며, 디스패처의 애플리케이션 컨텍스트에 있는 LocaleResolver의 setLocale 메서드를 호출합니다.
다음 예제는 siteLanguage라는 이름의 매개변수를 포함하는 모든 *.view 리소스 호출이 이제 로케일을 변경한다는 것을 보여 줍니다. 예를 들어, URL www.sf.net/home.view?siteLanguage=nl에 대한 request는 사이트 언어를 Dutch로 변경합니다. 다음 예제는 로케일을 인터셉트하는 방법을 보여 줍니다:
1<bean id="localeChangeInterceptor" 2 class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"> 3 <property name="paramName" value="siteLanguage"/> 4</bean> 5 6<bean id="localeResolver" 7 class="org.springframework.web.servlet.i18n.CookieLocaleResolver"/> 8 9<bean id="urlMapping" 10 class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 11 <property name="interceptors"> 12 <list> 13 <ref bean="localeChangeInterceptor"/> 14 </list> 15 </property> 16 <property name="mappings"> 17 <value>/**/*.view=someController</value> 18 </property> 19</bean>
View Resolution
Multipart Resolver