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 增量翻译系统的重要组成部分,使其适用于任何规模的项目。