作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
一些关于 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
key 仅存在于与业务相关的消息源中。否则,最好为每个上下文定义一个 MessageSource
并根据您的上下文注入(inject)它们:
@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;
}
关于java - 如何在 Spring 中处理多个文件和消息以实现国际化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40165151/
我是一名优秀的程序员,十分优秀!