feat(i18n): T15 full-stack language audit with coverage assertions

- viewer/admin 错误码→文案映射按契约 ErrorCodes 枚举全集登记(机器守护
  spec 遍历枚举断言无缺漏 + 映射键在 zh/en 词条均存在 + locale 键集
  递归相等);mobile 镜像补齐 DOWNLOAD_DISABLED(P4a 增补漏登)
- 漏译修复:viewer.photoRemoved en 侧缺失(审计测试捕获);
  DOWNLOAD_DISABLED 观众侧专属文案 + useDownload 专属提示接线;
  admin apiMsg 增 RATE_LIMITED/ALBUM_NOT_PUBLIC/DOWNLOAD_DISABLED/
  SYNC_AUTH_FAILED 四码词条
- 运行时抽查:admin 主旅程 en 版 e2e(登录→相册管理全英文 + 偏好
  持久);embed iframe lang=en 渲染与深链跟随 e2e(zh 侧既有用例覆盖)
- contracts 新增 ./errors 浏览器安全子路径(errors.ts 纯 TS);
  admin 增 @photo/contracts devDep(仅测试消费)

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
浅念
2026-09-20 23:44:27 +08:00
parent 0238f505c4
commit 7385785504
17 changed files with 310 additions and 13 deletions
+4
View File
@@ -51,6 +51,8 @@ export default {
loadFailed: 'Failed to load image',
// PHOTO_NOT_PUBLIC 专用:not found / unpublished / hidden share one code (anti-enumeration).
photoUnavailable: 'Photo not found or unavailable',
// 轮播中被移除(ws photo.hidden)的轻提示。
photoRemoved: 'This photo has been removed',
backToAlbum: 'Back to album',
},
route: { tokenLabel: 'Album token', photoLabel: 'Photo' },
@@ -67,5 +69,7 @@ export default {
internal: 'Service temporarily unavailable, please try again later',
unknown: 'Something went wrong, please try again later',
network: 'Network error, please check your connection',
// DOWNLOAD_DISABLED (P4a two-tier download switches): visible but not downloadable.
downloadDisabled: 'Downloads are not enabled for this album',
},
};
+2
View File
@@ -69,5 +69,7 @@ export default {
internal: '服务暂时不可用,请稍后再试',
unknown: '出错了,请稍后再试',
network: '网络连接失败,请检查网络',
// DOWNLOAD_DISABLED(P4a 下载两级开关):相册可见但未开放下载。
downloadDisabled: '该相册未开放下载',
},
};