英文站订单页出现“order.paid”“invoice.download”两处原始 key,用户截图发到支持邮箱,当天 5 封。乍看像缓存或者权限的锅,追下去往往不是。
i18next.t('order.paid', { defaultValue: 'Payment completed' });
node scripts/check-i18n.js --base en --target zh
追下去是这么回事:缺词时库返回 key 本身,模板照原样渲染,看起来像代码泄露。语言包比页面晚发一个版本,两个新 key 没进 en 文件。构建时没有做 key 完整性校验。
「缺翻译回退 key」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。
偶发问题先统计频率,一小时几次和一天一次,查法完全不同。改完顺手把文档补一句,省得下次自己重新推一遍。
监控和日志的时间要对上,时区不一致会多绕很大一圈。
具体做法是,缺词统一返回兜底文案 不暴露 key;构建阶段比对各语言 key 集合 缺失就失败;运行时记录缺失 key 并上报;发布前用英文走一遍订单支付和发票下载。
验收就看一点,订单页显示“Payment completed”,构建日志里缺失 key 数为 0。
