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.