Leitfaden zur Java-Internationalisierung: Java-Apps übersetzen

Erfahren Sie, wie Sie die Java-Internationalisierung einrichten, .properties-Dateien übersetzen und Ihren Java-Lokalisierungsworkflow automatisieren.

Wie Java-Internationalisierung funktioniert

Das i18n-System von Java basiert auf zwei Dingen:

  • .properties -Dateien, die Ihre übersetzten Zeichenketten speichern
  • Die ResourceBundle-Klasse, die zur Laufzeit die richtige Datei basierend auf dem Locale des Benutzers lädt

Wenn Ihre App ausgeführt wird, prüft ResourceBundle die Locale des Benutzers und lädt automatisch die passende Datei. Fehlt eine Übersetzung, wird auf die Standarddatei zurückgegriffen, damit nichts kaputtgeht.

Der Aufruf einer Zeichenkette im Code ist unkompliziert:

ResourceBundle bundle = ResourceBundle.getBundle("messages", Locale.FRENCH);
String greeting = bundle.getString("welcome.message");

Das ist der gesamte Mechanismus. Der Rest der Lokalisierungsarbeit findet in den .properties-Dateien selbst statt, weshalb deren korrekte Strukturierung wichtig ist.

Einrichten Ihres Resource Bundle

Ein Resource Bundle ist eine Sammlung von .properties-Dateien, die einen gemeinsamen Basisnamen teilen. Der Basisname ist der Teil des Dateinamens vor dem Locale-Suffix, und er wird von ResourceBundle.getBundle() verwendet, um zur Laufzeit die richtige Datei zu finden.

messages.properties         # default (usually English)
messages_fr.properties      # French
messages_de.properties      # German
messages_es.properties      # Spanish

Hier ist messages der Basisname. Sie können ihn beliebig benennen, aber er sollte widerspiegeln, was die Datei enthält. Größere Anwendungen verwenden oft mehrere Resource Bundles, um die Organisation zu gewährleisten:

src/main/resources/
  messages.properties
  errors.properties
  emails.properties

Java erwartet ein bestimmtes Benennungsmuster: basename_language.properties oder basename_language_COUNTRY.properties für regionale Varianten.

messages_fr.properties       # French
messages_fr_CA.properties    # French (Canada)
messages_pt_BR.properties    # Portuguese (Brazil)

Sprachcodes folgen ISO 639-1 und Ländercodes folgen ISO 3166-1. Die Verwendung des falschen Formats bedeutet, dass ResourceBundle die Datei zur Laufzeit nicht finden wird.

Strukturierung von Java-.properties-Dateien

Jede Zeile in einer .properties-Datei ist ein Schlüssel-Wert-Paar, getrennt durch =.

welcome.message = Welcome to our application
error.login.invalid_credentials = Invalid username or password
form.submit.button = Submit

Neben der Verwendung von Schlüssel-Wert-Paaren ist es wichtig zu wissen, dass die Art und Weise, wie Sie Ihre Quelldatei schreiben, die Qualität Ihrer Übersetzungen direkt beeinflusst. Bestimmte Best Practices gelten immer, egal ob Sie manuell oder mit einem KI-Übersetzungstool wie PTC übersetzen.

1

Klare, beschreibende Schlüssel verwenden

Schlüssel sollten eindeutig machen, wo und wie eine Zeichenkette verwendet wird. Dies ist wichtig, wenn Sie Hunderte von Zeichenketten über mehrere Dateien hinweg verwalten.

Falsche Verwendung von Schlüsseln:

btn1 = Submit 
msg2 = Error

Korrekte Verwendung von Schlüsseln:

form.submit.button = Submit 
error.login.invalid_credentials = Invalid username or password

2

Placeholder für dynamische Inhalte verwenden

Schreiben Sie den vollständigen Satz in Ihre .properties-Datei und verwenden Sie nummerierte Platzhalter für variablen Inhalt, anstatt Zeichenketten im Code zu verketten.

Falsch (im Code):

"Hello, " + username + "! You have " + count + " new messages." 

Korrekt (in .properties-Datei):

dashboard.greeting = Hello, {0}! You have {1} new messages.

Viele Sprachen ändern Wortstellung und Kongruenzregeln, sodass das Aufteilen von Sätzen in Fragmente eine korrekte Übersetzung unmöglich macht.

3

Pluralisierung mit ChoiceFormat handhaben

Einige Zeichenketten ändern sich abhängig von einem numerischen Wert. Anstatt separate Schlüssel für Singular und Plural zu schreiben, verwenden Sie ein ChoiceFormat-Muster direkt in Ihrer .properties-Datei:

