i18n.lock 是一个锁文件,用于存储源内容的 SHA-256 指纹。Lingo.dev CLI 会在每次运行时比对这些指纹,判断哪些字符串是新增或已修改的——只有这些内容会进入翻译流程,其余都会被跳过。
文件结构#
锁文件采用 YAML 格式:
yaml
version: 1
checksums:
a07974ea09011daa56f9df706530e442:
title: f8692d39317193acf0e2e47172703c46
description: g9703e40428204bdf1f3f58283814d57| 字段 | 说明 |
|---|---|
version | 锁文件 schema 版本。 |
checksums | 内容指纹映射。每个条目都会将源内容哈希映射到 key 哈希。 |
双哈希结构(内容哈希 + key 哈希)支持 key 重命名检测——当 key 被重命名但内容保持不变时,CLI 会保留现有翻译。
工作流程#
首次运行——为所有源内容创建包含指纹的锁文件:
bash
npx lingo.dev@latest run
# Creates i18n.lock后续运行——仅翻译增量内容:
bash
npx lingo.dev@latest run
# Compares against i18n.lock, translates only changes强制重新翻译——绕过锁文件,重新翻译全部内容:
bash
npx lingo.dev@latest run --force重建锁文件——根据当前源文件状态重新生成锁文件:
bash
npx lingo.dev@latest lockfile --force在解决合并冲突时,可使用 lockfile --force 重置锁文件。这个命令随时运行都很安全。
冻结校验——如果有任何内容需要翻译,则会直接失败(专为 CI/CD 设计):
bash
npx lingo.dev@latest run --frozen去重#
合并分支时,锁文件的 YAML 里可能会累积重复条目。CLI 会在每次加载时自动去重——同一 checksum 块下的重复 key 会保留最后一次出现的条目。如果清除了重复项,CLI 会记录对应数量。
所有会读取锁文件的命令都会执行去重:run、status、lockfile 等。
版本控制#
i18n.lock 必须与 locale 文件一起提交到你的代码仓库中。它是实现增量翻译的关键机制——没有它,每次运行都会重新翻译整个项目。
