加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 01:49:08 所属栏目:大数据 来源:网络整理
导读:一些关于Spring国际化的文章讲述了如何交换传递语言环境等的消息,但我只发现包含一些消息的用例. 我如何根据上下文组织和使用国际化文件? (验证,查看消息,默认消息,业务消息) 我知道Spring使用了模式(定义了消息文件的名称) 语言环境.例如:message_zh_CN.

一些关于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;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读