Internationalisierung (i18n) in Java: Vollständiger Leitfaden mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

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/yyyy


Beispielinhalt der Datei Messages_ru_RU.properties (Russisch):



welcome.message = Добро пожаловать в наше приложение!farewell.message = До свидания!date.format = dd.MM.yyyy


Wichtig: 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

Empfehlungen