Spring国际化:如何动态设置区域设置值

SCo*_*der 6 java spring locale spring-mvc internationalization

我试图通过spring实现国际化.以下是我所做的配置

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

<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />`
Run Code Online (Sandbox Code Playgroud)

现在我有三个属性文件 - message_en.properties,message_fr.properties,message_sp.properties.并使用JSTL标记在我的jsp中使用它.我的问题是如何传递区域设置值以便它可以选择正确的属性文件?一种方法是传入请求URL,但我的应用程序太大,无法在每个URL中包含此请求参数.有没有其他方法可以设置区域设置值?我有一个存储在DB中的语言环境值,我必须从中获取和设置.如何用最好的方法实现这一目标?

能够使用下面的方式更改区域设置 RequestContextUtils.getLocaleResolver(request).setLocale(request, response, Locale.FRANCE);

但是这需要编写一个过滤器来执行每个请求并在DB中触发查询以获取值.有没有更好的建议呢?

Rei*_*ica 4

我猜你现在可能已经找到了解决方案,但是对于未来偶然发现这个问题的人来说,也许你需要摆脱 LocaleResolver ?

\n\n

根据Mkyong 的说法:

\n\n
\n

如果您没有注册任何 \xe2\x80\x9clocaleResolver\xe2\x80\x9d,则将使用默认的 AcceptHeaderLocaleResolver,它通过检查 HTTP 请求中的接受语言标头来解析区域设置。

\n
\n\n

允许用户的浏览器自动说出它喜欢哪种语言很有意义,并且通过更改您的首选语言(可能还有其他浏览器)可以轻松地在 Chrome 中进行测试。

\n\n

(顺便说一句,Mkyong 的教程非常方便,值得一试)

\n