0

我有一个现有的 Spring/GWT 应用程序,我需要添加国际化。我的理解是,我可以使用 Spring 的“ResourceBundleMessageSource”根据用户位置自动选择适当的 messages_* 文件。我尝试按照本教程进行操作,但似乎无法让应用程序以法语显示我的字符串。就目前而言,我已将 2 个文件 messages_en_US.properties 和 messages_fr_FR.properties 添加到我的 src/main/resources/i18n 文件夹中,并将以下内容添加到 applicationContext.XML 中:

<bean id="messageSource"
    class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basename">
        <value>classpath:i18n/messages</value>
    </property>
</bean>

<bean id="localeChangeInterceptor"
    class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
    <property name="paramName" value="lang" />
</bean>

<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" >
    <property name="interceptors">
       <list>
        <ref bean="localeChangeInterceptor" />
        </list>
    </property>
</bean>

只是想知道 1)我是否需要额外的配置/粘合代码和 2)我是否可以轻松地测试它而无需在我的 Redhat 服务器上将语言/区域设置为法语?

4

2 回答 2

0

您的浏览器可能只在 Accept-Header 中发送“fr”语言标签。Spring 因回退问题而臭名昭著,因此您可能需要将 messages_fr_FR.properties 复制为 messages_fr.properties。

我确信必须有一些方法来配置回退,所以你想必须使用 messages_en.properties (尝试你的应用程序与其他英语语言环境......),只是 messages.properties 应该做,但我太懒了/此刻疲于寻找解决方案。

于 2013-10-31T20:08:24.930 回答
0

这里你需要在 spring.xml 中指定下面的 bean。

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basename" value="classpath:messages" />
        <property name="defaultEncoding" value="UTF-8" />
    </bean>


    <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
        <property name="defaultLocale" value="en"/>
    </bean>

    <mvc:interceptors>
     <bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
        <property name="paramName" value="lang" />
    </bean>

    </mvc:interceptors>

当您在查询字符串中传递lang=es时,这非常有效。如果仍然存在任何问题。您可以在此处查看工作示例。

于 2014-02-05T07:26:22.453 回答