私のREST APIでは、ユーザーがlang
パラメータを使用してロケールを設定できるようにしたいと考えています.
http://somehost/resource?param1=value1&lang=fr
lang
パラメータが URL に存在しない場合は、ヘッダーAccept-Language
を使用してロケールとして設定する必要があります。
REST API で Spring の i18n 機能を使用しています。ドキュメントに目を通し、必要な Bean を構成しました。ヘッダーを付けてリクエストを送信すると、Accept-Language
問題なく動作するように見えます。呼び出すLocaleContextHolder.getLocale()
と、ヘッダーに設定したロケールが返されます。
URL パラメータを使用するlang
と機能しません。
ロケールパラメーターも使用するように 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>