🚀 5.6 Globalização: O Sistema Green Dog no Mundo

Na Engenharia Premium, não escrevemos textos fixos (hardcoded) no código ou nos templates. Utilizamos a Internacionalização (i18n) para garantir que o sistema possa ser traduzido para qualquer idioma sem alterar uma única linha de Java ou HTML.

📁 Gestão de Mensagens

O Spring Boot procura por arquivos de propriedades no diretório src/main/resources.

  1. messages.properties (Idioma Padrão - ex: Inglês):
    welcome.message=Welcome to Green Dog Delivery!
    client.list.title=Client List
2.  **`messages_pt_BR.properties`** (Português Brasil):
```text
    welcome.message=Bem-vindo ao Green Dog Delivery!
    client.list.title=Lista de Clientes

🧩 Uso no Thymeleaf

Utilizamos o seletor #{...} em nossos atributos para buscar a tradução correta com base no local do usuário.

<h1 th:text="#{client.list.title}">Título da Lista</h1>
<p th:text="#{welcome.message}">Mensagem de Boas-vindas</p>

⚙️ Mudança Dinâmica de Idioma

A Engenharia de Elite permite que o usuário mude o idioma via URL (ex: ?lang=en). Para isso, configuramos um interceptador:

@Configuration
public class WebConfig implements WebMvcConfigurer {
 
    @Bean
    public LocaleResolver localeResolver() {
        SessionLocaleResolver slr = new SessionLocaleResolver();
        slr.setDefaultLocale(new Locale("pt", "BR"));
        return slr;
    }
 
    @Bean
    public LocaleChangeInterceptor localeChangeInterceptor() {
        LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
        lci.setParamName("lang");
        return lci;
    }
 
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(localeChangeInterceptor());
    }
}

TIP

SEO e Acessibilidade: Ter um sistema internacionalizado não só abre portas para novos mercados (EUA, Europa), como também melhora a acessibilidade e a indexação em motores de busca globais.

Agora que seu sistema fala múltiplas línguas e performa como um campeão, concluímos o módulo de desenvolvimento front-end!


⬅️ Capítulo Anterior | Próximo Capítulo ➡️