有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaSpring国际化:如何动态设置语言环境值

我正试图通过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。属性、消息前属性、消息后属性。 并在我的jsp和JSTL标记中使用它。 我的问题是如何传递区域设置值,以便它能够拾取正确的属性文件? 一种方法是传入请求url,但我的应用程序太大,无法在每个url中包含此请求参数。 有没有其他方法可以设置区域设置值?我有存储在DB中的区域设置值,我必须从中获取和设置。 我如何用最好的方法实现这一点

能够使用以下命令更改区域设置 RequestContextUtils.getLocaleResolver(request).setLocale(request, response, Locale.FRANCE);

但这将需要编写一个过滤器来执行每个请求,并在DB中启动一个查询以获取值。 有没有更好的办法


共 (1) 个答案

  1. # 1 楼答案

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

    根据Mkyong

    If you do not register any “localeResolver”, the default AcceptHeaderLocaleResolver will be used, which resolves the locale by checking the accept-language header in the HTTP request.

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

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