Lokalisierung statischer Inhalte

Zuletzt aktualisiert: vor 4 Tagen · 4 Min. Lesezeit

Die Lingo.dev CLI übersetzt statische Dateien in deinem Repository – Markdown, MDX, Markdoc, JSON, YAML, Untertitel und mehr – über eine konfigurierte Lokalisierungs-Engine. Zeige einfach auf deine Inhalte, führe sie einmal aus, und du erhältst die übersetzten Dateien direkt neben den Quelldateien.

Unterstützte Inhaltstypen#

Die CLI erkennt das Format jeder Datei automatisch an der Dateiendung – ein Bucket-Typ muss nicht konfiguriert werden. Die Sprache steckt im Pfad (content/en/x.md wird zu content/de/x.md), daher ist kein [locale]-Platzhalter nötig.

InhaltstypFormatBeispielpfad
DokumentationMarkdowndocs/en/getting-started.md
DokumentationMDXdocs/en/getting-started.mdx
DokumentationMarkdocdocs/en/getting-started.mdoc
Strukturierte DatenJSONdata/en.json
Strukturierte DatenYAMLdata/en.yaml
BlogartikelMarkdown / MDXblog/en/post-slug.md
LokalisierungGettext POlocale/en/messages.po
LokalisierungXLIFFlocale/en.xliff
UntertitelSRTsubs/en/intro.srt

Die vollständige Liste aller unterstützten Dateitypen finden Sie in der Format-Referenz.

In der neuen CLI noch nicht unterstützt

CSV (csv-per-locale), VTT-Untertitel, einfacher Text .txt und Java .properties werden von der neuen CLI noch nicht unterstützt. Verwende diese Dateien vorerst weiterhin in der legacy CLI und behalte das Changelog für Updates im Blick.

Voraussetzungen#

Bei jedem Durchlauf werden Inhalte über eine Lokalisierungs-Engine verarbeitet — die Konfiguration, die festlegt, welches LLM-Modell, Glossar, welche Markenstimme und welche Regeln gelten. Erstelle sie im Lingo.dev-Dashboard und richte dann die CLI (Node 22+) ein:

bash
npm install -g @lingo.dev/cli
lingo login
lingo init
lingo link

lingo init und lingo link erstellen .lingo/config.json und verbinden die CLI mit Ihrer Organisation und Engine. Committen Sie diese Datei, damit in jeder Umgebung dieselbe Konfiguration verwendet wird.

json
{
  "orgId": "org_abc123",
  "engineId": "eng_abc123",
  "sourceLocale": "en",
  "targetLocales": ["es", "fr", "de", "ja"],
  "files": [{ "pattern": "docs/en/getting-started.md" }]
}

Überspringen Sie in CI lingo login und stellen Sie stattdessen LINGO_API_KEY als Umgebungsvariable bereit. Erzeugen Sie sie über API keys.

Dokumentationssites#

Die meisten Dokumentations-Frameworks organisieren übersetzte Inhalte in sprachspezifischen Verzeichnissen. Fügen Sie in files pro Quelldatei ein Muster (oder ein Glob) hinzu. Die CLI bewahrt Frontmatter, Codeblöcke und Komponenten-Syntax, während Markdown, MDX und Markdoc übersetzt werden.

json
{
  "orgId": "org_abc123",
  "engineId": "eng_abc123",
  "sourceLocale": "en",
  "targetLocales": ["es", "fr", "de", "ja"],
  "files": [
    { "pattern": "docs/en/getting-started.md" },
    { "pattern": "docs/en/setup.mdx" }
  ]
}

Starten Sie die erste Übersetzung und füllen Sie dabei alle Zielsprachen auf:

bash
lingo push --backfill-missing --wait

Bei späteren Ausführungen übersetzt lingo push --wait nur noch die Änderungen. Ohne --wait sammeln Sie die Ausgaben mit lingo pull aus demselben Checkout ein.

Passen Sie den Quellpfad an die Verzeichnisstruktur Ihres Frameworks an:

FrameworkVerzeichniskonvention pro SpracheReferenz
Docusaurusi18n/[locale]/docusaurus-plugin-content-docs/current/Docusaurus i18n-Guide
NextraSeiten pro Sprache oder JSON-WörterbücherNextra-Dokumentation
Hugocontent/[locale]/Hugo-Guide für Mehrsprachigkeit
Astrosrc/content/[locale]/ oder JSON-WörterbücherAstro i18n-Guide
VitePressVerzeichnispräfix [locale]/VitePress i18n
MkDocsSprachspezifisches docs/ mit i18n-PluginMkDocs i18n-Plugin

MDX-Komponenten

Bei der MDX-Übersetzung bleibt die JSX-Komponenten-Syntax erhalten. Benutzerdefinierte Komponenten wie <Callout>, <Tabs> und <CodeBlock> werden unverändert übernommen – nur der darin enthaltene Text wird übersetzt.

Strukturierte Daten#

JSON- und YAML-Dateien werden anhand ihrer Dateiendung automatisch übersetzt. Mit Schlüsselsteuerungen stellen Sie sicher, dass nicht übersetzbare Werte (IDs, URLs, Konfigurations-Flags) nicht verändert werden.

json
{
  "orgId": "org_abc123",
  "engineId": "eng_abc123",
  "sourceLocale": "en",
  "targetLocales": ["es", "fr", "de", "ja"],
  "files": [
    { "pattern": "content/en.json" },
    { "pattern": "data/en.yaml" }
  ]
}

Generisches YAML benötigt kein format-Feld. Nur yaml-openapi, yaml-root-key und android erfordern eine explizite "format" im Dateieintrag.

YAML mit Sprache als Root-Key

YAML-Dateien, die den Sprachcode als Root-Key verwenden (üblich in Rails und Hugo), benötigen eine explizite "format": "yaml-root-key" — der Root-Key wird auf die Zielsprache umgeschrieben. Siehe die Format-Referenz.

Untertitel#

SRT-Untertiteldateien werden anhand ihrer Dateiendung übersetzt. Die CLI bewahrt alle Zeitdaten, Cue-Indizes und Formatierungs-Tags – übersetzt wird nur der Textinhalt.

json
{
  "orgId": "org_abc123",
  "engineId": "eng_abc123",
  "sourceLocale": "en",
  "targetLocales": ["es", "fr", "de", "ja"],
  "files": [{ "pattern": "subs/en/intro.srt" }]
}

VTT noch nicht unterstützt

WebVTT-Untertitel (.vtt) werden von der neuen CLI noch nicht unterstützt. Verwenden Sie für VTT-Dateien vorerst die legacy CLI und behalten Sie das Changelog im Blick.

Arbeiten mit großen Inhaltsmengen#

Repos mit statischen Inhalten können Tausende von Dateien enthalten. Die CLI geht damit effizient um:

MechanismusSo hilft es
Lockfile.lingo/lock.json erfasst die Fingerabdrücke des Quellinhalts, sodass lingo push nur neue oder geänderte Dateien übersetzt. Committen Sie sie; lingo push --wait und lingo pull aktualisieren sie, sobald eine Ausführung abgeschlossen ist.
Serverseitige ParallelisierungDie Engine parallelisiert die Übersetzung automatisch – es gibt kein Concurrency-Flag, das Sie anpassen müssen.
Gezielte LäufeMit einem Glob begrenzen Sie einen Lauf auf bestimmte Dateien: lingo push "docs/en/**".

Um zu prüfen, ob Übersetzungen aktuell sind, ohne Dateien zu schreiben – praktisch als CI-Gate – führen Sie lingo check aus.

Nächste Schritte#