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?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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!