Internalizzazione Java - Classe ResourceBundle

La classe ResourceBundle viene utilizzata per archiviare testo e oggetti sensibili alle impostazioni locali. Generalmente utilizziamo file di proprietà per memorizzare testo specifico della locale e quindi rappresentarli utilizzando l'oggetto ResourceBundle. Di seguito sono riportati i passaggi per utilizzare il file delle proprietà specifico della locale in un'applicazione basata su Java.

Passaggio 1: crea i file delle proprietà.

Supponiamo di aver bisogno del file delle proprietà per la locale inglese. Quindi creare un nome file delle proprietà XXX_en_US.properties dove XXX è il nome del file ed en_US rappresenta la locale per l'inglese (USA).

Messages_en_US.properties

message=Welcome to TutorialsPoint.COM!

Creiamo ora il file delle proprietà per la locale francese. Quindi creare un nome file delle proprietà XXX_fr_FR.properties dove XXX è il nome del file e fr_FR rappresenta la locale per il francese (Francia).

Messages_fr_FR.properties

message=Bienvenue sur TutorialsPoint.COM!

Qui puoi capire che la chiave è la stessa ma il valore è specifico della locale in entrambi i file delle proprietà.

Passaggio 2: creare l'oggetto ResourceBundle

Crea un oggetto ResourceBundle con il nome del file delle proprietà e le impostazioni internazionali utilizzando la seguente sintassi.

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

Passaggio 3: ottenere il valore dall'oggetto ResourceBundle.

Ottieni il valore dall'oggetto ResourceBundle passando la chiave.

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

Esempio

L'esempio seguente illustra l'uso degli oggetti ResourceBundle per visualizzare valori specifici della locale dai file delle proprietà.

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"));
   }
}

Produzione

Stamperà il seguente risultato.

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

Note per le convenzioni di denominazione

Di seguito sono riportate le convenzioni di denominazione per il file delle proprietà.

  • Per i file delle proprietà mappati alla locale predefinita, nessun prefisso è obbligatorio. message_en_US.properties è equivalente a message.properties.

  • Per i file delle proprietà mappati alla locale, il prefisso può essere allegato in due modi. message_fr.properties è equivalente a message_fr_FR.properties.

Stampa