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