meta.json

Was ist die meta.json-Datei? Wie wird sie verwendet?

Einführung

meta.json ist eine Datei, die der Lingo.dev Compiler zur Build-Zeit generiert. Sie erfasst alle übersetzbaren Inhalte, die in einer React-Anwendung gefunden wurden, und dient als Inventar, das die Build-Zeit-Analyse mit der Laufzeit-Übersetzung verbindet.

Hinweis: Alle Änderungen an der meta.json-Datei sollten in das Repository übernommen werden.

Beispieldatei

Dies ist ein Beispiel einer (sehr minimalen) meta.json-Datei:

{
  "version": 0.1,
  "files": {
    "components/hero.tsx": {
      "scopes": {
        "3/declaration/body/0/argument/1/1": {
          "type": "element",
          "hash": "a1b2c3d4e5f6...",
          "context": "",
          "skip": false,
          "overrides": {},
          "content": "Welcome to our app"
        }
      }
    }
  }
}

Um zu verstehen, was alle Eigenschaften bedeuten, siehe Schema-Eigenschaften.

Dateispeicherort

Standardmäßig wird die meta.json-Datei in ein Verzeichnis src/lingo ausgegeben, relativ zum Speicherort der Compiler-Konfiguration (z.B. einer vite.config.ts-Datei).

Um zu erfahren, wie dieser Speicherort angepasst werden kann, siehe Compiler-Optionen.

Schema-Eigenschaften

Dieser Abschnitt beschreibt alle Eigenschaften, die in einer meta.json-Datei zu finden sind.

version

Schema-Versionskennung, die für Kompatibilitätsprüfungen und zukünftige Migrationen verwendet wird.

  • Typ: number
  • Erforderlich: Ja

files

Container-Objekt, das alle übersetzbaren Bereiche nach ihren Quelldateipfaden organisiert. Jeder Schlüssel repräsentiert einen relativen Pfad vom Quellverzeichnis (z.B. "components/hero.tsx", "pages/home.jsx").

  • Typ: object
  • Erforderlich: Ja

files[filePath].scopes

Container für alle übersetzbaren Inhalte, die in der spezifischen Quelldatei gefunden wurden. Jeder Schlüssel ist eine AST-basierte Kennung, die ein Stück übersetzbaren Inhalt innerhalb der Datei eindeutig identifiziert.

  • Typ: object
  • Erforderlich: Ja

files[filePath].scopes[astKey].type

Gibt an, ob der übersetzbare Inhalt aus dem Inhalt eines JSX-Elements oder dem Wert eines JSX-Attributs stammt.

  • Typ: "element" | "attribute"
  • Erforderlich: Ja

files[filePath].scopes[astKey].hash

SHA-256-Hash des Quellinhalts, der für die Erkennung von Änderungen verwendet wird. Wenn sich der Quellinhalt ändert, ändert sich dieser Hash und zeigt an, dass eine Neuübersetzung erforderlich sein könnte.

  • Typ: string
  • Erforderlich: Ja

files[filePath].scopes[astKey].context

Kontextuelle Informationen, die Übersetzern helfen, den Zweck oder die Position des Inhalts zu verstehen.

  • Typ: string
  • Erforderlich: Nein

files[filePath].scopes[astKey].skip

Flag, das angibt, ob dieser Inhalt von der Übersetzung ausgeschlossen werden soll.

  • Typ: boolean
  • Erforderlich: Ja

files[filePath].scopes[astKey].overrides

Lokalisierungsspezifische Übersetzungsüberschreibungen, die den normalen Übersetzungsprozess umgehen. Nützlich für Markennamen, technische Begriffe oder benutzerdefinierte Übersetzungen.

  • Typ: object
  • Erforderlich: Ja

files[filePath].scopes[astKey].content

Der eigentliche Quelltext, der übersetzt werden muss, extrahiert aus Ihren React-Komponenten.

  • Typ: string
  • Erforderlich: Ja