XML

KI-Übersetzung für XML-Dateien mit Lingo.dev CLI

Was ist XML?

XML (Extensible Markup Language) ist eine Auszeichnungssprache, die Regeln für die Kodierung von Dokumenten in einem Format definiert, das sowohl für Menschen als auch für Maschinen lesbar ist. Es wird häufig für Konfigurationsdateien, Datenaustausch und strukturierte Inhalte verwendet.

Zum Beispiel:

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <title>Hello, world!</title>

  <description>
    <summary>Simple demo app</summary>
    <details>Basic example content</details>
  </description>

  <image src="photo.jpg" alt="Example photo" title="Click to view"/>

  <link href="example.com" label="Click here">Learn more</link>

  <message>
    <greeting>Hello there!</greeting>
    <body>Welcome to the app</body>
  </message>
</root>

Was ist Lingo.dev CLI?

Lingo.dev CLI ist eine kostenlose, quelloffene CLI zum Übersetzen von Anwendungen und Inhalten mit KI. Sie wurde entwickelt, um herkömmliche Übersetzungsmanagementsoftware zu ersetzen und sich gleichzeitig in bestehende Pipelines zu integrieren.

Weitere Informationen finden Sie unter Überblick.

Über diesen Leitfaden

Dieser Leitfaden erklärt, wie man XML-Dateien mit Lingo.dev CLI übersetzt.

Sie lernen, wie man:

  • Ein Projekt von Grund auf erstellt
  • Eine Übersetzungspipeline konfiguriert
  • Übersetzungen mit KI generiert

Voraussetzungen

Um Lingo.dev CLI zu verwenden, stellen Sie sicher, dass Node.js v18+ installiert ist:

❯ node -v
v22.17.0

Schritt 1. Projekt einrichten

Erstellen Sie in Ihrem Projektverzeichnis eine i18n.json-Datei:

{
  "$schema": "https://lingo.dev/schema/i18n.json",
  "version": "1.10",
  "locale": {
    "source": "en",
    "targets": ["es"]
  },
  "buckets": {}
}

Diese Datei definiert das Verhalten der Übersetzungspipeline, einschließlich der zu übersetzenden Sprachen und des Speicherorts der lokalisierbaren Inhalte im Dateisystem.

Weitere Informationen zu den verfügbaren Eigenschaften finden Sie unter i18n.json.

Schritt 2. Konfigurieren der Quellsprache

Die Quellsprache ist die ursprüngliche Sprache und Region, in der Ihr Inhalt verfasst wurde. Um die Quellsprache zu konfigurieren, setzen Sie die Eigenschaft locale.source in der i18n.json-Datei:

{
  "$schema": "https://lingo.dev/schema/i18n.json",
  "version": "1.10",
  "locale": {
    "source": "en",
    "targets": ["es"]
  },
  "buckets": {}
}

Die Quellsprache muss als BCP 47 Sprachkennzeichen angegeben werden.

Eine vollständige Liste der von Lingo.dev CLI unterstützten Sprachcodes finden Sie unter Unterstützte Sprachcodes.

Schritt 3. Ziel-Locales konfigurieren

Die Ziel-Locales sind die Sprachen und Regionen, in die Sie Ihre Inhalte übersetzen möchten. Um die Ziel-Locales zu konfigurieren, setzen Sie die locale.targets-Eigenschaft in der i18n.json-Datei:

{
  "$schema": "https://lingo.dev/schema/i18n.json",
  "version": "1.10",
  "locale": {
    "source": "en",
    "targets": ["es"]
  },
  "buckets": {}
}

Schritt 4. Quellinhalt erstellen

Falls Sie es noch nicht getan haben, erstellen Sie eine oder mehrere XML-Dateien, die den zu übersetzenden Inhalt enthalten. Diese Dateien müssen sich in einem Pfad befinden, der irgendwo die Quell-Locale enthält (z.B. als Verzeichnisname wie en/ oder als Teil des Dateinamens wie messages.en.xml).

