Spring Boot 2 Интернационализация через страницы - PullRequest
0 голосов
/ 18 марта 2019

Я пытаюсь реализовать интернационализацию (английский, французский) в моем приложении 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());
}
}
...