gpt4 book ai didi

java - 如何在 Spring 中处理多个文件和消息以实现国际化?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:33:11 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com