Skip to content

注册路径的全屏长文本对话框全是英文字面量:Cancel / Done / Edit text / "Edit {label} fullscreen" 不走 i18n,而同一功能的内置分支已翻译(键早已存在于十个语言包) #3404

Description

@yinlianghui

在实施 #3402(PR #3403,给注册路径的 FullscreenFieldEditordisabled)时发现,未在该 PR 内修改 —— #3402 的文件面裁定只含 disabled 闸门,这是同一文件上的另一条独立缺陷。

现象

同一个「全屏编辑长文本」功能有两条渲染路径,内置分支已经国际化,注册路径全是英文字面量:

packages/fields/src/widgets/FullscreenFieldEditor.tsx:

  • :197aria-label={ + 反引号 Edit ${label ?? 'text'} fullscreen + 反引号 —— 展开按钮的可访问名
  • :209{label ?? 'Edit text'} —— 对话框标题的兜底
  • :216Cancel
  • :224Done

对照 packages/components/src/renderers/form/form.tsxFullscreenTextarea,四处全部t():

  • :453t('form.fullscreen.toggle', { label: label ?? t('form.fullscreen.textFallback') })
  • :467label ?? t('form.fullscreen.title')
  • :486t('common.cancel')
  • :494t('form.fullscreen.done')

键已经存在,只是没人用

这不是「要新增翻译」,是已有翻译在这条路径上没被消费form.fullscreen.* 在十个语言包里都齐全,例如 packages/i18n/src/locales/zh.ts:143:

 fullscreen: {
title: '编辑文本',
description: '编辑完整的文本内容,然后保存或取消更改。',
done: '完成',
toggle: '全屏编辑{{label}}',
textFallback: '文本',
},

common.cancel 同样早已存在。

可达性

不是死代码。ObjectFormmobile.fullscreenLongText 打开时给每个长文本字段盖 mobile_fullscreen,field:textareaTextAreaFieldfield:markdown / field:htmlRichTextField 都从这里渲染对话框。任何非英文用户在注册路径上打开全屏编辑,看到的就是 Cancel / Done 两个英文按钮,而同一个表单里内置分支渲染的长文本字段显示的是「取消 / 完成」—— 同一份表单内出现两种语言。

RichTextField 自己已经在用 useObjectTranslation(:106),所以 packages/fields 消费 i18n 没有依赖障碍;FullscreenFieldEditor 只是没接。

关联

顺带观察(未验证,勿并入严重度)

同一文件的 DialogContent 没有 DialogDescription,而内置分支有一条 sr-only 的 t('form.fullscreen.description')(form.tsx:468)—— form.fullscreen.description 这个键因此在注册路径上也是没人消费的。是否触发 Radix 的 missing-Description 警告没有实测,列在这里只是因为它与上文是同一处漂移,严重度请 triage 自行判定。


Generated by Claude Code

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions