i18n.lock은 소스 콘텐츠의 SHA-256 지문을 저장하는 lockfile입니다. Lingo.dev CLI는 실행할 때마다 이 지문을 비교해 어떤 문자열이 새로 추가되었거나 변경되었는지 판단합니다. 해당 문자열만 번역 파이프라인에 들어가고, 나머지는 모두 건너뜁니다.
구조#
이 lockfile은 YAML 형식을 사용합니다:
version: 1
checksums:
a07974ea09011daa56f9df706530e442:
title: f8692d39317193acf0e2e47172703c46
description: g9703e40428204bdf1f3f58283814d57| 필드 | 설명 |
|---|---|
version | lockfile 스키마 버전입니다. |
checksums | 콘텐츠 지문 맵입니다. 각 항목은 소스 콘텐츠 해시를 키 해시에 매핑합니다. |
이중 해시 구조(콘텐츠 해시 + 키 해시) 덕분에 키 이름 변경 감지가 가능합니다. 키 이름이 바뀌어도 콘텐츠가 같다면 CLI가 기존 번역을 그대로 유지합니다.
워크플로#
첫 실행 - 모든 소스 콘텐츠의 지문을 포함한 lockfile을 생성합니다:
npx lingo.dev@latest run
# Creates i18n.lock이후 실행 - 변경된 부분만 번역합니다:
npx lingo.dev@latest run
# Compares against i18n.lock, translates only changes강제 재번역 - lockfile을 무시하고 전체를 다시 번역합니다:
npx lingo.dev@latest run --forcelockfile 재생성 - 현재 소스 파일 상태를 기준으로 lockfile을 다시 만듭니다:
npx lingo.dev@latest lockfile --force병합 충돌을 해결하는 중 lockfile을 초기화하려면 lockfile --force을 사용하세요. 언제 실행해도 안전합니다.
고정 검증 - 번역이 필요한 콘텐츠가 하나라도 있으면 실패합니다(CI/CD용):
npx lingo.dev@latest run --frozen중복 제거#
브랜치를 병합할 때 lockfile YAML에 중복 항목이 쌓일 수 있습니다. CLI는 파일을 불러올 때마다 자동으로 중복을 제거하며, 동일한 체크섬 블록 아래 중복된 키는 마지막 항목을 남기는 방식으로 처리합니다. 중복이 제거되면 CLI가 그 개수를 로그에 남깁니다.
중복 제거는 lockfile을 읽는 모든 명령에서 실행됩니다: run, status, lockfile 등.
버전 관리#
i18n.lock은 로캘 파일과 함께 리포지토리에 커밋해야 합니다. 이 파일이 있어야 증분 번역이 가능하며, 없으면 실행할 때마다 전체 프로젝트를 다시 번역하게 됩니다.