messages.count = {0,choice,0#no messages|1#one message|1<{0} messages}

Java verarbeitet dieses Muster zur Laufzeit und gibt die richtige Form basierend auf dem übergebenen Wert zurück.

4

Sonderzeichen maskieren

Zeichen wie =, :, # und \ haben eine besondere Bedeutung in .properties-Dateien:

  • = oder : trennt Schlüssel von Werten
  • # oder ! beginnt einen Kommentar
  • \ leitet Escape-Sequenzen ein (wie \n für Zeilenumbruch)

Wenn Sie diese Zeichen in einer Zeichenkette verwenden müssen, maskieren Sie sie mit einem Backslash.

support.link = Visit us at https\://support.example.com

5

Dateien in UTF-8 speichern

Speichern Sie .properties-Dateien immer in UTF-8. Ohne dieses Format werden Nicht-ASCII-Zeichen beschädigt und Übersetzungen unlesbar.

6

Halten Sie alle benutzersichtbaren Texte aus Ihrem Code heraus

Wenn eine Zeichenkette für Benutzer sichtbar ist, gehört sie in eine .properties Datei. Fest codierte Zeichenketten werden nicht übersetzt, und Ihre App wird am Ende eine Mischung von Sprachen anzeigen.

Weitere Überlegungen zur Java-Lokalisierung

Nicht alles, was lokalisiert werden muss, befindet sich in einer .properties-Datei. Datums-, Zeit-, Zahlen- und Währungswerte werden zur Laufzeit im Code formatiert, und deren korrekte Darstellung ist genauso wichtig wie Ihre übersetzten Zeichenketten.

Java bietet integrierte Klassen hierfür:

  • DateTimeFormatter für Locale-bewusste Datums- und Zeitformatierung
  • NumberFormat für Zahlen, Prozentsätze und Währungswerte

Da sich dieser Leitfaden auf .properties-Dateien und deren Übersetzung konzentriert, werden wir diese hier nicht im Detail behandeln. Die offizielle Java-Dokumentation für DateTimeFormatter und NumberFormat ist ein guter Ausgangspunkt.

Übersetzen von Java-.properties-Dateien

Wie die obigen Beispiele zeigen, erfordert die korrekte Internationalisierung einer Java-App Aufwand. Ihre Resource Bundles müssen richtig strukturiert sein, Placeholder korrekt gehandhabt und die Pluralisierung sauber umgesetzt werden – bevor die Übersetzung überhaupt beginnen kann. PTC übernimmt ab diesem Punkt.

Warum PTC?

PTC ist ein KI-Übersetzungssystem für Software-Teams. Es versteht Ihr Produkt, Ihre Terminologie und Ihre Zielgruppe. Mit PTC erhalten Sie:

  • Kontextbezogene Übersetzungen — PTC liest Ihre Dateistruktur und Beschreibungen, um Strings präzise zu übersetzen, nicht wörtlich
  • Erhalt von Placeholders und Formaten — Ihre {0}, {1}-Muster und ChoiceFormat-Strings bleiben unverändert erhalten
  • Zahlung nach Bedarf — keine monatlichen Abogebühren und ein Preisrechner, damit Sie Ihre Kosten kennen, bevor Sie sich festlegen
  • Git- und CI/CD-Integration — verbinden Sie Ihr Repository und halten Sie Übersetzungen automatisch synchron
  • Kostenlose Testversion — 20.000 Wörter in zwei Sprachen, keine Kreditkarte erforderlich

Erste Schritte

  1. Registrieren Sie sich für eine kostenlose Testversion
  2. Laden Sie Ihre Quell-.properties-Datei hoch und legen Sie die Pfade für die Übersetzungsausgabe fest
  3. Wählen Sie Ihre Zielsprachen aus
  4. Fügen Sie eine kurze Beschreibung Ihrer Anwendung und ihrer Zielgruppe hinzu
  5. Laden Sie Ihre übersetzten Dateien im Tab „Ressourcendateien“ herunter und fügen Sie sie hinzu src/main/resources

Die gesamte Einrichtung dauert etwa 5 Minuten. Eine vollständige Schritt-für-Schritt-Anleitung finden Sie im Leitfaden für die ersten Schritte.

Ein kontinuierlicher Übersetzungs-Workflow für Java-Projekte

Ihre .properties-Datei einmal zu übersetzen ist unkompliziert. Aber wie halten Sie Übersetzungen auf dem neuesten Stand, während sich Ihre Anwendung weiterentwickelt? Jedes Mal, wenn Sie eine neue Zeichenkette hinzufügen, bestehende Texte aktualisieren oder einen Schlüssel entfernen, müssen Ihre übersetzten Dateien diese Änderung widerspiegeln.

Dies manuell zu tun bedeutet, Dateien zu exportieren, zur Übersetzung zu versenden, zu warten und sie jedes Mal erneut zu integrieren, weshalb die meisten Teams dies schließlich automatisieren.

PTC bietet zwei Möglichkeiten, den Übersetzungsprozess zu automatisieren:

Git-Integration

Verbinden Sie Ihr GitHub-, GitLab– oder Bitbucket-Repository mit PTC, und es überwacht Ihre Quell-.properties-Datei auf Änderungen. Wenn eine Zeichenfolge hinzugefügt oder aktualisiert wird, übersetzt PTC diese automatisch und liefert die aktualisierten Übersetzungsdateien per Pull-Request zurück. Ihre Übersetzungen bleiben ohne manuelle Schritte synchron.

CI/CD-Integration

Wenn Sie es vorziehen, alles in Ihrem bestehenden Build-Prozess zu halten, können Sie mit der PTC-API Ihre Quelldatei hochladen und Übersetzungen als Teil Ihres CI-Jobs abrufen. Jeder Build erstellt automatisch aktuelle Übersetzungen.

Beide Ansätze bedeuten, dass das Hinzufügen einer neuen Sprache später nur eine Konfigurationsänderung ist, kein neuer manueller Prozess.

Bereit, Ihre Java-Anwendung zu lokalisieren?

Ihre .properties-Dateien sind die Grundlage Ihres Java-Lokalisierungsworkflows. Strukturieren Sie sie richtig, halten Sie Ihre Übersetzungen synchron, und Ihre App kann neue Sprachen unterstützen, ohne Ihren Release-Zyklus zu verlangsamen.

Wenn Sie PTC noch nicht ausprobiert haben, ist die kostenlose Testversion ein guter Ausgangspunkt. 20.000 Wörter, zwei Sprachen, keine Kreditkarte erforderlich.

Nach oben scrollen