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