Boa tarde, Teria como deixar como padrão as respostas pt-br e quando o cliente quiser em inglês ele envie o Header Accept-Language en-US?
Boa tarde, Teria como deixar como padrão as respostas pt-br e quando o cliente quiser em inglês ele envie o Header Accept-Language en-US?
Oi Thiago, boa tarde!
Sim, é possível configurar o Spring Boot para que as respostas sejam, por padrão, em português (pt-BR) e, quando o cliente quiser em inglês, ele possa enviar o cabeçalho Accept-Language
com o valor en-US
. Para isso, você pode configurar um LocaleResolver
e um LocaleChangeInterceptor
no seu projeto Spring Boot. Vou te mostrar um exemplo prático de como fazer isso:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
import java.util.Locale;
@Configuration
public class LocaleConfig implements WebMvcConfigurer {
@Bean
public LocaleResolver localeResolver() {
AcceptHeaderLocaleResolver resolver = new AcceptHeaderLocaleResolver();
resolver.setDefaultLocale(new Locale("pt", "BR"));
return resolver;
}
@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
LocaleChangeInterceptor interceptor = new LocaleChangeInterceptor();
interceptor.setParamName("Accept-Language");
return interceptor;
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(localeChangeInterceptor());
}
}
Crie os arquivos messages.properties
(para inglês) e messages_pt_BR.properties
(para português) dentro da pasta src/main/resources
. Esses arquivos conterão as mensagens que serão exibidas de acordo com o idioma configurado.
Com essa configuração, o Spring Boot irá responder em português por padrão. Se o cliente enviar o cabeçalho Accept-Language
com o valor en-US
, a resposta será em inglês.
Espero ter ajudado e bons estudos!