Skip to content

[i18n] 另外三个插件也自拼英文标题传给 NavigationOverlay 的 title prop(kanban / tree / plugin-view),#3426 的围栏没覆盖到 #3459

Description

@yinlianghui

Blocked-by: #3426(PR #3457)

缘起

#3426 修的是 ListViewObjectGrid 两处「在传入侧自拼英文标题、把 NavigationOverlay 的 i18n 默认值挤掉」的缺陷。那个 issue 的文件围栏只圈了 plugin-list / plugin-grid。在核验 #3426 前提时按同一模式全仓 grep,发现同一类缺陷还有三处,都在围栏外,本次未改动:

文件 传给 title 的东西
packages/plugin-kanban/src/ObjectKanban.tsx(约 504 行) ${objectName 首字母大写并把下划线换成空格} Detail,无 objectName 时是字面量 'Card Details'
packages/plugin-tree/src/ObjectTree.tsx(约 453 行) 裸字面量 "Record Details"
packages/plugin-view/src/ObjectView.tsx(约 1153 行) ${objectLabel} Detail(mode="split" 的那个浮层)

行号取自 main@112b20912,会漂。用 NavigationOverlay + title 搜更稳。

为什么这是缺陷而不是风格问题

NavigationOverlayresolvedTitletitle || t('detail.recordDetail') —— 只要宿主传了 title,组件自己的 i18n 默认值就永远不生效。而这个值不是无障碍名,是可见标题:抽屉里是 SheetTitle,模态里是 DialogTitle,split 模式是一个 h3,popover 是一个 h4。所以一个 zh/ja/de 会话会拿到一个通体本地化的浮层,顶上挂着唯一一句英文。这正是 #3426 的形状。

可达性:本人未核验

#3426 的两条路径我逐条核验过并写进了 PR #3457(公开页面块 + navigation 可编写键 + 行点击接 handleClick,并有走完整用户路径的测试作为可执行证据)。这三处我没有做同等核验 —— 它们只是 grep 同形命中。三处看上去都挂在 navigation.isOverlay 门后,与 list/grid 同构,但「看上去同构」不等于可达,派发时应先做与 #3426 同样的可达性判定,可能出现某一处其实被上层覆盖/是死默认的情况。

修法(若可达)

沿用 #3426 落下的形状,不要NavigationOverlay 里加宽容:

一个需要决定的点

kanban 的 'Card Details' 和 tree 的 "Record Details" 都是复数拼法,语言包里没有对应键(现有的是单数 detail.recordDetail = Record Detail)。两条路:

倾向 A:这是同一个组件的同一个标题槽,plugin-detaillabel: 'Record Details' 那种别处的用法不构成保留理由;英文串的变化面很小,改前 grep 一遍 e2e/ 即可确认。但涉及可见文案的取舍,留给维护者拍板。

相关

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions