Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Gartenautomation
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Deutsch
  • English
Menu

Apache FOP mehrsprachig: So integrierst du Übersetzungen in dein XML-Layout

Posted on 20. Juni 202521. Juni 2025 by Stefan Draeger

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?

Apache FOP mehrsprachig: So integrierst du Übersetzungen in dein XML-Layout
Dieses Video auf YouTube ansehen.

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!

Wetterdashboard in deutsch
Wetterdashboard in deutsch
Wetterdashboard in englisch
Wetterdashboard in englisch
Wetterdashboard in französisch
Wetterdashboard in französisch

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
    • 1. Übersetzungsdatei als XML anlegen
    • 2. Sprache als Parameter in XSLT setzen
    • 3. Zugriff auf die Übersetzungen per key()
    • Beispielausgabe
  • 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.

Wetterdashboard in englisch
Wetterdashboard in englisch

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.

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen
Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

link zu Fabook
link zu LinkedIn
link zu YouTube
link zu TikTok
link zu Pinterest
link zu Instagram
  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}