Solucionado (ver solução)
Solucionado
(ver solução)
10
respostas

postar mensagem em ingles validacao

como faria para devolver isso em ingles ????

@ExceptionHandler(MethodArgumentNotValidException.class) public ResponseEntity<List> handle(MethodArgumentNotValidException exception) {

    List<ValidacaoDto> validacaoDtos = new ArrayList<>();
    List<FieldError> fieldErrors = exception.getBindingResult().getFieldErrors();

    fieldErrors.forEach(fieldError -> {
        String message = messageSource.getMessage(fieldError, LocaleContextHolder.getLocale());
        ValidacaoDto erro = new ValidacaoDto(fieldError.getField(), message);
        validacaoDtos.add(erro);
    });

    return ResponseEntity.badRequest().body(validacaoDtos);
}
10 respostas

Oi Rodrigo,

Você pode criar uma classe configurando o LocaleContextHolder:

@Configuration
public class LocaleConfiguration {

    @Bean
    public LocalResolver localeResolver() {
        AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver();
        localeResolver.setSupportedLocales(Arrays.asList(new Locale("en"), new Locale("pt")));
        localeResolver.setDefaultLocale(new Locale("pt"));
        return localeResolver;
    }

}

E para retornar em inglês basta adicionar um header na requisição: Accept-Language: en

está dando erro no retorno porque ele espera um LocalResolver eestou devolvendo esse AcceptHeaderLocaleResolver

Ah faltou uma letra e no retorno do método:

public LocaleResolver localeResolver() {

Essa classe LocaleResolver vem do pacote org.springframework.web.servlet.LocaleResolver

deu erro

Description:

The bean 'localeResolver', defined in class path resource [org/springframework/web/servlet/config/annotation/DelegatingWebMvcConfiguration.class], could not be registered. A bean with that name has already been defined in class path resource [br/com/b3/digitalassets/configuration/LocaleConfiguration.class] and overriding is disabled.

Action:

Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true

Process finished with exit code 0

Adiciona no seu application.properties:

spring.main.allow-bean-definition-overriding=true

eu tirei a propriedade do postman para o ingles e coloquei no codigo como setDefault "en"

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Se eu coloco no postman ele devolve em ingles, mas se fosse uma aplicação real ele receberia em ingles?

solução!

Sim, desde que a aplicação frotend/mobile envie o cabeçalho na requisição.

entendi, obrigado!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software