为什么 Spring 在给定 `en_US` 时不使用区域设置 `en`?

Why doesn't Spring use locale `en` when given `en_US`?

相关但不相同。我有

@Bean
public LocaleResolver localeResolver() {
    AcceptHeaderLocaleResolver ahlr = new AcceptHeaderLocaleResolver();
    ahlr.setDefaultLocale(Locale.ENGLISH);
    return ahlr;
}

我的浏览器正在发送 Accept-Language: en-US,en;q=0.9。我有 messages_en.properties(但没有 messages.properties)。我得到这个错误

javax.servlet.jsp.JspTagException: No message found under code 'title' for locale 'en_US'.

我知道我可以通过将 messages_en.properties 重命名为 messages.properties 来修复它,但是为什么 Spring Boot 在给定 [=20= 时找不到 en 语言环境]?

我预计当有人使用 fr_FR 而不是只有 fr 语言环境时,这会成为一个问题。我真的必须为每个国家复制语言环境吗?

如果找不到特定国家/地区的区域设置,我如何才能 Spring 更智能地使用该语言?

Spring 引导 1.5.13,Spring 核心 4.3.17

添加一个空 messages.properties 解决了 中给出的这个问题。非常奇怪且不直观的错误消息。如果给出评论作为答案,我会接受。

为Spring开机自动配置一个MessageSourcechecks the existence<basename>.properties。如果存在,则配置 MessageSource,否则不配置任何消息,也不会解析任何消息。

修复添加空 <basename>.propertiessrc/main/resource 以自动配置 MessageSource