给定en_US时,为什么Spring不使用语言环境en?

时间:2018-11-21 17:45:22

标签: spring spring-boot spring-internationalization

相关,但与this answer不同。我有

@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来解决它,但是当给定en时,Spring Boot为什么没有找到en_US的语言环境?

我希望当某人具有fr_FR而不是fr的语言环境时,这是一个问题。我是否必须真的为每个国家/地区复制语言环境?

如果找不到特定的国家/地区语言,如何使Spring更聪明地使用该语言?

Spring Boot 1.5.13,Spring Core 4.3.17

2 个答案:

答案 0 :(得分:1)

要让Spring Boot自动配置MessageSource中的<basename>.propertieschecks the existence。如果存在MessageSource,则不进行任何配置,也不会解析任何消息。

要解决此问题,请在<basename>.properties上添加一个空白的src/main/resource以自动配置MessageSource

答案 1 :(得分:0)

添加一个空的messages.properties可以解决above comment中给出的问题。非常奇怪和不直观的错误消息。如果您以评论为答,我会接受。