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