A internacionalização em Java, ou Java i18n, é uma funcionalidade muito importante. O Java oferece suporte à internacionalização (i18n) por meio de pacotes de recursos.
Internacionalização em Java
Para tornar o seu aplicativo compatível com diferentes idiomas, é necessário criar arquivos de propriedades específicos para cada localidade. Os nomes dos arquivos seguem o padrão do nome do pacote com o código do idioma e do país, por exemplo, ApplicationMessages_en_US.properties
. Uma vez que os arquivos de propriedades para as localidades específicas estão prontos, tudo o que você precisa fazer é inicializar o pacote de recursos com a localidade correta. O Java fornece duas classes, java.util.ResourceBundle
e java.util.Locale
, que são usadas para esse propósito. O ResourceBundle lê o arquivo de propriedades específico da localidade e você pode obter o valor específico da localidade para qualquer chave. Isso é muito útil para tornar os textos do seu aplicativo da web específicos para cada localidade. Você pode obter as informações de localidade a partir da solicitação HTTP e gerar a página dinâmica com os arquivos de pacote de recursos dessa localidade. Você também pode oferecer a opção para o usuário escolher a localidade e atualizar as etiquetas dinamicamente.
Exemplo de i18n em Java
Para o exemplo de internacionalização em Java, criei o projeto cuja estrutura é como na imagem abaixo. Aqui está o código Java para a classe JavaInternationalizationExample.
package com.journaldev.i18n;
import java.util.Locale;
import java.util.ResourceBundle;
public class JavaInternationalizationExample {
public static void main(String[] args) {
//localidade padrão
ResourceBundle bundle = ResourceBundle.getBundle("ApplicationMessages");
//Obtenha ResourceBundle com Locale já definidos
ResourceBundle bundleFR = ResourceBundle.getBundle("ApplicationMessages", Locale.FRANCE);
//Obtenha ResourceBundle quando a Locale precisa ser criada
ResourceBundle bundleSWE = ResourceBundle.getBundle("ApplicationMessages", new Locale("sv", "SE"));
//vamos imprimir algumas mensagens
printMessages(bundle);
printMessages(bundleFR);
printMessages(bundleSWE);
}
private static void printMessages(ResourceBundle bundle) {
System.out.println(bundle.getString("CountryName"));
System.out.println(bundle.getString("CurrencyCode"));
}
}
Aqui o nome do pacote é ApplicationMessages
e tenho 2 pacotes de recursos específicos de localidade e um pacote de recursos padrão. ApplicationMessages.properties
CountryName=USA
CurrencyCode=USD
ApplicationMessages_fr_FR.properties
CountryName=France
CurrencyCode=Euro
ApplicationMessages_sv_SE.properties
CountryName=Sweden
CurrencyCode=Kr
Observe o uso da classe Locale, existem algumas localidades já definidas, mas sempre podemos criar uma nova localidade passando o código do idioma e o código do país para o construtor. Quando executo o programa acima, aqui está a saída.
USA
USD
France
Euro
Sweden
Kr
Isso é tudo para um exemplo rápido de internacionalização em Java. A internacionalização em Java é muito útil em aplicativos da web para exibir páginas em idiomas específicos de localidade.
Source:
https://www.digitalocean.com/community/tutorials/java-i18n-internationalization-in-java