在我的 REST API 中,我想允许用户使用lang
参数设置语言环境,即
http://somehost/resource?param1=value1&lang=fr
如果lang
URL 中不存在该参数,Accept-Language
则应使用标头并将其设置为区域设置。
我在我的 REST API 中使用 Spring 的 i18n 功能。我查看了文档并配置了必要的 bean。如果我发送带有Accept-Language
标头的请求,它似乎可以正常工作,当我调用LocaleContextHolder.getLocale()
它时,它会返回我在标头中设置的语言环境。
如果我使用lang
URL 参数它不起作用。
如何配置 Spring 也使用 locale 参数?
<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>