Spring i18n:NoSuchMessageException:在语言环境“en_US”的代码“欢迎”下找不到消息

W.Z*_*hou 5 spring spring-mvc internationalization spring-boot

尝试用spring i18n为我的应用实现国际化,但是在调用messageSource.getMessage()时,抛出noSuchMessageException异常,具体如下:

detailMessage = "No message found under code 'welcome' for locale 'en_US'."
cause = org.springframework.context.NoSuchMessageException: No message found under code 'welcome' for locale 'en_US'.
Run Code Online (Sandbox Code Playgroud)

并且,在 application.yml 中,spring i18n basename 配置为:

spring:
   messages:
      basename: i18n/messages
Run Code Online (Sandbox Code Playgroud)

另外,在目录:src/main/resources中,有三个属性:

resources
  - i18n.messages
     - messages.properties
     - messages_en_US.properties
     - messages_zh_CN.properties
Run Code Online (Sandbox Code Playgroud)

在控制器中,我尝试通过调用 getMessage("key", null, locale) 来获取消息,以下是相关代码:

import org.springframework.context.MessageSource;
@Autowired
private MessageSource messageSource;

Locale locale = LocaleContextHolder.getLocale();
String str1 = messageSource.getMessage("welcome", null, locale);
Run Code Online (Sandbox Code Playgroud)

在属性文件中,我为 key- welcome设置了值。

为了实现国际化,我认为它应该可以很好地与上述配置和代码配合使用,但是我总是得到 noSuchMessageException,我不知道这个问题是怎么回事,有人能帮我吗?

W.Z*_*hou 3

这是由于找不到属性文件,根据属性文件结构,application.yml 应该是这样的: spring.messages.basename: i18n/messages/messages