如何将翻译结果推送到在线协作平台供校对
解读
面试官真正想考察的是“在 Grunt 体系里,如何把构建产物(翻译结果)自动、安全、可追溯地同步到远程协作平台,并触发校对流程”。
国内主流场景通常对接语雀、飞书多维表格、腾讯文档、钉钉群文件、石墨文档、企业微信微盘等 SaaS,或自托管的Git 私有仓库、MinIO、阿里云 OSS、腾讯云 COS。
答题时要体现三点:
- 产物标准化(目录、命名、版本号、校验和)
- 鉴权与传输安全(HTTPS、STS 临时密钥、Webhook 签名)
- 触发校对(PR / 评论 / 飞书机器人 / 钉钉群机器人)
同时需兼顾国内网络环境(GitHub 不稳定、公司内网需代理)和合规要求(代码、翻译数据不出境)。
知识点
- grunt-contrib-copy / grunt-zip:把翻译结果(JSON、PO、XLIFF、Markdown)打成版本化压缩包
- grunt-http-upload / grunt-ssh-deploy:基于 HTTP Put 或 SCP 直传国内 OSS/COS,支持 STS 临时凭证
- grunt-git-commit / grunt-git-push:将结果推到内网 GitLab/Gitea 仓库,通过 Merge Request 触发校对
- grunt-exec:调用语雀 OpenAPI(curl)创建知识库文档,自动@校对人员
- grunt-dingtalk-webhook / grunt-feishu-bot:上传完成后发送 Markdown 卡片,附带「一键校对」跳转链接
- grunt-json-timestamp:在产物中注入构建时间、Git commit、CI 序号,保证可追溯
- 并发与重试:使用 grunt-concurrent 和 grunt-retry 解决国内弱网丢包
- 缓存与增量:grunt-newer 只推送变更的语种文件,节省流量
- 合规:敏感词过滤(grunt-text-replace 对接内部敏感词服务),确保翻译内容先审后传
答案
-
产物准备
在 Gruntfile 中配置grunt-contrib-copy把dist/locales/下的*.json按{lang}/{namespace}.json结构拷贝到.tmp/i18n/;再用grunt-zip打时间戳包i18n_20250618_1430.zip,并在包内放置checksum.txt(sha256)。 -
鉴权与上传
采用阿里云 OSS 分片上传方案:- 在
grunt.initConfig里注册grunt-aliyun-oss任务,使用公司 STS 服务换取AccessKeyId/Secret/Token,过期时间 15 min,避免明文写密钥 - 配置
bucket: my-corp-i18n,region: oss-cn-shanghai,secure: true,走内网 Endpoint 节省流量 - 上传路径
i18n/{project}/{branch}/i18n_20250618_1430.zip,并设置 HTTP 头Content-Disposition: attachment防止浏览器直接预览
- 在
-
触发校对
上传成功后,利用grunt-exec调用语雀 OpenAPI:curl -X POST https://www.yuque.com/api/v2/repos/my-corp/i18n/docs \ -H "X-Auth-Token: ${YUQUE_TOKEN}" \ -d '{"title": "待校对 i18n_20250618_1430", "public": 0, "slug": "i18n_20250618_1430"}'返回的
id再拼接@校对组用户 ID,发送飞书群机器人卡片:{ "msg_type": "post", "content": { "post": { "zh_cn": { "title": "新的翻译包已推送", "content": [[{"tag": "a", "text": "立即校对", "href": "https://www.yuque.com/my-corp/i18n/i18n_20250618_1430"}]] } } } } -
完整任务链
grunt.registerTask('i18n:deliver', [ 'clean:tmp', 'copy:i18n', 'zip:i18n', 'checksum', 'aliyun_oss:upload', 'exec:yuqueCreate', 'feishuBot:notify' ]);在 CI(如 GitLab Runner 或 Jenkins,部署于公司内网)里执行
grunt i18n:deliver,全程零人工干预。 -
回滚与审计
若校对不通过,可在语雀文档评论/reject,GitLab CI 监听语雀 Webhook,自动打回滚标签,回退到上一版本 ZIP;所有操作日志写入logs/i18n-deliver.log,保留 90 天备审。
拓展思考
- 多环境隔离:测试环境走
oss-cn-shanghai-internal,生产环境走oss-cn-beijing-financial(金融合规区),通过grunt-env区分 - 增量 diff:利用
grunt-xlsx把新旧 JSON 转成 Excel 高亮差异,再上传到石墨文档,方便译员快速定位 - 双向同步:校对完成后,语雀文档导出 Excel →
grunt-excel-to-json→ 自动提 PR 回项目,形成闭环 - 性能优化:ZIP 前用
grunt-brotli预压缩,OSS 上传时带上Content-Encoding: br,减少 30% 流量 - 安全加固:将
YUQUE_TOKEN、OSS_STS_ROLE_ARN存入公司 Vault,通过grunt-vault动态拉取,避免落盘 - 监控告警:上传失败或飞书机器人返回非 200 时,触发
grunt-sentry上报异常,绑定值周译员电话,5 min 内响应