Java i18n – Internacionalização em Java

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