У меня есть собственный public Locale resolveLocale(HttpServletRequest request) {
, который проверяет язык браузера, но также проверяет, аутентифицирован ли пользователь, потому что в этом случае он снова изменит языковой стандарт на основе настроек пользователя.
Теперь Я пытаюсь добавить селектор языка на страницу, не прошедшую проверку подлинности, разрешив страницам содержать параметр lang
, как описано в документации. В настоящее время у меня есть это:
@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
lci.setParamName("lang");
return lci;
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(localeChangeInterceptor());
}
Я заметил, перейдя на страницу с, например, ?lang=en
добавленным, что вызывается setLocale
, и вот где я застрял. Кажется, я не могу понять, как на самом деле установить язык в этом методе? В настоящее время у меня есть это, но это вызывает StackOverflowError
:
@Override
public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {
LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request);
localeResolver.setLocale(request, response, locale);
}
Кто-нибудь может мне помочь? : D