Schlüsselsperrung

Die Lingo.dev CLI ermöglicht es Ihnen, bestimmte Übersetzungsschlüssel zu sperren, damit deren Werte in allen Sprachen identisch bleiben. Wenn Sie Schlüssel sperren, schließt die CLI diese von der Übersetzungsverarbeitung aus und kopiert die Quellwerte direkt in alle Zieldateien.

Einrichtung der Schlüsselsperrung

Fügen Sie lockedKeys zu Ihrer Bucket-Konfiguration in i18n.json hinzu:

{
  "locale": {
    "source": "en",
    "targets": ["es", "fr", "de"]
  },
  "buckets": {
    "json": {
      "include": ["locales/[locale].json"],
      "lockedKeys": ["system/component", "config/engine", "modules/processor"]
    }
  }
}

Das Array lockedKeys verwendet die Vorwärtsschrägstrich-Notation (/), um verschachtelte Schlüssel anzugeben.

Funktionsweise der Schlüsselsperrung

Während der Übersetzungsverarbeitung führt die Lingo.dev CLI folgende Schritte durch:

  1. Identifizierung gesperrter Schlüssel aus Ihrer Konfiguration
  2. Ausschluss von der Übersetzung — gesperrte Inhalte werden niemals an KI-Modelle gesendet
  3. Kopieren der Quellwerte direkt in alle Zieldateien
  4. Aufrechterhaltung der Konsistenz über alle Sprachen hinweg

Beispiel-Workflow:

// locales/en.json (Quelle)
{
  "welcome": "Welcome to our platform",
  "system": {
    "component": "Lingo.dev CLI",
    "processor": "Translation Engine"
  },
  "config": {
    "engine": "Lingo.dev Engine"
  }
}

Mit Konfiguration für gesperrte Schlüssel:

{
  "lockedKeys": ["system/component", "system/processor", "config/engine"]
}

Generierte spanische Übersetzung:

// locales/es.json (generiert)
{
  "welcome": "Bienvenido a nuestra plataforma",
  "system": {
    "component": "Lingo.dev CLI",
    "processor": "Translation Engine"
  },
  "config": {
    "engine": "Lingo.dev Engine"
  }
}

Nur welcome wird übersetzt, während gesperrte Schlüssel identisch zur Quelle bleiben.

Ohne Schlüsselsperrung könnte "Lingo.dev Engine" fälschlicherweise als "Motor de Lingo.dev" ins Spanische oder als "Lingo.devエンジン" ins Japanische übersetzt werden, was in diesem Beispiel nicht erwünscht ist.

Verschachtelte Schlüsselpfade

Verwenden Sie die Vorwärtsschrägstrich-Notation (/), um Schlüssel in beliebiger Tiefe zu sperren:

{
  "lockedKeys": [
    "system/engine/component",
    "modules/ai/processor",
    "config/translation/handler"
  ]
}

Diese Notation funktioniert mit komplexen verschachtelten Strukturen:

// Quellstruktur
{
  "system": {
    "engine": {
      "component": "Lingo.dev Engine"
    }
  }
}

Der Pfad system/engine/component sperrt den Wert des Komponentennamens.

Schlüssel mit Punkten

Die Schrägstrich-Notation behandelt Schlüssel, die Punkte in ihren Namen enthalten:

// Quelle mit Schlüsselnamen, die Punkte enthalten
{
  "modules": {
    "ai.translation": "KI-Übersetzung",
    "content.processor": "Inhaltsverarbeitung"
  }
}

Sperren Sie diese Schlüssel mit:

{
  "lockedKeys": ["modules/ai.translation", "modules/content.processor"]
}

Mehrere Bucket-Typen

Verschiedene Dateiformate können unterschiedliche gesperrte Schlüssel haben:

{
  "buckets": {
    "json": {
      "include": ["locales/[locale].json"],
      "lockedKeys": ["config/engine", "system/component"]
    },
    "yaml": {
      "include": ["translations/[locale].yml"],
      "lockedKeys": ["service/name", "module/title"]
    }
  }
}

Jeder Bucket-Typ verwaltet seine eigene Liste gesperrter Schlüssel basierend auf der Inhaltsstruktur.