Skip to content

[i18n] PresenceAvatars 三处硬编码英文(控制台头部与记录详情实际在渲染) #3440

Description

@yinlianghui

实现 #3424(@object-ui/collaboration 整包接入 i18n)时发现,同包的 PresenceAvatars.tsx 还有三处硬编码英文。#3424 的完成范围只列了 CommentThread,所以没有顺手改,按 Prime Directive #10 单独记录。

位置

packages/collaboration/src/PresenceAvatars.tsx:

  • L116 'aria-label': 模板字符串 ${users.length} user${users.length !== 1 ? 's' : ''} present
  • L122 title: 模板字符串 ${overflowCount} more user${overflowCount !== 1 ? 's' : ''}
  • L133 title: 模板字符串 ${user.userName} (${user.status})

为什么这个是用户真的会撞到的

CommentThread 不同,PresenceAvatars 在仓内有真实消费者,zh 会话下的控制台就在渲染它:

  • packages/app-shell/src/layout/AppHeader.tsx:55
  • packages/app-shell/src/views/RecordDetailView.tsx:20

前两处是头像组的无障碍名 —— 头像组本身只有图片和首字母,对屏幕阅读器来说这个 label 就是这个控件。第三处 (${user.status}) 里的 status 也是英文枚举值(online / away / …),直接拼进 tooltip。

顺带:复数规则同样编译进了组件

两处都是 n !== 1 ? 's' : ''。英文输出是对的,但和 #3424 头部/tooltip 那两处一样,选单复数的语法被硬写进渲染路径,任何语言都套用不了自己的规则。修的时候应当直接用本仓的双 key 约定(xxxCount / xxxCountOne),不要用 i18next 的 _one/_other 后缀 —— zh/ja/ko 没有独立单数形式,那几个包会合理地缺 _one 半边,all-locales-key-parity 会把它读成丢键。

改起来应该很轻

#3424 已经把包级的 i18n 接线做完了:@object-ui/i18n 已是 packages/collaboration 的 dependency,包内也已有唯一翻译入口 useCollaborationTranslation / COLLAB_DEFAULT_TRANSLATIONS(packages/collaboration/src/useCollaborationTranslation.ts)。这个单只需要往那张 defaults map 和十个语言包里加键,再把三处字面量换掉。

status 枚举值要不要一并入键(collaboration.statusOnline 之类),还是保持原样只翻译外层措辞,建议由维护者定 —— 它同时是数据值和展示值。

Refs #3424,objectstack-ai/objectstack#5506

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions