Fichier de verrouillage i18n.lock
i18n.lock est un fichier de verrouillage qui suit les sommes de contrôle du contenu pour éviter les retraductions inutiles et optimiser les performances de Lingo.dev CLI.
i18n.lock stocke les sommes de contrôle du contenu source et des clés de traduction pour identifier ce qui a changé entre les exécutions de traduction. Par conséquent, seul le contenu nouveau ou modifié est traduit, réduisant ainsi le temps de traitement et les coûts de traduction.
Structure du fichier de verrouillage
i18n.lock utilise un format YAML structuré pour stocker les sommes de contrôle du contenu :
version: 1
checksums:
a07974ea09011daa56f9df706530e442:
key: f8692d39317193acf0e2e47172703c46
b18975fb19122ebb67g0ef817641f553:
key: g9703e40428204bdf1f3f58283814d57
Éléments de configuration :
version— Version du schéma du fichier de verrouillage pour la compatibilité de migrationchecksums— Carte des sommes de contrôle du contenu vers les sommes de contrôle des clés qui suit le contenu traduitchecksums.[content-hash]— Hash SHA-256 du contenu source qui sert d'identifiant uniquechecksums.[content-hash].key— Hash SHA-256 de la clé de traduction qui permet la détection du renommage de clé
Lingo.dev CLI préserve les traductions existantes lorsqu'il détecte un contenu identique avec des sommes de contrôle de clés différentes. Aucune retraduction n'a lieu, maintenant la cohérence de la traduction tout en permettant des changements d'organisation des clés. En savoir plus sur le renommage de clés.
Intégration du flux de travail
i18n.lock fonctionne automatiquement pendant les flux de travail de traduction :
Première exécution — Crée le fichier de verrouillage avec les sommes de contrôle initiales du contenu :
npx lingo.dev@latest run
# Creates i18n.lock with all source content checksums
Recréer le fichier de verrouillage — Recrée le fichier de verrouillage à partir de zéro :
npx lingo.dev@latest lockfile --force
# Recreates i18n.lock with all source content checksums
Astuce : vous pouvez utiliser cette commande en toute sécurité pour réinitialiser le fichier de verrouillage à son état réel lors de la résolution de conflits de fusion. La déduplication s'exécute également automatiquement à chaque chargement ; voir Déduplication du fichier de verrouillage.
Exécutions suivantes — Traite uniquement le contenu modifié :
npx lingo.dev@latest run
# Compares current content against i18n.lock
# Translates only new or modified content
Forcer la retraduction — Contourne l'optimisation du fichier de verrouillage et retraduit tout le contenu, recréant le fichier de verrouillage :
npx lingo.dev@latest run --force
# Ignores i18n.lock and retranslates all content
Vérification figée — Valide l'exhaustivité de la traduction :
npx lingo.dev@latest run --frozen
# Fails if any content requires translation
# Used in CI/CD to ensure complete translations
Déduplication du fichier de verrouillage
Le YAML du fichier de verrouillage peut contenir des clés de traduction en double sous le même bloc de somme de contrôle. Les analyseurs YAML standard ne conservent que la dernière occurrence, ce qui peut entraîner une perte de suivi et des conflits de fusion difficiles à résoudre manuellement.
Lingo.dev CLI est conçu pour un état de fichier de verrouillage cohérent. Il déduplique automatiquement le fichier de verrouillage à chaque chargement. Les clés en double sous un bloc de somme de contrôle sont détectées et supprimées ; la dernière occurrence est conservée (dernière écriture gagnante, correspondant au comportement de fusion courant). Par conséquent, le fichier de verrouillage reste cohérent en interne et correspond à ce qui est réécrit.
Quand cela s'exécute — La déduplication s'exécute à chaque chargement, y compris :
npx lingo.dev@latest runnpx lingo.dev@latest pullnpx lingo.dev@latest pushnpx lingo.dev@latest statusnpx lingo.dev@latest lockfile
Si des doublons sont supprimés, le CLI enregistre un message tel que : Removed 3 duplicate entries from i18n.lock. Aucune action utilisateur n'est requise ; l'étape est idempotente et peut être exécutée en toute sécurité à chaque chargement. Pour les problèmes de fusion difficiles ou récurrents, vous pouvez toujours utiliser npx lingo.dev@latest lockfile --force pour recréer le fichier de verrouillage à partir de zéro.
Exemple — Après avoir fusionné deux branches qui ont toutes deux modifié les mêmes clés :
version: 1
checksums:
a07974ea09011daa56f9df706530e442:
greeting.hello: abc123
greeting.goodbye: def456
greeting.hello: xyz789
button.submit: ghi012
button.submit: jkl345
Au chargement, le CLI déduplique et conserve la dernière occurrence de chaque clé :
version: 1
checksums:
a07974ea09011daa56f9df706530e442:
greeting.goodbye: def456
greeting.hello: xyz789
button.submit: jkl345
Deux entrées en double sont supprimées.
Intégration du contrôle de version
i18n.lock doit être commité dans le contrôle de version avec les fichiers de traduction.
Le fichier de verrouillage est un élément essentiel du système de traduction incrémentale de Lingo.dev CLI, ce qui le rend pratique pour les projets de toute taille.