Internationalisierung in Java oder Java i18n ist eine sehr wichtige Funktion. Java bietet Unterstützung für Internationalisierung (i18n) durch Ressourcenbündel.
Internationalisierung in Java
Um Ihre Anwendung für verschiedene Gebietsschemas zu unterstützen, müssen wir eine sprachspezifische Eigenschaftendatei erstellen. Die Dateinamen folgen dem Muster des Bündelnamens mit Sprachcode und Ländercode, zum Beispiel ApplicationMessages_en_US.properties
. Sobald die Eigenschaftendateien für bestimmte Gebietsschemas bereit sind, müssen Sie nur das Ressourcenbündel mit der richtigen Locale initialisieren. Java stellt zwei Klassen bereit, java.util.ResourceBundle
und java.util.Locale
, die für diesen Zweck verwendet werden. ResourceBundle liest die sprachspezifische Eigenschaftendatei, und Sie können den sprachspezifischen Wert für jeden Schlüssel abrufen. Dies ist sehr hilfreich, um die Texte Ihrer Webanwendung lokalspezifisch zu gestalten. Sie können die Gebietsschemainformationen aus der HTTP-Anfrage abrufen und die dynamische Seite mit diesen lokalisierten Ressourcenbündeldateien generieren. Sie können auch die Option anbieten, dass Benutzer die Gebietsschema auswählen und die Beschriftungen dynamisch aktualisieren können.
Java i18n Beispiel
Für das Java i18n-Beispiel habe ich das Projekt erstellt, dessen Struktur dem unten stehenden Bild ähnelt. Hier ist der Java-Code für die Klasse JavaInternationalizationExample.
package com.journaldev.i18n;
import java.util.Locale;
import java.util.ResourceBundle;
public class JavaInternationalizationExample {
public static void main(String[] args) {
//Standard-Sprachumgebung
ResourceBundle bundle = ResourceBundle.getBundle("ApplicationMessages");
//ResourceBundle mit bereits definierten Sprachumgebungen erhalten
ResourceBundle bundleFR = ResourceBundle.getBundle("ApplicationMessages", Locale.FRANCE);
//ResourceBundle erhalten, wenn eine Sprachumgebung erstellt werden muss
ResourceBundle bundleSWE = ResourceBundle.getBundle("ApplicationMessages", new Locale("sv", "SE"));
//Einige Meldungen ausgeben
printMessages(bundle);
printMessages(bundleFR);
printMessages(bundleSWE);
}
private static void printMessages(ResourceBundle bundle) {
System.out.println(bundle.getString("CountryName"));
System.out.println(bundle.getString("CurrencyCode"));
}
}
Hier ist der Name des Bundles ApplicationMessages
und ich habe 2 sprachspezifische Resource-Bundles und ein Standard-Resource-Bundle. ApplicationMessages.properties
CountryName=USA
CurrencyCode=USD
ApplicationMessages_fr_FR.properties
CountryName=France
CurrencyCode=Euro
ApplicationMessages_sv_SE.properties
CountryName=Sweden
CurrencyCode=Kr
Beachten Sie die Verwendung der Locale-Klasse. Es gibt bereits einige Sprachumgebungen, aber wir können jederzeit eine neue Sprachumgebung erstellen, indem wir den Sprachcode und den Ländercode an den Konstruktor übergeben. Wenn ich das obige Programm ausführe, erhalte ich folgende Ausgabe.
USA
USD
France
Euro
Sweden
Kr
Das war alles für ein schnelles Java i18n-Beispiel. Internationalisierung in Java ist sehr nützlich in Webanwendungen, um Seiten in sprachspezifischer Sprache bereitzustellen.
Source:
https://www.digitalocean.com/community/tutorials/java-i18n-internationalization-in-java