Internacionalização em Java ou Java i18n é uma característica muito importante. Java oferece suporte à internacionalização (i18n) por meio de pacotes de recursos.
Internacionalização em Java
Para tornar sua aplicação compatível com diferentes locais, precisamos criar um arquivo de propriedades específico para cada localidade. Os nomes dos arquivos seguem o padrão do nome do pacote com o código de idioma e código do país, por exemplo, ApplicationMessages_en_US.properties
. Uma vez que os arquivos de propriedades para locais específicos estão prontos, tudo o que você precisa fazer é inicializar o pacote de recursos com a Locale correta. Java fornece duas classes, java.util.ResourceBundle
e java.util.Locale
, que são usadas para esse fim. 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 de sua aplicação web específicos para a localidade. Você pode obter as informações de localidade da solicitação HTTP e gerar a página dinâmica com os arquivos de pacotes de recursos daquela localidade. Também é possível fornecer a opção ao usuário de escolher a localidade e atualizar os rótulos dinamicamente.
Exemplo de i18n em Java
Para o exemplo de i18n 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) {
//locale padrão
ResourceBundle bundle = ResourceBundle.getBundle("ApplicationMessages");
//Obtém o ResourceBundle com o Locale já definido
ResourceBundle bundleFR = ResourceBundle.getBundle("ApplicationMessages", Locale.FRANCE);
//Obtém o resource bundle quando o Locale precisa ser criado
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 do local 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 alguns locais já definidos, mas sempre podemos criar um novo local passando o código do idioma e 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 i18n em Java. A internacionalização em Java é muito útil em aplicativos da web para exibir páginas em um idioma específico do local.
Source:
https://www.digitalocean.com/community/tutorials/java-i18n-internationalization-in-java