In meinen bisherigen Beiträgen habe ich gezeigt, wie man Wetterdaten im XML-Format verarbeitet und mit Apache FOP ein ansprechendes PNG für ein ePaper-Display erzeugt. Dabei waren die Beschriftungen statisch – zum Beispiel stand dort „Temperatur“ oder „Luftfeuchtigkeit“. Was aber, wenn man dieselbe Anzeige auch auf Englisch oder in einer anderen Sprache darstellen möchte?
In diesem Beitrag zeige ich dir, wie du dein FOP/XSLT-Projekt mehrsprachig gestalten kannst. Du lernst, wie man Übersetzungen über ein externes XML oder XSL-Datei-System einbindet und dynamisch zwischen Sprachen umschaltet – perfekt für internationale Projekte oder mehrsprachige Dashboards!



Rückblick: Vorherige Beiträge zum Projekt
Falls du neu in das Thema einsteigst, findest du hier die ersten beiden Teile meiner Reihe zur Wetteranzeige mit Apache FOP und XSLT:
- Wetterdaten visualisieren mit XSLT & Apache FOP – Teil 1: PNG-Erzeugung am PC
- XSLT-Templates nutzen: Wiederverwendbare Bausteine für dein Wetter-Dashboard
Inhaltsverzeichnis
- Warum Mehrsprachigkeit wichtig ist
- So funktioniert die Übersetzung in XSLT
- Beispielcode auf GitHub
- Fazit & Ausblick
Warum Mehrsprachigkeit wichtig ist
Ein mehrsprachiges Layout ist nicht nur für internationale Anwendungen sinnvoll, sondern auch hilfreich, wenn du dein Projekt später mit mehreren Benutzeroberflächen oder Zielgruppen kombinieren möchtest. Gerade bei einer Wetteranzeige auf einem ePaper-Display kannst du so flexibel zwischen Deutsch, Englisch oder anderen Sprachen wechseln.
So funktioniert die Übersetzung in XSLT
1. Übersetzungsdatei als XML anlegen
Erstelle eine Datei translations.xml
mit folgendem Inhalt:
<?xml version="1.0" encoding="UTF-8"?> <translations> <string id="uhr"> <lang code="de">Uhr</lang> <lang code="en">o'clock</lang> <lang code="fr">montre</lang> </string> <string id="temperature"> <lang code="de">Temperatur</lang> <lang code="en">Temperature</lang> <lang code="fr">Température</lang> </string> <string id="humidity"> <lang code="de">Luftfeuchtigkeit</lang> <lang code="en">Humidity</lang> <lang code="fr">Humidité</lang> </string> <string id="pressure"> <lang code="de">Luftdruck</lang> <lang code="en">Air pressure</lang> <lang code="fr">Pression d'air</lang> </string> <string id="forecast"> <lang code="de">3-Tages-Vorschau</lang> <lang code="en">3-day preview</lang> <lang code="fr">Prévision à 3 jours</lang> </string> </translations>
2. Sprache als Parameter in XSLT setzen
In deiner XSLT-Datei definierst du einen Parameter:
<xsl:param name="lang" select="'de'" />
Beim Aufruf der Transformation kannst du diesen Parameter mitgeben:
../fop/fop -xml wetter.xml -xsl forecastXML2fo.xsl -param lang en -png forecast.png
3. Zugriff auf die Übersetzungen per key()
In deinem XSLT bindest du die Datei über document()
ein und nutzt key()
, um schnell auf Begriffe zuzugreifen:
<xsl:key name="translation" match="lang" use="concat(../@id, '|', @code)" /> <xsl:variable name="tfile" select="document('translations.xml')" /> <xsl:value-of select="key('translation', concat('temperature|', $lang), $tfile)" />
Das liefert dir je nach eingestellter Sprache z. B. „Temperature“ oder „Temperatur“ zurück.
Beispielausgabe
Wenn du die Sprache auf en
setzt, wird im Layout statt „Temperatur“ automatisch „Temperature“ angezeigt. Die gesamte Wetteranzeige passt sich somit dynamisch an.

Beispielcode auf GitHub
Den vollständigen Beispielcode zur Internationalisierung findest du in meinem GitHub-Repository: xml2weatherpng – Ordner „translation“
Dort sind Übersetzungen für Deutsch, Englisch und Französisch hinterlegt. Du kannst den Code direkt übernehmen und erweitern.
Fazit & Ausblick
Mit wenig Aufwand kannst du Apache FOP um eine mehrsprachige Ausgabe erweitern. Durch die Auslagerung der Texte in eine separate XML-Datei bleibt dein Layout schlank und gut wartbar. Du kannst jederzeit neue Sprachen oder Begriffe ergänzen – und so dein Projekt internationalisieren.