spring i18n:多个属性文件的问题

Arj*_*jun 21 spring internationalization

我的messages.properties实际上是一个很大的文件.因此,我尝试将messages.properties中的一些属性移动到一个新文件,比如newmessages.properties和更新的spring bean配置xml,其中包含以下两个文件:

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

<bean id="anotherMessageSource"
      class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basename" value="classpath:i18n/newmessages"/>
    <property name="defaultEncoding" value="UTF-8"/>
</bean>
Run Code Online (Sandbox Code Playgroud)

但是,我无法访问新属性文件中定义的任何属性.是否真的可以指定多个属性文件(对于单个语言环境)?

Ral*_*lph 43

基本名称(s在结尾)属性接受一个基本名称数组:

设置一个基本名称数组,每个基本名称遵循上述特殊约定.在解析消息代码时,将依次检查关联的资源包.

@see java doc:ReloadableResourceBundleMessageSource.setBasenames

所以你应该只有一个消息源,带有一个列表文件(尝试用逗号分隔它们).

<bean id="anotherMessageSource"
      class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basenames" value="classpath:i18n/newmessages,classpath:i18n/messages"/>
    <property name="defaultEncoding" value="UTF-8"/>
</bean>
Run Code Online (Sandbox Code Playgroud)


spg*_*ara 20

另一种干净的方式:

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basenames">
            <list>
                <value>classpath:messages1</value>
                <value>classpath:messages2</value>
            </list>
        </property>
        <property name="defaultEncoding" value="UTF-8"/>
</bean>
Run Code Online (Sandbox Code Playgroud)