Hugo仓库i18n键管理:求荐识别清理未使用/重复键的工具
Hugo i18n未使用/重复键清理方案
一、自动识别工具与扩展方案
- Hugo内置检查:执行
hugo --printI18NWarnings命令,构建时会输出未被模板调用的i18n键,但默认只覆盖layouts目录,需要配合自定义脚本补充content和data文件的扫描。 - 扩展现有JS脚本:针对不同目录的文件格式调整正则,覆盖所有i18n引用场景:
- content目录(Markdown/HTML):匹配短代码格式的引用,比如
{{< t "keyID" >}}或{{% t "keyID" %}},正则可写为{{<\s*t\s*['"]([^'"]+)['"]\s*>}}和{{%\s*t\s*['"]([^'"]+)['"]\s*%}},兼容带参数的写法(如{{< t "keyID" "param" >}})。 - data目录(YAML/TOML/JSON):匹配模板语法的引用,比如YAML中的
label: "{{ T "keyID" }}",正则用{{\s*T\s*['"]([^'"]+)['"]\s*}},同时兼容单引号和双引号的字符串写法。
- content目录(Markdown/HTML):匹配短代码格式的引用,比如
- 第三方工具辅助:使用
i18n-unused工具,配置扫描路径包含content、layouts、data三个目录,它能自动识别多类型文件中的i18n引用,生成未使用键的清单,部分版本支持自动清理(操作前务必备份i18n文件)。
二、重复键处理方法
- 提取所有i18n文件中的键:用脚本遍历i18n目录下的YAML/TOML/JSON文件,将键和对应翻译内容整理为键值对字典。
- 统计重复键:对比字典中的键,标记出现多次的条目,结合Hugo的i18n优先级规则(语言专属目录下的文件优先级高于根目录),保留有效翻译,删除冗余重复的键。
- 合并相同翻译的键:如果多个键对应完全相同的翻译,可以考虑合并为一个键,同时替换所有引用位置的旧键。
三、实操流程建议
- 第一步:备份所有i18n文件,防止误操作丢失数据。
- 第二步:用扩展后的脚本扫描三个目录,收集所有已使用的i18n键,存入一个集合。
- 第三步:遍历i18n文件,逐一对比集合,移除不在集合内的未使用键。
- 第四步:运行
hugo build测试,检查是否有缺失i18n键的报错,确保网站功能正常。 - 第五步:处理重复键,完成后再次测试验证翻译显示无误。
内容的提问来源于stack exchange,提问作者Monish
相关产品推荐
相关产品推荐

