5

Ho un progetto Spring multi modulo con Maven. Sto usando Spring 3.2.3 con annotation config.Modulo multipolare a molla i18n, con moduli che estendono il messaggioSource contents

ho il seguente schema:

parent 
    common (depends on parent) 
    webapp (depends on parent, common, module1, module2) 
    module1 (depends on parent) 
    module2 (depends on parent) 

ho bisogno che common, module1 e module2 possibile specificare le proprie proprietà i18n (e la webapp raccoglie i file e li fornisce in qualche modo?!):

common: src/main/resources/i18n/messages_en.properties 
module1: src/main/resources/i18n/messages_en.properties 
module2: src/main/resources/i18n/messages_en.properties 

ho provato ad utilizzare

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

Ma sembra che Spring userà solo uno di quei file di traduzione, ma invece dovrebbe usare tutto.

Un'altra possibilità sarebbe quella di specificare una proprietà uniche nome del file per ogni modulo, ma poi non so cosa basename per impostare via messageSource.setBasename(...).

Grazie per il vostro aiuto!

+0

Ho lo stesso problema. = ( –

risposta

0

Ho un messaggio in un modulo e nella matrice genitore basename ho messo il classpath

 <property name="basenames"> 

     <array> 

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

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

     </array> 
    </property> 
+0

Ok, hai questo messaggio, ma che cosa fare con esso? Spiega la tua risposta (dovrebbero aggiungerlo al loro file di configurazione mvn? Usa qualcosa di simile? ...?) – NatNgs

0

mi accingo a spiegare meglio di me.

Normalmente abbiamo un file con l'url dei file del nuovo modulo. Ad esempio com.prueba.test.J2EEDeclarations

J2EEDeclarations public final class { public static final String MESSAGES_BASENAME = "/WEB-INF/resources/pruebaUtils.i18n";

Con questo modulo creiamo un barattolo nel nostro repository Maven

E nel genitore importiamo questo barattolo.

Dopo che abbiamo solo cambiare il nome di base per utilizzare le proprietà o il nuovo modulo

<array> 

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

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

    </array>