我正试图通过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中触发查询以获取值。 有没有更好的建议呢?
答案 0 :(得分:2)
我猜你现在可能已经找到了一个解决方案,但是对于那些偶然发现这个问题的人来说,也许你需要摆脱LocaleResolver?
根据Mkyong:
如果您没有注册任何“localeResolver”,将使用默认的AcceptHeaderLocaleResolver,它通过检查HTTP请求中的accept-language标头来解析语言环境。
允许用户的浏览器自动说出它更喜欢哪种语言很有意义,并且通过更改首选语言(以及可能还有其他浏览器)可以轻松在Chrome中进行测试。
(Mkyong的教程非常方便,值得一试)