Почему Spring не использует локаль `en`, если ей дали` en_US`? - PullRequest
0 голосов
/ 21 ноября 2018

Связано, но не совпадает с этим ответом .У меня есть

@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 не находит локаль en при получении en_US?

Я ожидаю, что это будет проблемой, когда у кого-то будет fr_FR языковой стандарт вместо fr.Должен ли я действительно продублировать локали для каждой отдельной страны?

Как сделать Spring умнее в использовании языка, если локаль для конкретной страны не найдена?

Spring Boot 1.5.13, Spring Core4.3.17

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

Для Spring Boot для автоматической настройки MessageSource он проверяет наличие из <basename>.properties.Если это существует, MessageSource настроен, иначе ничего не настроено, и никакие сообщения не будут решены.

Чтобы исправить, добавьте пустой <basename>.properties к src/main/resource, чтобы автоматически настроить MessageSource.

0 голосов
/ 21 ноября 2018

Добавление пустого messages.properties исправило эту проблему, как указано в выше комментария .Очень странное и неинтуитивное сообщение об ошибке.Если комментарий будет дан как ответ, я приму это.

...