多模块项目中的Spring Boot i18n

标签 spring spring-boot internationalization application.properties

我有这个多模块项目:

Parent Pom
|
|----Main module (@SpringBootApplcation and application.properties)
|
|----Module I
|
|----Module II
|
|----Module III

主模块依赖于其他模块,包含 messages.propertiesmessages_fr.propertiesresources/messages/还有 application.properties我定义的地方 MessageResource bean spring.messages.basename=messages/messages .
现在我想把messages.properties每个模块中的文件。例如,对于模块 I,在 src/main/resources/messages/messages.properties 下模块 II 也是如此。
我的问题是,如何在 MessageResource 中添加模块的消息在 application.properties 中定义的 bean ?
我尝试了几个这样的声明:
spring.messages.basename=messages/messages,classpath:/com/company/moduleI/resources/messages/messagesspring.messages.basename=messages/messages,classpath:moduleI/resources/messages/messages但没有一个工作。
有没有办法实现这一目标?

最佳答案

我终于找到了一个更好的解决方案,使用 ResourceBundleMessageSource#addBasenames(...)添加所有模块的消息。
编辑
在每个模块中,我重命名了消息文件,例如对于模块 I,我有 resources/messages/moduleI-messages.properties , resources/messages/moduleI-messages_en.properties .
然后我在该模块中定义了一个配置类来添加消息源文件。

@Configuration
public class ModuleConfig {
    private final ResourceBundleMessageSource messageSource;

    @PostConstruct
    public void addMessageBaseName() {
        messageSource.addBasenames( "messages/module1-messages" );
    }
}

我相信可能有更好的方法,但我没有找到。

关于多模块项目中的Spring Boot i18n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53932444/

相关文章:

struts2 - 在阿拉伯语的 struts2 国际化中,如何自动将文本框中的光标更改为 rtl?

validation - 规范化/验证数据库中的国际数据集?

java - 当 ajax 调用提出请求时,重定向页面在过滤器中不起作用?

java - Spring 启动: InvalidTypeIdException When Trying to Parse Json

java - 使用 Spring Security 进行授权和身份验证

java - Spring 数据JPA : How to access a table in another schema with a read only username/schema

java - 未找到单独文件夹库中的 IntelliJ 集成测试 : Springboot with Gradle project configuration problem

java - Java同时显示繁体中文和简体中文

spring - Grails-Spring安全性漏洞:使用[dot]绕过URL

java - 使用 Artemis、JBoss EAP 7.1 和最后值队列