Spring 在多模块项目中启动 i18n
Spring Boot i18n in multi modules project
我有这个多模块项目:
Parent Pom
|
|----Main module (@SpringBootApplcation and application.properties)
|
|----Module I
|
|----Module II
|
|----Module III
主模块依赖于其他模块,包含 resources/messages/
下的 messages.properties
和 messages_fr.properties
以及我定义 MessageResource
bean 的 application.properties
spring.messages.basename=messages/messages
。
现在我想把 messages.properties
文件放在每个模块中。例如,对于模块 I,在 src/main/resources/messages/messages.properties
下对于模块 II 也是如此。
我的问题是,如何在 application.properties
中定义的 MessageResource
bean 中添加模块的消息?
我尝试了几个这样的声明:
spring.messages.basename=messages/messages,classpath:/com/company/moduleI/resources/messages/messages
或 spring.messages.basename=messages/messages,classpath:moduleI/resources/messages/messages
但 none 有效。
有办法实现吗?
我终于找到了一个更好的解决方案,使用 ResourceBundleMessageSource#addBasenames(...)
添加所有模块的消息。
编辑
在每个模块中,我重命名了消息文件,例如对于模块 I,我有 resources/messages/moduleI-messages.properties
、resources/messages/moduleI-messages_en.properties
。
然后我在该模块中定义了一个配置 class 来添加消息源文件。
@Configuration
public class ModuleConfig {
private final ResourceBundleMessageSource messageSource;
@PostConstruct
public void addMessageBaseName() {
messageSource.addBasenames( "messages/module1-messages" );
}
}
我相信还有更好的方法,但我没找到。
我有这个多模块项目:
Parent Pom
|
|----Main module (@SpringBootApplcation and application.properties)
|
|----Module I
|
|----Module II
|
|----Module III
主模块依赖于其他模块,包含 resources/messages/
下的 messages.properties
和 messages_fr.properties
以及我定义 MessageResource
bean 的 application.properties
spring.messages.basename=messages/messages
。
现在我想把 messages.properties
文件放在每个模块中。例如,对于模块 I,在 src/main/resources/messages/messages.properties
下对于模块 II 也是如此。
我的问题是,如何在 application.properties
中定义的 MessageResource
bean 中添加模块的消息?
我尝试了几个这样的声明:
spring.messages.basename=messages/messages,classpath:/com/company/moduleI/resources/messages/messages
或 spring.messages.basename=messages/messages,classpath:moduleI/resources/messages/messages
但 none 有效。
有办法实现吗?
我终于找到了一个更好的解决方案,使用 ResourceBundleMessageSource#addBasenames(...)
添加所有模块的消息。
编辑
在每个模块中,我重命名了消息文件,例如对于模块 I,我有 resources/messages/moduleI-messages.properties
、resources/messages/moduleI-messages_en.properties
。
然后我在该模块中定义了一个配置 class 来添加消息源文件。
@Configuration
public class ModuleConfig {
private final ResourceBundleMessageSource messageSource;
@PostConstruct
public void addMessageBaseName() {
messageSource.addBasenames( "messages/module1-messages" );
}
}
我相信还有更好的方法,但我没找到。