i18n.lock je lockfile, který ukládá SHA-256 otisky vašeho zdrojového obsahu. Lingo.dev CLI tyto otisky při každém spuštění porovnává, aby zjistilo, které řetězce jsou nové nebo upravené — jen ty pak vstoupí do překladového pipeline. Vše ostatní se přeskočí.
Struktura#
Lockfile používá formát YAML:
version: 1
checksums:
a07974ea09011daa56f9df706530e442:
title: f8692d39317193acf0e2e47172703c46
description: g9703e40428204bdf1f3f58283814d57| Pole | Popis |
|---|---|
version | Verze schématu lockfile. |
checksums | Mapa otisků obsahu. Každá položka mapuje hash zdrojového obsahu na hash klíče. |
Struktura se dvěma hashi (hash obsahu + hash klíče) umožňuje detekci přejmenování klíčů — CLI zachová existující překlady i v případě, že se klíč přejmenuje, ale jeho obsah zůstane stejný.
Workflow#
První spuštění — vytvoří lockfile s otisky veškerého zdrojového obsahu:
npx lingo.dev@latest run
# Creates i18n.lockDalší spuštění — přeloží jen změny:
npx lingo.dev@latest run
# Compares against i18n.lock, translates only changesVynucený opakovaný překlad — obejde lockfile a znovu přeloží vše:
npx lingo.dev@latest run --forceZnovuvytvoření lockfile — znovu sestaví lockfile podle aktuálního stavu vašich zdrojových souborů:
npx lingo.dev@latest lockfile --forcePomocí lockfile --force resetujete lockfile při řešení konfliktů při slučování. Tento příkaz můžete bezpečně spustit kdykoli.
Frozen verification — selže, pokud nějaký obsah vyžaduje překlad (navrženo pro CI/CD):
npx lingo.dev@latest run --frozenDeduplikace#
Při slučování větví se v YAML lockfile můžou nahromadit duplicitní položky. CLI je při každém načtení automaticky deduplikuje — duplicitní klíče v rámci stejného bloku kontrolního součtu vyřeší tak, že ponechá poslední výskyt. Pokud se duplicity odstraní, CLI jejich počet zapíše do log.
Deduplikace se spouští při všech příkazech, které čtou lockfile: run, status, lockfile a dalších.
Správa verzí#
i18n.lock musí být commitnutý do vašeho repozitáře spolu se soubory jazyk. Právě tento mechanismus umožňuje inkrementální překlad — bez něj by každé spuštění znovu přeložilo celý projekt.
