【问题标题】:Spring internationalization: How to dynamically set locale valueSpring 国际化:如何动态设置语言环境值
【发布时间】:2013-05-24 12:52:06
【问题描述】:

我正在尝试通过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 中触发一个查询以获取该值。 有更好的方法吗?

【问题讨论】:

  • 谁能帮帮我?

标签: java spring spring-mvc internationalization locale


【解决方案1】:

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

根据Mkyong

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

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

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

【讨论】:

    猜你喜欢
    • 2013-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多