如何在Spring中处理多个文件和消息以进行国际化?

前端之家收集整理的这篇文章主要介绍了如何在Spring中处理多个文件和消息以进行国际化?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

一些关于Spring国际化的文章讲述了如何交换传递语言环境等的消息,但我只发现包含一些消息的用例.

>我如何根据上下文组织和使用国际化文件? (验证,查看消息,默认消息,业务消息)
>我知道Spring使用了模式(定义了消息文件名称)
语言环境.例如:message_zh_CN.如何知道每个上下文的文件
关于这种行为?

我认为它应该是:

resources
`-- messages
    |-- validation
    |   |-- message_locale.properties
    |   `-- message_locale2.properties
    |-- business
    |   |-- message_locale.properties
    |   `-- message_locale2.properties
    `-- view
        |-- message_locale.properties
        `-- message_locale2.properties

要么:

resources
`-- messages
    |-- validation
    |   |-- validation_locale.properties
    |   `-- validation_locale2.properties
    |-- business
    |   |-- business_locale.properties
    |   `-- business_locale2.properties
    `-- view
        |-- view_locale.properties
        `-- view_locale2.properties
最佳答案
您可以为所有这些不同的消息文件定义全局MessageSource.使用setBasenames方法这种方法很实用:

@Bean
public MessageSource messageSource() {
    ReloadableResourceBundleMessageSource messageSource = 
                                               new ReloadableResourceBundleMessageSource();
    messageSource.setBasenames("classpath:/messages/business/message","classpath:/messages/validation/message","classpath:/messages/view/message");

    return messageSource;
}

如果您的消息密钥在所有文件中都是唯一的,例如,business-12密钥仅退出与业务相关的消息源.否则,最好为每个上下文定义一个MessageSource并根据您的上下文注入它们:

@Bean
public MessageSource businessMessageSource() {
    ReloadableResourceBundleMessageSource messageSource = 
                                               new ReloadableResourceBundleMessageSource();
    messageSource.setBasename("classpath:/messages/business/message");

    return messageSource;
}

@Bean
public MessageSource validationMessageSource() {
    ReloadableResourceBundleMessageSource messageSource = 
                                               new ReloadableResourceBundleMessageSource();
    messageSource.setBasename("classpath:/messages/validation/message");

    return messageSource;
}

@Bean
public MessageSource viewMessageSource() {
    ReloadableResourceBundleMessageSource messageSource = 
                                               new ReloadableResourceBundleMessageSource();
    messageSource.setBasename("classpath:/messages/view/message");

    return messageSource;
}
原文链接:https://www.f2er.com/spring/432732.html

猜你在找的Spring相关文章