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

时间:2013-05-29 09:59:47

标签: java spring spring-mvc internationalization locale

我正试图通过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中包含此请求参数。 有没有其他方法可以设置区域设置值?我有一个存储在DB中的语言环境值,我必须从中获取和设置。 如何用最好的方法实现这一目标?

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

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

1 个答案:

答案 0 :(得分:2)

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

根据Mkyong

  

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

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

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