Schritt 5. Bucket erstellen

  1. Fügen Sie in der i18n.json-Datei ein "xml"-Objekt zum buckets-Objekt hinzu:

    {
      "$schema": "https://lingo.dev/schema/i18n.json",
      "version": "1.10",
      "locale": {
        "source": "en",
        "targets": ["es"]
      },
      "buckets": {
        "xml": {}
      }
    }
    
  2. Definieren Sie im "xml"-Objekt ein Array mit einem oder mehreren include-Mustern:

    {
      "$schema": "https://lingo.dev/schema/i18n.json",
      "version": "1.10",
      "locale": {
        "source": "en",
        "targets": ["es"]
      },
      "buckets": {
        "xml": {
          "include": ["./[locale]/example.xml"]
        }
      }
    }
    

    Diese Muster definieren, welche Dateien übersetzt werden sollen.

    Die Muster selbst:

    • müssen [locale] als Platzhalter für die konfigurierte Locale enthalten
    • können auf Dateipfade verweisen (z.B. "[locale]/config.xml")
    • können Sternchen als Wildcard-Platzhalter verwenden (z.B. "[locale]/*.xml")

    Rekursive Glob-Muster (z.B. **/*.xml) werden nicht unterstützt.

Schritt 6. LLM konfigurieren

Lingo.dev CLI verwendet große Sprachmodelle (LLMs), um Inhalte mit KI zu übersetzen. Um eines dieser Modelle zu nutzen, benötigen Sie einen API-Schlüssel von einem unterstützten Anbieter.

Um so schnell wie möglich loszulegen, empfehlen wir die Verwendung von Lingo.dev Engine — unserer eigenen, gehosteten Plattform, die 10.000 Token kostenlose monatliche Nutzung bietet:

  1. Registrieren Sie sich für ein Lingo.dev-Konto.

  2. Führen Sie den folgenden Befehl aus:

    npx lingo.dev@latest login
    

    Dies öffnet Ihren Standard-Browser und fordert Sie zur Authentifizierung auf.

  3. Folgen Sie den Anweisungen.

Schritt 7. Generieren der Übersetzungen

Führen Sie im Verzeichnis, das die Datei i18n.json enthält, den folgenden Befehl aus:

npx lingo.dev@latest run

Dieser Befehl:

  1. Liest die i18n.json Datei.
  2. Findet die Dateien, die übersetzt werden müssen.
  3. Extrahiert den übersetzbaren Inhalt aus den Dateien.
  4. Verwendet das konfigurierte LLM, um den extrahierten Inhalt zu übersetzen.
  5. Schreibt den übersetzten Inhalt zurück in das Dateisystem.

Bei der ersten Generierung von Übersetzungen wird eine i18n.lock Datei erstellt. Diese Datei verfolgt, welche Inhalte übersetzt wurden, und verhindert unnötige Neuübersetzungen bei nachfolgenden Durchläufen.

Beispiel

en/example.xml

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <title>Hello, world!</title>

  <description>
    <summary>Simple demo app</summary>
    <details>Basic example content</details>
  </description>

  <image src="photo.jpg" alt="Example photo" title="Click to view"/>

  <link href="example.com" label="Click here">Learn more</link>

  <button type="submit" value="Submit" placeholder="Enter text">Submit</button>

  <message>
    <greeting>Hello there!</greeting>
    <body>Welcome to the app</body>
    <signature>Thanks, MyApp Team</signature>
  </message>
</root>

es/example.xml

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <title>¡Hola, mundo!</title>

  <description>
    <summary>Aplicación de demostración simple</summary>
    <details>Contenido de ejemplo básico</details>
  </description>

  <image src="photo.jpg" alt="Foto de ejemplo" title="Haz clic para ver"/>

  <link href="example.com" label="Haz clic aquí">Aprender más</link>

  <button type="submit" value="Enviar" placeholder="Ingresa texto">Enviar</button>

  <message>
    <greeting>¡Hola!</greeting>
    <body>Bienvenido a la aplicación</body>
    <signature>Gracias, Equipo de MyApp</signature>
  </message>
</root>

i18n.json

{
  "version": "1.10",
  "locale": {
    "source": "en",
    "targets": ["es"]
  },
  "buckets": {
    "xml": {
      "include": ["./[locale]/example.xml"]
    }
  },
  "$schema": "https://lingo.dev/schema/i18n.json"
}

i18n.lock

version: 1
checksums:
  ec06a6ebae97ffd5f7afc99d9a8f051b:
    root/title: 0468579ef2fbc83c9d520c2f2f1c5059
    root/description/summary: f2c85bf6eeebeea33609e04598201bb6
    root/description/details: 2ee85b8f2f0f1bc008d9cf1f916cb09c
    root/image/%24/src: 3ce26f0a5486adf10e1b7eee1b866a70
    root/image/%24/alt: 94058fbed56fffaef2e9bbea59ba4a54
    root/image/%24/title: 60487c71b570d9dedca6fddd4a75d16a
    root/link/_: e598091d132f890c37a6d4ed94f6d794
    root/link/%24/href: 285d79d2783cf0769ab9e767362c1499
    root/link/%24/label: 26ce69aad587f70d47e7606436bf1d6d
    root/button/_: 7c91ef5f747eea9f77a9c4f23e19fb2e
    root/button/%24/type: fa8748b22d5bac98fdcd57e3d6594cf3
    root/button/%24/value: 7c91ef5f747eea9f77a9c4f23e19fb2e
    root/button/%24/placeholder: 7b5d59cee6952db66043a4b289b51884
    root/section/article/paragraph/sentence: 28ca53c71a2e3e3de79c892a9b193b1a
    root/meta/%24/name: d097029e873a4b19132e2603bd2c9fe4
    root/meta/%24/content: 0811ae3ab84aa87205383c3d8ac42bf3
    root/message/greeting: 85559fc839c5181b7958654e62c987d5
    root/message/body: ed0d4b1cde20d045f9f8c5007c784b0b
    root/message/signature: 181c8c304980949e101865098f548705