如何在2个消息包之间切换?

时间:2014-10-27 13:19:48

标签: java spring internationalization

我在处理我的webapp的i18n时遇到了一些问题。 是否可以通过Spring在MessageSource中找到消息,如果在另一个消息中找不到它?

这是我的Spring配置

    <bean id="messageSource"
        class="org.springframework.context.support.ResourceBundleMessageSource">
        <property name="basename" value="xxMessage" />
    </bean>

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

实施例: 如果键是“login.user”并且语言环境是“en”,那么应用程序会显示我的xx_en.properties中的值(如果存在),但我想在其他文件(xx_es.properties)中搜索该键是否存在。 这可能吗?

P:对不起我的英文:D

提前致谢!

2 个答案:

答案 0 :(得分:0)

我认为您需要在弹簧配置中配置拦截器

<interceptors>
    <beans:bean
        class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
        <beans:property name="paramName" value="locale" />
    </beans:bean>
</interceptors>

答案 1 :(得分:0)

谢谢你的回答@DDK我已经设法解决了这个问题:D

以下解决方案。

定义由HierarchicalMessageSource接口提供的链式消息源。

例如,如果您有i18n文件    baseMessages.properties 和    messages.properties

你可以将它们链接为

<bean id="baseMessageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basename" value="baseMessages" />
</bean>
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basename" value="messages" />
    <property name="parentMessageSource" ref="baseMessageSource" />
</bean>