2013-08-24 5 views
0

나는 즉, 사용자가 lang 매개 변수를 사용하여 로케일을 설정할 수봄 REST API 내 REST API의 국제화

http://somehost/resource?param1=value1&lang=fr 

을 허용 할 로케일로 사용하고 설정하십시오.

저는 REST API에서 Spring의 i18n 기능을 사용하고 있습니다. 설명서를 살펴본 후 필요한 빈을 구성했습니다. Accept-Language 헤더가있는 요청을 보내면 제대로 작동하는 것처럼 보입니다. LocaleContextHolder.getLocale()을 호출하면 헤더에 설정 한 로케일이 반환됩니다.

lang URL 매개 변수를 사용하면 작동하지 않습니다.

어떻게 로캘 매개 변수를 사용하도록 Spring을 구성 할 수 있습니까?

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

<bean  
class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" > 
    <property name="interceptors"> 
     <list> 
      <ref bean="localeInterceptor" /> 
     </list> 
    </property> 
</bean> 

<bean id="sessionLocaleResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"/> 

<bean id="messages" class="org.springframework.context.support.ResourceBundleMessageSource"> 
    <property name="basenames"> 
     <list> 
      <value>messages</value> 
     </list> 
    </property> 
</bean> 

답변

0

나는 두 가지 제안을 시도한다. 먼저 LocaleChangeInterceptor이 호출되는지 확인 하시겠습니까? 내가 본 구성의 대부분은 HandlerMapping의 경우 ID가 handlerMapping입니다. 다른 제안은 다른 ID에 관한 것입니다. 즉, sessionLocaleResolver, 나는 그것이 localeResolver이어야한다고 생각합니다. Spring이이 id 값이나 클래스 유형에 기본적으로 의존하고 있는지는 잘 모르겠지만,이 모든 것을 하나로 묶는 데는 큰 도움이됩니다.