i18n.lock Lockfile

i18n.lock — это файл блокировки, который отслеживает контрольные суммы контента, чтобы предотвратить ненужные переводы и оптимизировать производительность Lingo.dev CLI.

i18n.lock хранит контрольные суммы исходного контента и ключей перевода, чтобы определить, что изменилось между запусками перевода. В результате переводится только новый или изменённый контент, что сокращает время обработки и затраты на перевод.

Структура файла блокировки

i18n.lock использует структурированный формат YAML для хранения контрольных сумм контента:

version: 1
checksums:
  a07974ea09011daa56f9df706530e442:
    key: f8692d39317193acf0e2e47172703c46
  b18975fb19122ebb67g0ef817641f553:
    key: g9703e40428204bdf1f3f58283814d57

Элементы конфигурации:

  • version — версия схемы lockfile для совместимости при миграции
  • checksums — карта контрольных сумм контента и ключевых контрольных сумм, отслеживающая переведённый контент
  • checksums.[content-hash] — хэш SHA-256 исходного контента, служащий уникальным идентификатором
  • checksums.[content-hash].key — хэш SHA-256 ключа перевода, позволяющий обнаруживать переименование ключей

CLI Lingo.dev сохраняет существующие переводы, если обнаруживает идентичный контент с разными контрольными суммами ключей. Перевод не выполняется повторно, что обеспечивает согласованность переводов при изменении организации ключей. Подробнее читайте о переименовании ключей.

Интеграция в рабочий процесс

i18n.lock работает автоматически в процессе перевода:

Первый запуск — создаёт файл блокировки с начальными контрольными суммами контента:

npx lingo.dev@latest i18n

# Создаёт i18n.lock со всеми контрольными суммами исходного контента

Пересоздание файла блокировки — пересоздаёт файл блокировки с нуля:

npx lingo.dev@latest lockfile --force

# Пересоздаёт i18n.lock со всеми контрольными суммами исходного контента

Совет: Вы можете безопасно использовать эту команду для сброса файла блокировки в его исходное состояние при разрешении конфликтов слияния.

Последующие запуски — обрабатывают только изменённый контент:

npx lingo.dev@latest i18n

# Сравнивает текущий контент с i18n.lock

# Переводит только новый или изменённый контент

Принудительный повторный перевод — Обходит оптимизацию lockfile и повторно переводит весь контент, создавая новый lockfile:

npx lingo.dev@latest i18n --force

# Игнорирует i18n.lock и повторно переводит весь контент

Проверка замороженного состояния — Проверяет полноту перевода:

npx lingo.dev@latest i18n --frozen

# Завершается с ошибкой, если какой-либо контент требует перевода

# Используется в CI/CD для обеспечения полноты переводов

Интеграция с системой контроля версий

i18n.lock должен быть добавлен в систему контроля версий вместе с файлами перевода.

Lockfile является важной частью системы инкрементального перевода Lingo.dev CLI, что делает её удобной для проектов любого размера.