跳转至主要内容
i18n Doctor

i18n Doctor:一键获取完整的翻译健康报告

运行更好的i18n医生,从五个维度分析您的整个代码库——代码质量、翻译覆盖率、占位符准确性、孤立键以及CDN同步——并获取0-100的健康评分及可操作的诊断报告。

$ better-i18n doctor
better-i18n · 国际化诊断报告
████████████████░░░░82 / 100A
PASSED (threshold: 70)
Coverage95(3 issues)
Quality88(2 issues)
Code72(8 issues)
Structure100(clean)
Performance91(1 issue)

单次通过中的五层分析

医生同时运行代码扫描、覆盖率分析、质量验证、性能审计和CDN同步检查——所有操作均以统一评分呈现。

代码 — 硬编码字符串检测

基于AST的扫描可检测所有未用t()包裹的用户可见字符串。涵盖JSX文本、属性、三元本地化逻辑、提示消息及字符串变量。

覆盖范围 — 缺失的翻译

将源语言环境中的键与每个目标语言环境进行比对。若目标语言环境中存在缺失的键,将报告其精确的命名空间和路径。

质量 — 占位符不匹配

验证插值占位符在所有区域设置中保持一致。支持命名{}, 双花括号{{}}, printf%s, 模板${}以及位置{0}等格式。

性能 — 孤儿键检测

检测翻译文件中存在但代码中从未引用的键。孤立键会增加有效负载大小并产生维护债务。

同步 — CDN 比较

将您代码中提取的密钥与CDN中发布的密钥进行比对。在问题影响生产环境之前,提前发现远程缺失密钥和未使用远程密钥的情况。

您翻译健康的单一评分

医生根据检测结果计算出0到100分的评分。每个错误扣3.0分,而每条规则的警告贡献上限为20分——这能防止某条规则因数千条警告导致整体评分归零。

默认通过阈值为70分(B级)。使用--ci参数可使低于此阈值的构建失败,或先使用--report参数建立基准线,再强制执行评分规则。

评分公式
score = 100 - (errors × 3.0) - Σ min(rule_warnings × 0.15, 20)

等级阈值

A+≥ 90
通行证
A≥ 80
通行证
B≥ 70
通行证
C≥ 50
失败
F< 50
失败

CI/CD集成——在发布前拦截劣质翻译

在 CI 管道中添加 Doctor,确保每次推送都能捕获翻译回归问题。GitHub Actions 中的自动 OIDC 认证意味着无需管理任何密钥。

GitHub Actions 与 OIDC

使用 GitHub Actions OIDC 实现无需 API 密钥的自动认证。只需添加 id-token: write 权限,并运行 doctor --ci --report 命令。

阈值门控

设置通过阈值(默认:70),当分数低于该阈值时构建失败。使用 --report 开始跟踪,随后通过 --ci 强制执行。

机器可读JSON

使用 --format json 参数生成结构化输出,可将其通过管道传输至 jq 工具、自定义仪表板或部署管道中的下游自动化流程。

仪表板报告

使用 --report 参数将结果上传至 Better i18n 仪表板,以实现历史追踪、趋势分析,并让整个团队能够查看国际化健康状况。

# GitHub Actions example
- run: npx @better-i18n/cli doctor --ci --report

何时使用哪个命令

Doctor 是综合性选项。当您需要特定检查或希望在提交前钩子中获得更快的反馈时,请使用专注命令。

医生

完整健康评分,包含五层分析——您项目国际化状态的唯一可信数据源。

扫描

专注于硬编码字符串检测。支持通过--staged参数用于预提交钩子。

检查

交互式检查工具,用于检测缺失或未使用的翻译键,并提供引导式提示。

同步

完整的本地与远程比较,同时显示缺失和未使用的键。

专为真实世界的国际化工作流而打造

健康评分 0–100

单项评分附带分类细分及CI通过/失败阈值。追踪翻译质量随时间的变化趋势。

词法作用域追踪

智能命名空间检测,同时适用于useTranslations和getTranslations。每次t()调用都会映射到正确的命名空间。

服务器组件支持

全面支持 Next.js App Router 的异步服务器函数。服务器端的 getTranslations 调用将被检测并审计。

可配置规则

在 i18n.config.ts 中禁用或降低规则级别。根据项目需求将规则设置为 "error"、"warning" 或 "off"。

智能过滤

自动忽略CSS类名、URL、导入路径和开发者常量。仅保留可操作结果。

详细审计日志

使用 --verbose 选项实现深度透明。提供作用域摘要、计时信息和命名空间解析跟踪以供调试。

发货前了解您的翻译健康状况

运行一次better-i18n doctor来获取基准数据。将其加入持续集成流程,从此杜绝缺失翻译的发布。