Spring多模块i18n,带有扩展messageSource内容的模块

Ben*_*n M 7 spring spring-mvc internationalization multi-module spring-3

我有一个带Maven的多模块Spring项目.我正在使用Spring 3.2.3和注释配置.

我有以下布局:

parent
    common  (depends on parent)
    webapp  (depends on parent, common, module1, module2)
    module1 (depends on parent)
    module2 (depends on parent)
Run Code Online (Sandbox Code Playgroud)

我需要它common,module1并且module2可以指定自己的i18n属性(并webapp收集这些文件并以某种方式提供它们?!):

common:  src/main/resources/i18n/messages_en.properties
module1: src/main/resources/i18n/messages_en.properties
module2: src/main/resources/i18n/messages_en.properties
Run Code Online (Sandbox Code Playgroud)

我试过用

@Bean
public MessageSource messageSource() {
    ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
    messageSource.setBasename("classpath:/i18n/messages");
    messageSource.setDefaultEncoding("UTF-8");
    messageSource.setUseCodeAsDefaultMessage(true);
    return messageSource;
}
Run Code Online (Sandbox Code Playgroud)

但是看起来Spring只会使用其中一个翻译文件,而是应该使用all.

另一种可能性是为每个模块指定一个唯一的属性文件名,但后来我不知道要设置的基本名称messageSource.setBasename(...).

谢谢你的帮助!

小智 0

我在模块中有一条消息,在父基名数组中我放置了类路径

      <property name="basenames">

      <array>

        <value>/WEB-INF/resources/xxx.i18n</value>

          <value>#{T(com.prueba.test.J2EEDeclarations).MESSAGES_BASENAME}</value>

      </array>
  </property>
Run Code Online (Sandbox Code Playgroud)