L’internazionalizzazione in Java o Java i18n è una funzionalità molto importante. Java fornisce il supporto all’internazionalizzazione (i18n) attraverso i pacchetti di risorse.
Internazionalizzazione in Java
Per rendere la tua applicazione supportata in diverse lingue, è necessario creare un file di proprietà specifico per la lingua. I nomi dei file seguono il modello del nome del pacchetto con il codice della lingua e il codice del paese, ad esempio ApplicationMessages_en_US.properties
. Una volta che i file di proprietà per le lingue specifiche sono pronti, tutto ciò che devi fare è inizializzare il pacchetto di risorse con la corretta lingua. Java fornisce due classi, java.util.ResourceBundle
e java.util.Locale
, che vengono utilizzate per questo scopo. ResourceBundle legge il file di proprietà specifico per la lingua e puoi ottenere il valore specifico per la lingua di qualsiasi chiave. Questo è molto utile per rendere i testi dell’applicazione web specifici per la lingua, puoi ottenere le informazioni sulla lingua dalla richiesta HTTP e generare la pagina dinamica con quei file di pacchetti di risorse specifici per la lingua. Puoi anche fornire all’utente l’opzione di scegliere la lingua e aggiornare le etichette dinamicamente.
Esempio di i18n in Java
Per l’esempio di java i18n, ho creato il progetto la cui struttura è come nell’immagine seguente. Ecco il codice Java per la classe JavaInternationalizationExample.
package com.journaldev.i18n;
import java.util.Locale;
import java.util.ResourceBundle;
public class JavaInternationalizationExample {
public static void main(String[] args) {
// locale predefinito
ResourceBundle bundle = ResourceBundle.getBundle("ApplicationMessages");
// Ottieni ResourceBundle con la Locale già definita
ResourceBundle bundleFR = ResourceBundle.getBundle("ApplicationMessages", Locale.FRANCE);
// Ottieni il resource bundle quando è necessario creare una nuova Locale
ResourceBundle bundleSWE = ResourceBundle.getBundle("ApplicationMessages", new Locale("sv", "SE"));
// stampiamo alcuni messaggi
printMessages(bundle);
printMessages(bundleFR);
printMessages(bundleSWE);
}
private static void printMessages(ResourceBundle bundle) {
System.out.println(bundle.getString("CountryName"));
System.out.println(bundle.getString("CurrencyCode"));
}
}
Il nome del bundle è ApplicationMessages
e ho 2 resource bundle specifici per la lingua e un resource bundle predefinito. ApplicationMessages.properties
CountryName=USA
CurrencyCode=USD
ApplicationMessages_fr_FR.properties
CountryName=France
CurrencyCode=Euro
ApplicationMessages_sv_SE.properties
CountryName=Sweden
CurrencyCode=Kr
Osserva l’uso della classe Locale, ci sono alcune locale già definite, ma possiamo sempre crearne una nuova passando il codice lingua e il codice paese al suo costruttore. Quando eseguo il programma sopra, ecco l’output.
USA
USD
France
Euro
Sweden
Kr
Ecco tutto per un rapido esempio di java i18n. L’internationalization in Java è molto utile nelle applicazioni web per servire pagine nella lingua specifica della locale.
Source:
https://www.digitalocean.com/community/tutorials/java-i18n-internationalization-in-java