Unterstützte Formate

Zuletzt aktualisiert: letztes Quartal · 3 Min. Lesezeit

Veraltet

Diese Doku behandelt die alte CLI (v0). Die aktuelle CLI ist v1. Zur aktuellen CLI-Doku

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#