почему моя интернационализация не работает (SpringBoot Application)

Рейтинг: 1Ответов: 0Опубликовано: 13.01.2023

Вот как я добавлял интернационализацию в моем приложении Spring.

Для начала я добавил в класс

@Configuration
public class SpringSecurityConfig {
    // ...
}

метод (здесь я по дефолту ставлю русский язык):

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

Дальше в класс который реализует интерфейс WebMvcConfigurer я добавил два следующих метода:

@Component
public class WebMvcConfigurerImpl implements WebMvcConfigurer {

    // ...

    // Конфигурация компонента, поддерживающего изменение настроек языка
    public LocaleChangeInterceptor localeChangeInterceptor() {
        LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
        lci.setParamName("lang");
        return lci;
    }


    // Регистрация компонента, поддерживающего изменение языка
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(localeChangeInterceptor());
    }

}

После добавления кода, который указан выше я создал два файла labels.properties и labels_en.properties в папочке resources.
В этих файлах я в буду формате key=value записыть текст, который будет показыватся на страницах (я использую Thymeleaf).

Дальше нужно зарегистрировать эти файлы в приложении, для этого в файле application.properties я добавил название labels к spring.messages.basename, вот как это выглядит:

spring.messages.basename=errors-messages,labels

Теперь когда страница в запросе получает ...?lang=en (параметр lang со значением en) то значение этикет на странице должно было бы сменится, но этого не происходит.

Что я сделал не так?

Ответы

Ответов пока нет.