|Labs
Demo buchenPlattform
React (Lingo Compiler)
Alpha
React (MCP)React (i18n)Legacy CLI (v0)
Veraltet

Lingo.dev CLI

  • So funktioniert's
  • Setup
  • Schnellstart
  • Monorepos

Konfiguration

  • Unterstützte Formate
  • i18n.json
  • i18n.lock
  • Unterstützte Sprachen

Funktionen

  • Bestehende Übersetzungen
  • Sprachen hinzufügen
  • Überschreibungen
  • Hinweise für Übersetzer
  • Übersetzungsschlüssel
  • Umbenennen von Schlüsseln
  • Schlüsselsperrung
  • Schlüssel ignorieren
  • Schlüssel beibehalten
  • Keys mit KI extrahieren

Performance

  • Große Projekte
  • Parallele Verarbeitung
  • Kostenschätzung

Neuübersetzung

  • Automatische Neuübersetzung
  • Neuübersetzung
  • Übersetzungen entfernen

Diese Dokumentation bezieht sich auf die Legacy CLI (v0) und ist veraltet. Die aktuelle CLI ist v1. Zur aktuellen CLI-Dokumentation

Unterstützte Formate

Die Lingo.dev CLI verwendet Bucket-Typen, um unterschiedliche Dateiformate zu parsen und zu übersetzen. Jeder Bucket-Typ ist ein eigener Parser für ein bestimmtes Format. Konfiguriere einen oder mehrere Buckets in deiner i18n.json, um festzulegen, welche Dateien die CLI übersetzen soll.

Bucket-Typen#

Bucket-TypFormatAusgabemodus[locale] erforderlich
jsonJSON-DateienSeparate Dateien pro SpracheJa
json5JSON5-DateienSeparate Dateien pro SpracheJa
jsoncJSONC-Dateien (mit Kommentaren)Separate Dateien pro SpracheJa
json-dictionaryJSON-Wörterbuch (flache Schlüssel-Wert-Paare)Separate Dateien pro SpracheJa
yamlYAML-DateienSeparate Dateien pro SpracheJa
yaml-root-keyYAML mit Sprache-Root-KeysÄndert die QuelldateiNein
markdownMarkdown-DateienSeparate Dateien pro SpracheJa
mdxMDX-DateienSeparate Dateien pro SpracheJa
markdocMarkdoc-DateienSeparate Dateien pro SpracheJa
htmlHTML-DateienSeparate Dateien pro SpracheJa
mjmlMJML-E-Mail-VorlagenSeparate Dateien pro SpracheJa
androidAndroid XML-RessourcenSeparate Dateien pro SpracheJa
xcode-stringsXcode-.strings-DateienSeparate Dateien pro SpracheJa
xcode-stringsdictXcode-.stringsdict-DateienSeparate Dateien pro SpracheJa
xcode-xcstringsXcode-.xcstrings-KatalogeÄndert die QuelldateiNein
flutterFlutter ARB-DateienSeparate Dateien pro SpracheJa
poGNU gettext PO-DateienSeparate Dateien pro SpracheJa
propertiesJava-.properties-DateienSeparate Dateien pro SpracheJa
csvCSV-DateienÄndert die QuelldateiNein
csv-per-localeCSV-Dateien (eine pro Sprache)Separate Dateien pro SpracheJa
xmlAllgemeine XML-DateienSeparate Dateien pro SpracheJa
xliffXLIFF-DateienSeparate Dateien pro SpracheJa
srtSRT-UntertiteldateienSeparate Dateien pro SpracheJa
vttVTT-UntertiteldateienSeparate Dateien pro SpracheJa
phpPHP-Lokalisierungs-ArraysSeparate Dateien pro SpracheJa
typescriptTypeScript-DateienSeparate Dateien pro SpracheJa
vue-jsonVue-i18n-JSON-BlöckeSeparate Dateien pro SpracheJa
txtTextdateienSeparate Dateien pro SpracheJa

Ausgabemodi#

