dictionary.js
Was ist die dictionary.js-Datei? Wie wird sie verwendet?
Einführung
dictionary.js
ist eine Datei, die der Lingo.dev Compiler zur Build-Zeit generiert. Sie speichert die Übersetzungen der Anwendung in einem Format, das zur Laufzeit effizient geladen werden kann.
Hinweis: Alle Änderungen an der dictionary.js
-Datei sollten in das Repository übertragen werden.
Beispieldatei
Dies ist ein Beispiel einer (sehr minimalen) dictionary.js
-Datei:
export default {
version: 0.1,
files: {
"components/hero.tsx": {
entries: {
"3/declaration/body/0/argument/1/1": {
content: {
en: "Welcome to our app",
es: "Bienvenido a nuestra aplicación",
},
hash: "a1b2c3d4e5f6...",
},
},
},
},
};
Für eine vollständige Beschreibung der verfügbaren Eigenschaften, siehe Schema-Eigenschaften.
Dateispeicherort
Standardmäßig wird die dictionary.js
-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.
Laden des Wörterbuchs
Das Paket lingo.dev
stellt mehrere loadDictionary
-Funktionen bereit. Diese Funktionen sind dafür verantwortlich, das Wörterbuch für die aktuelle Sprache des Benutzers zu laden (basierend auf dem aktuellen Wert des Locale-Cookies).
Jede Variante der Funktion ist für den Einsatz in unterschiedlichen Umgebungen vorgesehen. Hier ist ein Beispiel für die Verwendung der clientseitigen Version der Funktion:
<LingoProviderWrapper loadDictionary={(locale) => loadDictionary(locale)}>
<App />
</LingoProviderWrapper>
Sie sollten nur die bereitgestellten Funktionen zum Laden des Wörterbuchs verwenden, anstatt zu versuchen, das Wörterbuch manuell zu laden.
Bearbeiten des Wörterbuchs
Obwohl die dictionary.js
-Datei automatisch generiert wird, ist sie bearbeitbar. Sie können beispielsweise eine Übersetzung manuell ändern, indem Sie den Übersetzungsinhalt bearbeiten.
Allerdings wird die manuelle Bearbeitung überschrieben, wenn sich der Quellinhalt ändert. Daher ist es in der Regel wartungsfreundlicher, das Attribut data-lingo-override zu verwenden.
Schema-Eigenschaften
Dieser Abschnitt beschreibt alle Eigenschaften, die in einer dictionary.js
-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 Übersetzungseinträge 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].entries
Container für alle Übersetzungseinträge, die in der spezifischen Quelldatei gefunden wurden. Jeder Schlüssel ist ein AST-basierter Identifikator, der übersetzbare Inhalte innerhalb der Datei eindeutig identifiziert.
- Typ:
object
- Erforderlich: Ja
files[filePath].entries[astKey].content
Ordnet Locale-Kennungen ihren entsprechenden übersetzten Zeichenketten zu. Enthält Übersetzungen für alle konfigurierten Locales in Ihrem Projekt.
- Typ:
object
- Erforderlich: Ja
files[filePath].entries[astKey].hash
SHA-256-Hash des ursprünglichen Quellinhalts, der für die Erkennung von Änderungen und die Invalidierung des Cache verwendet wird. Wenn sich der Quellinhalt ändert, ändert sich dieser Hash und löst eine Neuübersetzung des Eintrags aus.
- Typ:
string
- Erforderlich: Ja