Я использую i18n в весенней загрузке и в конфигурации сообщений, где он устанавливает язык, который мне нужен, чтобы передать параметр «en» или «es».
@Configuration
public class MessagesConfig implements WebMvcConfigurer{
@Bean
public LocaleResolver localeResolver() {
SessionLocaleResolver localeResolver = new SessionLocaleResolver();
localeResolver.setDefaultLocale(Locale.getDefault());
return localeResolver;
}
@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
LocaleChangeInterceptor localeInterceptor = new LocaleChangeInterceptor();
localeInterceptor.setIgnoreInvalidLocale(true);
localeInterceptor.setParamName("properties");
return localeInterceptor;
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(localeChangeInterceptor());
}
}
В setParamName я бы взял параметр языка, чтобы изменять его каждый раз, когда он достигает сообщения, но я не отправляю язык напрямую, я отправляю ему json свойства этого стиля:
{
"language": "en",
"type": "wed"
}
Цель состоит в том, чтобы каждый раз параметр properties передается, принимает только язык
@PostMapping("/v1/saludo")
@PreAuthorize("hasAnyRole('ADMIN','USER')")
public String getSaludo(@RequestParam(name = "properties", required = false, defaultValue = "") String configProperties) {
return mensajes.getMessage("saludo.pais", null, LocaleContextHolder.getLocale());
}