Buckets arbeiten in einem von zwei Ausgabemodi:

Separate Dateien pro Sprache – die CLI erstellt für jede Zielsprache eine eigene Datei. Include-Muster müssen den Platzhalter [locale] enthalten:

json
{
  "buckets": {
    "json": {
      "include": ["locales/[locale].json"]
    }
  }
}

So entstehen locales/en.json, locales/es.json, locales/fr.json usw.

Ändert die Quelldatei – die CLI schreibt Übersetzungen zurück in dieselbe Datei, die auch den Quellinhalt enthält. Der Platzhalter [locale] wird dabei nicht verwendet:

json
{
  "buckets": {
    "csv": {
      "include": ["translations.csv"]
    }
  }
}

CSV-Dateien speichern in der Regel alle Sprachen als Spalten in einer einzigen Datei. Xcode-.xcstrings-Kataloge und YAML mit Root-Keys funktionieren ähnlich.

Konfigurationsbeispiele#

Web-App mit JSON#

json
{
  "buckets": {
    "json": {
      "include": ["src/locales/[locale].json"],
      "lockedKeys": ["brand/name"]
    }
  }
}

Dokumentationswebsite mit Markdown#

json
{
  "buckets": {
    "markdown": {
      "include": ["docs/[locale]/*.md"],
      "exclude": ["docs/[locale]/drafts/*.md"]
    }
  }
}

Mobile App (iOS + Android)#

json
{
  "buckets": {
    "xcode-xcstrings": {
      "include": ["ios/Localizable.xcstrings"]
    },
    "android": {
      "include": ["android/app/src/main/res/values-[locale]/strings.xml"]
    }
  }
}

Monorepo mit mehreren Formaten#

json
{
  "buckets": {
    "json": {
      "include": ["apps/web/locales/[locale].json"]
    },
    "mdx": {
      "include": ["packages/docs/content/[locale]/*.mdx"]
    },
    "flutter": {
      "include": ["apps/mobile/lib/l10n/app_[locale].arb"]
    }
  }
}

Bucket-spezifische Funktionen#

Einige Buckets unterstützen zusätzliche Funktionen, die über Include-/Exclude-Muster hinausgehen:

FunktionUnterstützte BucketsBeschreibung
Key LockingSchlüssel-Wert-Formate (JSON, YAML usw.)Quellwerte ohne Übersetzung übernehmen
Key IgnoringSchlüssel-Wert-FormateSchlüssel vollständig aus Zieldateien ausschließen
Key PreservingSchlüssel-Wert-FormateEinmal initialisieren und anschließend vor Updates schützen
Translator NotesJSONC, XCStringsÜber Kommentare Kontext liefern, um die Übersetzungsqualität zu verbessern

Regeln für Include-Muster#

  • Muster sind relativ zum Speicherort der Datei i18n.json
  • Verwende [locale] als Platzhalter für Sprachcodes (erforderlich für Buckets mit „separaten Dateien“)
  • Ein Sternchen (*) steht für jeden Dateinamen: locales/[locale]/*.json
  • Rekursive Muster (**) erfassen Dateien in beliebiger Tiefe: src/**/[locale].json, config/locales/**/[locale].yml. Wenn ein Muster ** verwendet, werden node_modules, .git, dist, build, .next und .turbo standardmäßig ausgeschlossen — ergänze bei Bedarf eigene exclude-Einträge (erfordert CLI 0.135.0+)
  • Dateiendungen haben keinen Einfluss auf das Parsing – der Bucket-Typ bestimmt den Parser

Nächste Schritte#

i18n.json
Vollständige Konfigurationsreferenz
Key Locking
Bestimmte Schlüssel vor der Übersetzung schützen
Vorhandene Übersetzungen
Die CLI zu einem Projekt hinzufügen, das bereits Übersetzungen enthält
Setup
CLI installieren und konfigurieren

War diese Seite hilfreich?

Max PrilutskiyMax Prilutskiy·Aktualisiert vor 1 Tag·3 Min. Lesezeit