Internationalisierung (i18n) in Java: Die Anwendung mehrsprachig machen
Internationalisierung (oft abgekürzt i18n – vom Wort internationalization, wobei 18 die Anzahl der Buchstaben zwischen dem ersten 'i' und dem letzten 'n' ist) ist der Prozess der Softwareentwicklung, bei dem die Software so gestaltet wird, dass sie an verschiedene Sprachen und regionale Besonderheiten angepasst werden kann, ohne den Quellcode zu ändern. In Java wird diese Aufgabe elegant und leistungsstark mit den integrierten APIs gelöst: java.util.Locale, java.util.ResourceBundle und einer Reihe von Formatierungsklassen.
In diesem Artikel werden wir untersuchen, wie man die Unterstützung mehrerer Sprachen in einer Java-Anwendung mit den Standardmitteln implementiert. Sie erfahren, wie Sie Lokalisierungsdateien erstellen, die Sprache dynamisch umschalten und Zahlen, Daten und Währungen korrekt formatieren.
Grundlegende Komponenten von i18n in Java
Java bietet drei Schlüsselelemente für die Arbeit mit Internationalisierung:
- Locale – ein Objekt, das eine bestimmte Sprache und Region repräsentiert (z. B. Russisch in Russland –
ru_RU, Englisch in den USA –en_US). - ResourceBundle – eine Klasse zum Laden lokalisierter Ressourcen (Zeichenfolgen, Nachrichten, Beschriftungen) aus
.properties-Dateien oder Klassen. - Formatierer – Klassen aus dem Paket
java.text(NumberFormat,DateFormat,MessageFormat) für die korrekte Anzeige von Zahlen, Daten und zusammengesetzten Nachrichten.
Schritt 1: Erstellen von Ressourcendateien
Die traditionelle Methode zum Speichern lokalisierter Zeichenfolgen sind .properties-Dateien. Sie werden nach folgender Regel erstellt:
Messages.properties # Standarddatei (normalerweise Englisch)Messages_ru_RU.properties # Für Russisch (Russland)Messages_de_DE.properties # Für Deutsch (Deutschland)Messages_fr.properties # Für Französisch (ohne Regionsangabe)Beispielinhalt der Datei Messages.properties (Englisch, Standard):
welcome.message = Welcome to our application!farewell.message = Goodbye!date.format = dd/MM/yyyyBeispielinhalt der Datei Messages_ru_RU.properties (Russisch):
welcome.message = Добро пожаловать в наше приложение!farewell.message = До свидания!date.format = dd.MM.yyyyWichtig: Die Dateien müssen in der Kodierung ISO 8859-1 (Latin-1) vorliegen oder Unicode-Escape-Sequenzen für Zeichen verwenden, die nicht in dieser Kodierung enthalten sind. Für russische Buchstaben ist eine Escape-Sequenz erforderlich, z. B. \\u0414\\u043E\\u0431\\u0440\\u043E. In modernen Entwicklungsumgebungen (IntelliJ IDEA, Eclipse) und bei der Erstellung mit Maven/Gradle ist dies jedoch oft automatisiert.
Schritt 2: Laden von Ressourcen im Code
Um lokalisierte Zeichenfolgen zu verwenden, erstellen Sie einfach ein Locale-Objekt und rufen das entsprechende ResourceBundle ab:
import java.util.Locale;import java.util.ResourceBundle;
public class I18nDemo { public static void main(String[] args) { // Erstellen einer Locale für die russische Sprache Locale ruLocale = new Locale("ru", "RU"); // Laden des Bundles (Basisname der Datei - "Messages") ResourceBundle bundle = ResourceBundle.getBundle("Messages", ruLocale);
// Abrufen der Zeichenfolgen String welcome = bundle.getString("welcome.message"); String farewell = bundle.getString("farewell.message");
System.out.println(welcome); // Добро пожаловать в наше приложение! System.out.println(farewell); // До свидания! }}Wenn die Datei für eine bestimmte Locale nicht gefunden wird, verwendet Java automatisch die Standarddatei (Messages.properties).
Schritt 3: Dynamisches Umschalten der Sprache
In einer Webanwendung
Auch in der Bibliothek
Maschinelles Lernen mit Go: Überblick über Bibliotheken und Frameworks (Golang)
Internationalisierung (i18n) in Kotlin: Vollständiger Leitfaden mit Beispielen
Arbeiten mit Excel in C++: Bibliotheken und Werkzeuge zum Lesen und Schreiben
Standard-Java-Bibliothek: Vollständiger Überblick für Anfänger und Profis