Я пытаюсь реализовать интернационализацию (английский, французский) в моем приложении Spring Boot.Мне удалось прочитать локаль с URL-адреса, и тексты на странице появились на нужном языке.Например, если я наберу ?lang=fr
, тогда все тексты появятся на французском языке.
Однако мое приложение состоит из нескольких страниц, по которым я перемещаюсь, используя тег <a href=...>
.Как ни странно, когда я нажимаю на ссылку, чтобы перейти на другую страницу, язык иногда остается прежним, но иногда меняется на английский по умолчанию.Что странно, так это то, что это поведение не соответствует;иногда для возврата к английскому языку требуется 3 щелчка, а иногда всего 2 щелчка, и поведение браузера также отличается в зависимости от браузера (я использую Chrome и Firefox).
Насколько я понимаю, языковой стандарт сохраняется в виде файла cookie сеанса, перехватывается компонентом LocaleChangeInterceptor
(который добавляется в InterceptorRegistry
) и разрешается компонентом LocaleResolver
.Если это правда, то я не понимаю, почему языковой стандарт (иногда) будет меняться от страницы к странице.
Может быть проблема в том, что я использую тег <a href=...>
для навигации по страницам?Будет ли лучше использовать кнопку и jQuery?
Любая помощь в этом вопросе приветствуется.
Редактировать
Вот мой класс конфигурации Locale:
@Configuration
public class LocaleConfig implements WebMvcConfigurer{
@Bean
public LocaleResolver localeResolver() {
SessionLocaleResolver slr = new SessionLocaleResolver();
slr.setDefaultLocale(Locale.US);
return slr;
}
@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
lci.setParamName("lang");
return lci;
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(localeChangeInterceptor());
}
}