我有一个带有 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)
我需要
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
我尝试使用
@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(...)
设置什么基本名称.谢谢你的帮助!
最佳答案
我在模块中有一条消息,在父基名数组中我放置了类路径
<property name="basenames">
<array>
<value>/WEB-INF/resources/xxx.i18n</value>
<value>#{T(com.prueba.test.J2EEDeclarations).MESSAGES_BASENAME}</value>
</array>
</property>
关于Spring 多模块 i18n,带有扩展 messageSource 内容的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17661252/