Spring i18n - Запутанные локали по умолчанию - PullRequest
1 голос
/ 20 сентября 2019

Используя очень простой пример Spring Rest HelloWorld с intelliJ, я пытаюсь добавить интернационализацию (по умолчанию Locale.US и просто альтернативный messages_es.properties для получения версии на испанском).

Этомой файл конфигурации Java:

@Bean
public LocaleResolver localeResolver(){
    SessionLocaleResolver localeResolver = new SessionLocaleResolver();
    localeResolver.setDefaultLocale(Locale.US);
    return localeResolver;
}

@Bean
public ResourceBundleMessageSource messageSource(){
    ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
    messageSource.setBasename("messages");
    messageSource.setDefaultEncoding("UTF-8");
    return messageSource;
}

Затем у меня есть два ресурса, каждая из которых содержит только запись:

messages.properties (по умолчанию):

good.morning.message=Good morning

messages_es.properties(по умолчанию):

good.morning.message=Buenos días

Тестирование с помощью Postman с параметром заголовка «Accept-Language», независимо от того, какое значение я на нем установил, всегда возвращается версия со словами на испанском («Buenos días»)).Английская версия по умолчанию никогда не возвращается, даже задавая, среди прочего, «en», «en_GB» или «en_US».Всегда "Buenos días".

Однако, если я просто изменю испанский на французский или другие языки, т. Е. Переименую messages_es.properties в messages_fr.properties, он будет работать правильно.Он возвращает «Доброе утро» всегда, кроме случаев, когда я отправляю «fr» в параметре заголовка, в этом случае он возвращает «Добрый день» или любой другой текст, который я установил во французской версии.

Есть идеи?

1 Ответ

0 голосов
/ 20 сентября 2019

Я уже решил это.Это была конфигурация языка системы.Мой Mac настроен на испанском языке.Spring по умолчанию выбрал ES Locale.

Когда я перешел на английский и перезапустил приложение, он по-прежнему использовал английский в качестве языка по умолчанию.

Интересно, можно ли что-нибудь сделать?чтобы пропустить конфигурацию системы, просто конфигурация Spring скажет, какой язык является актуальным.

...