6

我正在尝试通过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" />`

现在我有三个属性文件 - message_en.properties、message_fr.properties、message_sp.properties。并在我的带有 JSTL 标记的 jsp 中使用它。我的问题是如何传递语言环境值以便它可以获取正确的属性文件?一种方法是传入请求 url,但我的应用程序太大,无法在每个 url 中包含此请求参数。有没有其他方法可以设置语言环境值?我有存储在数据库中的语言环境值,我必须从中获取和设置。我怎样才能用最好的方法做到这一点?

能够使用以下更改语言环境 RequestContextUtils.getLocaleResolver(request).setLocale(request, response, Locale.FRANCE);

但这将需要编写一个过滤器来对每个请求执行并在 DB 中触发一个查询以获取该值。有没有更好的方法来做到这一点?

4

1 回答 1

3

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

根据Mkyong的说法:

如果您没有注册任何“localeResolver”,将使用默认的 AcceptHeaderLocaleResolver,它通过检查 HTTP 请求中的接受语言标头来解析语言环境。

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

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

于 2013-07-30T14:02:30.510 回答