Spring MVC i18n/L10n: Internacionalize e Localize seu App em Minutos!

Introdução

No cenário globalizado atual, a internacionalização (i18n) e a localização (L10n) são componentes cruciais para o desenvolvimento de aplicações web. Essas práticas permitem que o conteúdo de um aplicativo seja dinamicamente ajustado para atender às necessidades de usuários em diferentes regiões, culturas e idiomas, promovendo uma experiência personalizada e inclusiva.

O framework Spring MVC oferece ferramentas e mecanismos robustos para implementar i18n e L10n. Este artigo visa apresentar um guia prático sobre como aplicar essas técnicas em um projeto Spring MVC.

Internacionalização (i18n): Preparando sua Aplicação para Múltiplos Idiomas

A internacionalização envolve a estruturação do seu aplicativo para que ele possa suportar múltiplos idiomas. Isso significa que textos, rótulos e outras mensagens são fornecidas em diversas línguas, permitindo que os usuários visualizem o conteúdo em seu idioma preferido.

Utilizando o MessageSource

No Spring MVC, o MessageSource é o componente responsável por obter as mensagens traduzidas com base em um código de identificação e no locale do usuário. Para configurar o MessageSource, é necessário criar um arquivo de propriedades para cada idioma que se pretende suportar. A estrutura desses arquivos é a seguinte:


message.<codigo_da_mensagem> = <texto_da_mensagem>

Como exemplo, vamos criar arquivos de propriedades para inglês (en) e português (pt):

messages_en.properties

message.saudacao = Hello, world!

messages_pt.properties

message.saudacao = Olá, mundo!

O próximo passo é configurar o MessageSource na classe de configuração da aplicação:

java
@Configuration
public class ConfiguracaoApp {

@Bean
public MessageSource fonteMensagens() {
ResourceBundleMessageSource fonteMensagens = new ResourceBundleMessageSource();
fonteMensagens.setBasename("mensagens");
return fonteMensagens;
}
}

Exibindo Mensagens Traduzidas

Para apresentar as mensagens traduzidas em uma página JSP, utiliza-se a tag <spring:message>:

jsp
<spring:message code="saudacao" />

Internacionalização via Anotações

Também é possível usar anotações para obter mensagens traduzidas diretamente nas classes de controle (Controllers):

java
@Controller
public class MeuController {

@Autowired
private MessageSource fonteMensagens;

@RequestMapping("/")
public String index(Locale locale) {
String mensagem = fonteMensagens.getMessage("saudacao", null, locale);
return "index";
}
}

Localização (L10n): Adaptando a Aplicação a Culturas e Regiões Específicas

A localização estende a internacionalização, adaptando a aplicação para atender às preferências de regiões e culturas específicas. Isso inclui a formatação de datas, moedas e unidades de medida, de acordo com os padrões locais.

Usando o LocaleResolver

O LocaleResolver é responsável por determinar o locale da solicitação atual. O Spring MVC oferece diversas implementações de LocaleResolver, como o SessionLocaleResolver e CookieLocaleResolver.

Para configurar um LocaleResolver, um bean deve ser registrado na classe de configuração:

java
@Configuration
public class ConfiguracaoApp {

@Bean
public LocaleResolver resolvedorLocale() {
return new SessionLocaleResolver();
}
}

Formatando Data e Moeda

O Spring MVC oferece formatadores que permitem a exibição de datas e moedas de acordo com o locale do usuário. Por exemplo, para formatar uma data usando o formatador padrão:

java
SimpleDateFormat formatadorData = new SimpleDateFormat();
formatadorData.setTimeZone(TimeZone.getTimeZone(locale.getCountry()));

Conclusão

A internacionalização e a localização são etapas fundamentais para criar aplicações web de alcance global. O Spring MVC facilita essas tarefas com ferramentas e mecanismos que permitem que os desenvolvedores adaptem seus aplicativos a diferentes idiomas, regiões e culturas. Ao implementar i18n e L10n, as aplicações se tornam mais acessíveis e relevantes para uma audiência global.

Perguntas Frequentes

1. Qual a distinção entre internacionalização e localização?

A internacionalização prepara a aplicação para ser adaptada a diversos idiomas, enquanto a localização adapta o conteúdo para regiões e culturas específicas.

2. Como obter mensagens traduzidas no Spring MVC?

Utilize a tag <spring:message> em páginas JSP ou anotações em classes de controle.

3. Como definir o locale atual?

Use um LocaleResolver para determinar o locale com base em sessões ou cookies.

4. Como formatar valores de data e moeda de acordo com o locale?

Use os formatadores de data e moeda oferecidos pelo Spring MVC.

5. Quais os benefícios da internacionalização e localização?

Tornam as aplicações mais acessíveis e interessantes para usuários de todo o mundo, melhorando a experiência do usuário e expandindo o potencial de mercado.

6. Como implementar i18n e L10n em um aplicativo Spring MVC já existente?

Siga as etapas exemplificadas neste artigo.

7. Quais as melhores práticas para internacionalização e localização?

Utilize códigos de mensagem claros, mantenha as mensagens concisas e teste a fundo em todos os idiomas e regiões de destino.

8. Há outras bibliotecas ou frameworks para i18n e L10n no Spring?

Sim, existem bibliotecas como o Spring Boot Internationalization e o i18n4Spring que podem oferecer funcionalidades adicionais.