GitHub 中文化插件与Git钩子:在提交前自动运行翻译测试
你是否遇到过这样的困扰:提交翻译更新后才发现部分词条翻译错误,导致插件在特定页面显示异常?本文将介绍如何通过Git钩子在提交前自动运行翻译测试,确保GitHub中文化插件的翻译质量。读完本文,你将学会配置本地化测试环境、创建自动化测试脚本,以及设置Git钩子实现提交前的自动校验。
插件工作原理与翻译验证痛点
GitHub中文化插件通过静态词库和正则规则实现界面元素的实时翻译。核心翻译逻辑在main.user.js中实现,通过transText函数匹配locals.js中的翻译词条。然而,手动维护大量翻译词条时,容易出现以下问题:
- 繁简转换错误(如"合并"误写为"併合")
- 正则表达式冲突导致部分页面翻译失效
- 新增词条未覆盖所有页面场景
传统的验证方式需要手动刷新页面检查,效率低下且容易遗漏。通过自动化测试和Git钩子可以将错误拦截在提交阶段。
本地化翻译测试环境搭建
1. 项目结构与关键文件
项目核心文件结构如下:
github-chinese/
├── locals.js # 主翻译词库
├── locals_zh-TW.js # 繁体中文词库
├── main.user.js # 插件主逻辑
├── t2s_rules.conf # 繁简转换规则
└── script/
└── ci_commit_with_signature.sh # 提交脚本
其中t2s_rules.conf定义了繁简转换规则,包含普通替换和正则替换两种模式:
# 普通替换
zh-CN zh-TW
只读 只讀
# 正则替换
REGEX:(?<!合)併為 並為
2. 测试环境配置步骤
-
克隆项目仓库:
git clone https://gitcode.com/gh_mirrors/gi/github-chinese -
安装依赖工具:
sudo apt install -y jq dos2unix # 依赖工具在[apt-packages.txt](https://link.gitcode.com/i/b808aecdd70de20c3da85f605fbf64e4)中定义 -
配置本地调试模式(参考README.md中的"本地调试"章节):
- 修改Tampermonkey脚本引用路径为本地文件
- 启用"允许访问文件网址"权限
翻译测试自动化脚本实现
1. 测试脚本功能设计
创建script/test_translation.sh脚本,实现以下功能:
- 验证繁简转换规则正确性
- 检查正则表达式语法有效性
- 测试核心翻译函数对关键词条的处理
2. 关键测试用例实现
#!/bin/bash
# 测试繁简转换规则
function test_t2s_rules() {
echo "Testing traditional-simplified conversion rules..."
local errors=0
# 检查规则文件格式
if ! grep -q "REGEX:" t2s_rules.conf; then
echo "❌ 未找到正则转换规则"
((errors++))
fi
# 测试关键转换是否正确
local test_cases=(
"合并,合併" # 正确转换
"并发,並發" # 正则匹配测试
"干净,乾淨" # 特殊规则测试
)
for case in "${test_cases[@]}"; do
local input=$(echo $case | cut -d',' -f1)
local expected=$(echo $case | cut -d',' -f2)
# 实际转换逻辑测试...
done
return $errors
}
# 测试正则表达式有效性
function test_regex_rules() {
echo "Testing regex translation rules..."
# 从main.user.js中提取所有正则规则并验证
grep -oP 'new RegExp\(".*?"' main.user.js | while read -r regex; do
# 正则语法验证...
done
}
# 主测试流程
test_t2s_rules || exit 1
test_regex_rules || exit 1
echo "✅ All translation tests passed"
Git钩子配置与自动化验证流程
1. 提交前钩子实现
在.git/hooks/pre-commit中添加以下脚本:
#!/bin/sh
# 运行翻译测试
if ! script/test_translation.sh; then
echo "❌ Translation tests failed. Please fix errors before commit."
exit 1
fi
# 检查词库文件格式
if ! jq . locals.js >/dev/null 2>&1; then
echo "❌ Invalid JSON format in locals.js"
exit 1
fi
echo "✅ Pre-commit checks passed"
2. 完整工作流程
实际应用与常见问题解决
1. 钩子不执行的排查步骤
如果提交时未触发测试,可能原因包括:
-
钩子文件没有可执行权限:
chmod +x .git/hooks/pre-commit -
使用了
--no-verify参数跳过钩子:git commit --no-verify # 应避免使用此参数
2. 测试脚本优化建议
- 增量测试:只检查修改过的词条
- 集成preview/目录中的截图进行视觉对比
- 添加自动修复功能(如自动修正简单的繁简转换错误)
总结与进阶方向
通过本文介绍的方法,我们实现了翻译测试的自动化和提交前的自动验证,有效降低了翻译错误率。后续可以从以下方向进一步优化:
- 将测试集成到CI流程,使用script/ci_commit_with_signature.sh实现自动签名提交
- 开发交互式翻译辅助工具,可视化展示翻译覆盖范围
- 引入AI辅助翻译,自动生成候选词条并标记需要人工审核的内容
希望本文能帮助你构建更可靠的GitHub中文化插件维护流程。如有疑问,欢迎通过项目README.md中的反馈渠道提交issue。
如果你觉得本文有用,请点赞、收藏并关注项目更新,下期将介绍如何利用GitHub Actions实现翻译词条的自动更新。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



