i18n.lock 锁文件
i18n.lock 是一个锁文件,用于跟踪内容校验和,以防止不必要的重新翻译并优化 Lingo.dev CLI 的性能。
i18n.lock 存储源内容和翻译键的校验和,以识别翻译运行之间的变化。因此,仅翻译新增或修改的内容,从而减少处理时间和翻译成本。
锁文件结构
i18n.lock 使用结构化的 YAML 格式来存储内容校验和:
version: 1
checksums:
a07974ea09011daa56f9df706530e442:
key: f8692d39317193acf0e2e47172703c46
b18975fb19122ebb67g0ef817641f553:
key: g9703e40428204bdf1f3f58283814d57
配置元素:
version
— 用于迁移兼容性的锁文件架构版本checksums
— 内容校验和与键校验和的映射,用于跟踪翻译内容checksums.[content-hash]
— 源内容的 SHA-256 哈希值,作为唯一标识符checksums.[content-hash].key
— 翻译键的 SHA-256 哈希值,用于检测键重命名
Lingo.dev CLI 在检测到相同内容但键校验和不同的情况下,会保留现有翻译。不会发生重新翻译,从而在允许键组织更改的同时保持翻译一致性。阅读更多关于键重命名的内容。
工作流集成
i18n.lock 在翻译工作流中自动运行:
首次运行 — 创建包含初始内容校验和的锁文件:
npx lingo.dev@latest i18n
# 创建包含所有源内容校验和的 i18n.lock
重新创建锁文件 — 从头开始重新创建锁文件:
npx lingo.dev@latest lockfile --force
# 重新创建包含所有源内容校验和的 i18n.lock
提示:在解决合并冲突时,可以安全地使用此命令将锁文件重置为其真实状态。
后续运行 — 仅处理更改的内容:
npx lingo.dev@latest i18n
# 将当前内容与 i18n.lock 进行比较
# 仅翻译新增或修改的内容
强制重新翻译 — 绕过锁文件优化,重新翻译所有内容,并重新创建锁文件:
npx lingo.dev@latest i18n --force
# 忽略 i18n.lock 并重新翻译所有内容
冻结验证 — 验证翻译的完整性:
npx lingo.dev@latest i18n --frozen
# 如果有任何内容需要翻译,则会失败
# 用于 CI/CD 以确保翻译完整
版本控制集成
i18n.lock 必须与翻译文件一起提交到版本控制系统。
锁文件是 Lingo.dev CLI 增量翻译系统的重要组成部分,使其适用于任何规模的项目。