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

时间:2013-07-15 18:28:24

标签: spring spring-mvc internationalization spring-3 multi-module

我有一个带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)

我需要commonmodule1module2可以指定自己的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

我尝试使用

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

但看起来Spring只会使用一个的翻译文件,而是应该全部使用。

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

感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

我在模块中有一条消息,在父basename数组中我放了classpath

      <property name="basenames">

      <array>

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

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

      </array>
  </property>

答案 1 :(得分:0)

我会更好地解释我。

通常我们有一个文件,其中包含新模块文件的URL。例如com.prueba.test.J2EEDeclarations

public final class J2EEDeclarations {     public static final String MESSAGES_BASENAME =“/ WWE-INF / resources /pruebaUtils.i18n”;

通过这个模块,我们在maven资源库中创建了一个jar

在父母中我们导入了这个jar。

之后我们只需要更改basename以使用属性或新模块

  <array>

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

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

  </array>

答案 2 :(得分:0)

只需通过扩展ReloadableResourceBundleMessageSource创建使用PathMatchingResourcePatternResolver的自定义类 根据 https://stackoverflow.com/a/27532814/4258376

的答案

然后,您将能够使用具有classpath *的基本名称为MesssageSource分配该自定义的类:

╔═══════════╦═══════════╦═══════╦══════════════════════╗
║ USER_ID   ║ USERNAME  ║ TYPE  ║  LAST_LOGIN_DATE     ║
╠═══════════╬═══════════╬═══════╬══════════════════════╣
║ 1         ║ XX        ║ -     ║ -                    ║LOG_ID(-)
║ 2         ║ YY        ║ -     ║ -                    ║LOG_ID(-)
║ 3         ║ ZZ        ║ -     ║ -                    ║LOG_ID(-)
╚═══════════╩═══════════╩═══════╩══════════════════════╝