1008905-知识库右键菜单显示翻译Key.md
3.59 KB
缺陷 1008905 - 知识库右键菜单第一项显示原始翻译Key
原始需求(一字不差)
缺陷标题:这个是啥?
状态:new | 负责人:尹帮会 | 严重程度:fatal | 优先级:medium | 创建者:Ryan章桦
创建时间:2026-03-12 15:09:09 | 修改时间:2026-03-12 15:09:09
原始描述:
[图片: https://file.tapd.cn//tfl/captures/2026-03/tapd_67139335_base64_1773299328_100.png]
图片理解
截图(3066 × 1826 像素)- 知识库文件列表页面右键菜单
画面内容:
- LinkMed 知识库页面,左侧为文件夹树,右侧为文件列表(「我的文档」视图)
- 用户在左侧某文件夹(其他任务)上触发了右键菜单
- 右键菜单弹出,包含 4 项:
-
KnowledgeBase.open(异常!应显示「打开」) - 重命名(图标:铅笔)
- 下载(图标:下载箭头)
- 删除(图标:垃圾桶,红色)
-
- 右侧文件列表中可见多个文件夹和文件,知识库状态列部分显示「已完成」
关键细节:
- 第一个菜单项显示原始翻译 key
KnowledgeBase.open,而非中文「打开」 - 其他三项(重命名、下载、删除)均正常显示中文
根因分析
错误类型
i18n 翻译 key 缺失,导致 vue-i18n t() 函数返回 key 字符串本身。
为什么会这样
FileList.vue 第 284 行右键菜单第一项代码:
{{ contextMenuFile?.isFolder ? (t("KnowledgeBase.open") || "打开") : (t("KnowledgeBase.edit") || "编辑") }}
-
t("KnowledgeBase.open")找不到对应翻译时,vue-i18n 返回 key 字符串"KnowledgeBase.open" -
"KnowledgeBase.open"是非空字符串(真值),所以|| "打开"兜底永远不会执行 -
KnowledgeBase翻译对象中有edit、rename、download、delete,但缺少open
涉及文件
-
src/locales/zh-CN.ts:KnowledgeBase 下缺少open: "打开" -
src/locales/en-US.ts:KnowledgeBase 下缺少open: "Open" -
src/components/KnowledgeBase/FileList.vue:第 284 行调用t("KnowledgeBase.open")
修复方案
在 zh-CN 和 en-US 翻译文件的 KnowledgeBase 对象中补充 open key。
修改的文件
-
src/locales/zh-CN.ts:新增open: "打开" -
src/locales/en-US.ts:新增open: "Open"
具体改动
// zh-CN.ts — KnowledgeBase 下新增
open: "打开",
edit: "编辑", // 原有,参考位置
// en-US.ts — KnowledgeBase 下新增
open: "Open",
edit: "Edit", // 原有,参考位置
测试结果
-
npm run type-check通过,无 TypeScript 错误 -
npm run test:unit通过,19 个用例全部通过
测试覆盖
单元测试(Vitest)
文件:src/test/features/locale-knowledge-base.test.ts(9 个用例)
| 测试组 | 用例 |
|---|---|
| zh-CN 翻译 | open=打开;edit=编辑;rename=重命名;download=下载;delete=删除 |
| en-US 翻译 | open=Open;edit=Edit |
| 非空校验 | zh-CN/en-US KnowledgeBase.open 均非空字符串(防兜底失效) |
E2E 测试(Playwright)
文件:e2e/tests/knowledge-base-context-menu.spec.ts(2 个用例)
- 右键菜单第一项不应显示翻译 key 字符串(需登录态,无数据时跳过)
- 右键文件夹菜单应包含「打开」「重命名」「下载」「删除」完整4项
验收条件
- 知识库文件列表中,右键文件夹,第一个菜单项显示「打开」✅
- 右键文件,第一个菜单项显示「编辑」✅
- 切换为英文时分别显示「Open」和「Edit」✅