dictionary.js

Qu'est-ce que le fichier dictionary.js ? Comment est-il utilisé ?

Introduction

dictionary.js est un fichier que le Compilateur Lingo.dev génère lors de la compilation. Il stocke les traductions de l'application dans un format qui peut être chargé efficacement lors de l'exécution.

Remarque : Toutes les modifications apportées au fichier dictionary.js doivent être validées dans le dépôt.

Exemple de fichier

Voici un exemple d'un fichier dictionary.js (très minimaliste) :

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...",
        },
      },
    },
  },
};

Pour une description complète des propriétés disponibles, consultez Propriétés du schéma.

Emplacement du fichier

Par défaut, le fichier dictionary.js est généré dans un répertoire src/lingo, relatif à l'emplacement de la configuration du compilateur (par exemple, un fichier vite.config.ts).

Pour savoir comment personnaliser cet emplacement, consultez Options du compilateur.

Chargement du dictionnaire

Le package lingo.dev fournit plusieurs fonctions loadDictionary. Ces fonctions sont responsables du chargement du dictionnaire pour la locale actuelle de l'utilisateur (basée sur la valeur actuelle du cookie de locale).

Chaque variante de la fonction est destinée à être utilisée dans différents environnements. Voici un exemple d'utilisation de la version côté client de la fonction :

<LingoProviderWrapper loadDictionary={(locale) => loadDictionary(locale)}>
  <App />
</LingoProviderWrapper>

Vous devriez uniquement utiliser les fonctions fournies pour charger le dictionnaire, plutôt que d'essayer de le charger manuellement.

Modification du dictionnaire

Bien que le fichier dictionary.js soit généré automatiquement, il est modifiable. Vous pouvez, par exemple, modifier manuellement une traduction en modifiant le contenu de la traduction.

Cela dit, si le contenu source change, la modification manuelle sera écrasée, il est donc généralement plus facile à maintenir d'utiliser l'attribut data-lingo-override.

Propriétés du schéma

Cette section décrit toutes les propriétés présentes dans un fichier dictionary.js.

version

Identifiant de version du schéma utilisé pour la vérification de compatibilité et les migrations futures.

  • Type: number
  • Obligatoire: Oui

files

Objet conteneur qui organise toutes les entrées de traduction par leurs chemins de fichiers source. Chaque clé représente un chemin relatif depuis la racine source (par exemple, "components/hero.tsx", "pages/home.jsx").

  • Type: object
  • Obligatoire: Oui

files[filePath].entries

Conteneur pour toutes les entrées de traduction découvertes dans le fichier source spécifique. Chaque clé est un identifiant basé sur l'AST qui identifie de manière unique le contenu traduisible dans le fichier.

  • Type: object
  • Obligatoire: Oui

files[filePath].entries[astKey].content

Associe les identifiants de locale à leurs chaînes traduites correspondantes. Contient des traductions pour toutes les locales configurées dans votre projet.

  • Type: object
  • Obligatoire: Oui

files[filePath].entries[astKey].hash

Hachage SHA-256 du contenu source original utilisé pour la détection des modifications et l'invalidation du cache. Lorsque le contenu source change, ce hachage change également, déclenchant une retraduction de l'entrée.

  • Type: string
  • Obligatoire: Oui