Internalização Java - classe ResourceBundle

A classe ResourceBundle é usada para armazenar texto e objetos que são sensíveis ao local. Geralmente usamos arquivos de propriedade para armazenar texto específico do local e, em seguida, representá-los usando o objeto ResourceBundle. A seguir estão as etapas para usar o arquivo de propriedades específicas do código do idioma em um aplicativo baseado em java.

Etapa 1: Criar arquivos de propriedades.

Suponha que precisamos do arquivo de propriedades para o local em inglês. Em seguida, crie um nome de arquivo de propriedades XXX_en_US.properties em que XXX é o nome do arquivo e en_US representa o código do idioma para inglês (EUA).

Messages_en_US.properties

message=Welcome to TutorialsPoint.COM!

Vamos agora criar um arquivo de propriedades para o local francês. Em seguida, crie um nome de arquivo de propriedades XXX_fr_FR.properties em que XXX é o nome do arquivo e fr_FR representa o código do idioma para francês (França).

Messages_fr_FR.properties

message=Bienvenue sur TutorialsPoint.COM!

Aqui você pode descobrir que a chave é a mesma, mas o valor é específico da localidade em ambos os arquivos de propriedades.

Etapa 2: crie o objeto ResourceBundle

Crie o objeto ResourceBundle com o nome do arquivo de propriedades e local usando a seguinte sintaxe.

ResourceBundle bundle = ResourceBundle.getBundle("Messages", Locale.US);

Etapa 3: obtenha o valor do objeto ResourceBundle.

Obtenha o valor do objeto ResourceBundle passando a chave.

String value = bundle.getString("message");

Exemplo

O exemplo a seguir ilustra o uso de objetos ResourceBundle para exibir valores específicos de local a partir de arquivos de propriedades.

IOTester.java

import java.util.Locale;
import java.util.ResourceBundle;

public class I18NTester {
   public static void main(String[] args) {
      ResourceBundle bundle = ResourceBundle.getBundle("Messages", Locale.US);  
      System.out.println("Message in "+Locale.US +": "+bundle.getString("message"));  

      bundle = ResourceBundle.getBundle("Messages", Locale.FRANCE);  
      System.out.println("Message in "+Locale.FRANCE +": "+bundle.getString("message"));
   }
}

Resultado

Irá imprimir o seguinte resultado.

Message in en_US: Welcome to TutorialsPoint.COM!
Message in fr_FR: Bienvenue sur TutorialsPoint.COM!

Notas para convenções de nomenclatura

A seguir estão as convenções de nomenclatura para o arquivo de propriedades.

  • Para o arquivo de propriedades mapeado para o código do idioma padrão, nenhum prefixo é obrigatório. message_en_US.properties é equivalente a message.properties.

  • Para o arquivo de propriedades mapeado para o local, o prefixo pode ser anexado de duas maneiras. message_fr.properties é equivalente a message_fr_FR.properties.

Impressão