如何在两个消息包之间切换



我在处理我的webapp的i18n时遇到了一些问题。如果在另一个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.S:对不起我的英语:D

提前感谢!

我认为您需要在春季配置中进行拦截器配置

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

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

解决方案如下。

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

例如,如果您有i18n文件baseMessages.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>

最新更新