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.