Skip to content

es 语言包的 preview.draftBar 同一条横幅两种敬称 —— messageClean 用 usted、message 用 tú,西语用户按「有无待发布变更」看到不同人称 #3844

Description

@yinlianghui

#3546 切片五(回填 marketplace + preview 两命名空间 37 个缺失 key)裁定 es 敬称时量出,不在该 PR 范围内(这两个 key 早已存在、值也不由本切片改动),单独记录。

现象

packages/i18n/src/locales/es.tspreview.draftBar同一条横幅(DraftPreviewBar)的两条互斥文案 —— 有待发布变更时渲染 message,没有时渲染 messageClean。两条的第二人称不一致:

key es 值 人称
preview.draftBar.message Vista previa de borrador — estás viendo cambios sin publicar. Nada está en producción hasta que publiques. (estáspubliques)
preview.draftBar.messageClean Vista previa del borrador: no hay cambios sin publicar; todo lo que ve aquí ya está activo. usted(ve)
preview.draftBar.sampleDataBody Está viendo la estructura de su aplicación. Publíquela para cargar registros de ejemplo y activarla. usted(EstásuPublíquela)

后果:一个西语用户在同一个预览横幅上,发布掉手上的草稿之后,横幅从 tú 切到 usted。同一个组件、同一个位置、同一次会话。

顺带一处同类的小分歧:message 用长破折号 分隔,messageClean 用冒号 :(en 两条都是 )。

为什么三道 i18n 门禁都看不见

#3810 / #3582 / #3625 同属"值域盲区",但又是新的一类:不是与 en 不一致(两条译文都正确表达了 en 的意思),而是同一语言包内部、同一 UI 表面上的语域不一致。任何按值比对 en 的启发式都读不出来。

量出来的分母

范围 usted 标记 tú 标记
es 全包 102 30
es marketplace.* 9 0
es preview.* 2(draftBar.messageCleandraftBar.sampleDataBody) 2(draftBar.messageempty.notReadyDescription)
es home.pendingDrafts.published ¡Publicado! Sus cambios están activos. → usted

所以 es 包的默认语域是 usted,tú 是有标记的例外,且集中在 auth 登录/注册、report editor、organizations 这几个邻域(#3546 切片二当时正确裁定那几个邻域一致非正式)。preview 邻域的 2:2 是这个模式之外的一处真正分裂,而分裂恰好落在同一条横幅的两句话上。

#3546 切片五对它做了什么(以及没做什么)

切片五需要给 preview.unpublishedBar.*(ADR-0045 未发布横幅,draftBar 的姐妹)与 preview.history.* 共 19 个新 key 定一个语域。取 usted,依据是:(1) es 包全局默认 usted;(2) 这 19 个 key 与 marketplace.*(9:0 usted)同处 console 外壳;(3) 最强的一条 —— preview.unpublishedBar.published 的结构孪生 home.pendingDrafts.published 就是 usted(Sus cambios)。该裁定连同上面的分母写进了 PR 的测试断言,不是随手一挑。

没做的:没有改这两个既有 key。它们不在切片围栏内(切片只新增 key),而且改哪一条是取舍 —— 见下。

收口方向(未裁决)

  • A. 把 message 改成 usted,与 messageClean / sampleDataBody / unpublishedBar.* 对齐。最小改动,且与 es 包默认语域一致。顺带把 messageClean: 改回 跟 en 对齐。
  • B. 把 messageClean / sampleDataBody 改成 tú,并把 preview 整个命名空间(含切片五新增的 19 个)划成非正式邻域。改动面大得多,且会与紧邻的 marketplace.* / console.ai.* 冲突。
  • C. 加一道门禁:同一命名空间(或同一组件的 key 集合)内 es 的敬称标记必须一致。判据可靠性存疑 —— 敬称需要形态学识别,正则会误报(本次量分母的正则就把 Revisa 误算成 tú 标记),而且 258 个 t() 调用点引用的 key 在任何语言包里都不存在(#3530 守卫首跑实测),其中 8 处直接把 raw key 渲染给用户 #3546 切片二已经立了"同一规则、不同答案"的先例:按邻域裁定是正确的,所以门禁只能判"同一邻域内一致",邻域边界本身还得人来划。

倾向 A(单条对齐,与包默认语域和新增的 19 个 key 一致),C 不建议现在做

关联:#3546(切片五裁定 es 敬称时量出本条)、#3810 / #3582 / #3625(值域盲区的前几类)、#3530(调用点门禁)、#3650(en-drift 门禁)。

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions