【发布时间】:2018-03-15 23:51:56
【问题描述】:
在我的 Spring 项目中,我有一个需要本地化的资源。该项目由一个base 包和多个可以相互构建的附加包组成。最后我有一个主项目,它简单地声明了所有必要的依赖项(base 模块是强制性的)。
需要翻译的资源是日志事件ID。每个模块独立地定义自己的日志事件。这意味着每个模块最终都会有journal_messages 属性用于翻译。
main
|_ dependencies
|
|-moduleA
| |_`journal_messages_de.properties`
| |_`journal_messages_en.properties`
|
|-moduleB
|_`journal_messages_de.properties`
|_`journal_messages_en.properties`
在主项目中,我最终需要访问所有这些文件。
当我与Spring 合作时,我尝试了以下方法:
我的base 模块创建了ResourceBundleMessageSource bean:
@Bean
public ResourceBundleMessageSource journalMessageSource() {
ResourceBundleMessageSource source = new ResourceBundleMessageSource();
source.setBasename("classpath:com/project/base/i18/journal/journal_messages");
source.setUseCodeAsDefaultMessage(true);
return source;
}
并且在main\resources\com\project\base\i18\journal中也有自己的文件
在我的其他模块中,我创建了一个配置文件来添加该模块的特定基本名称。
@Autowired
public void addResources(ResourceBundleMessageSource journalMessageSource) {
journalMessageSource.addBasenames("classpath:com/project/moduleA/i18/journal/journal_messages");
}
在main\resources\com\project\moduleA\i18\journal拥有自己的文件
这样,我预计每个模块都会将其自己的本地化文件加载到共享的ResourceBundleMessageSource bean。没想到这会导致
ResourceBundle [com/project/moduleA/i18/journal/journal_messages] not found for MessageSource
如何访问/使用拆分为多个依赖项的本地化文件?
【问题讨论】:
标签: java spring localization dependencies