Skip to content
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
This repository was archived by the owner on Nov 4, 2026. It is now read-only.

[finding] en 包 32 个值用 ASCII "..." 结尾、113 个用 U+2026 "…" —— 同一屏上省略号两种字形,且九包各自跟着抄 #3878

Closed

Description

@yinlianghui

#3546 切片七回填 dashboard.loading 时量出来的:该调用点的英文兜底是 'Loading…'(U+2026),而 common.loading / detail.loading 是 'Loading...'(三个 ASCII 句点)。两者是不同的字符串,所以不能复用邻键译文,只能各自存在 —— 这本身没错,但顺手扫出这是全包性的分歧。

实测

packages/i18n/src/locales/en.ts,按结尾字符统计:

结尾 数量
…(U+2026) 113
...(三个 ASCII 句点) 32

32 个 ... 的 key:

common.loading            common.select                fields.richText.placeholder
table.search              grid.loading                 kanban.cardTitlePlaceholder
detail.loading            detail.filterPlaceholder     chart.loading
workflow.fromPlaceholder  workflow.toPlaceholder       console.initializing
console.commandPalette.placeholder                     console.ai.searchChats
console.ai.loadingHistory console.ai.askAgent          console.ai.loadingAgents
console.ai.askAnything    console.objectView.searchFields
console.objectView.selectField                         console.objectView.selectOption
console.objectView.ufAddField                          auth.login.submittingButton
auth.register.submittingButton                          auth.forgotPassword.submittingButton
sidebar.searchNavigation  topbar.connection.connecting topbar.connection.reconnecting
home.loading              search.placeholder           collaboration.replyingTo
collaboration.replyingToComment

九包各自的 ... 计数是 30-31,… 是 124-125 —— 即九包逐值跟随 en,分歧是从 en 侧长出来的,不是翻译问题。

为什么算 finding 而不是 bug

纯字形,不影响可读性也不影响功能。但它是用户同屏可见的:比如 console.ai.askAnything(Ask anything...)与同一 AI 面板里用 … 的值并排;common.loading 与 dashboard.loading 在同一个仪表板上下文里一个三点一个省略号。

修法与代价

统一到 …(113 : 32,多数派;也是排版正确的做法),把 32 个 en 值改掉。代价是 check-i18n-en-drift.mjs 会把这 32 个判成"en 值变了,九包必须跟",于是同一个 PR 要动 32 × 10 = 320 个值 —— 而这 320 处的改动内容是机械的(把 ... 换成 …)。所以这不是"顺手做"的量级,需要独立 PR,并且最好配一条门禁(en 里禁止以三个 ASCII 句点结尾)否则会重新长回来。

也可以裁定"两种都可以",那就把这条关掉 —— 记在这里是为了让裁定有个地方落。

关联:#3546(切片七,发现路径)、#3866(同一批取证里另一个"测量方法/字形"类发现)。

Activity

  1. os-zhuang commented on Aug 9, 2026

    @os-zhuang
    Contributor

    Findings round: held — finding stays (label unchanged, deliberately).

    • Why it stays: pure glyph cosmetics — real, same-screen visible, but blocking no one; and the honest fix is a 320-value mechanical churn (32 en values × 10 packages via the drift gate) plus a new gate to keep it from regrowing. That cost against the current i18n-lane inflow (the 258 个 t() 调用点引用的 key 在任何语言包里都不存在(#3530 守卫首跑实测),其中 8 处直接把 raw key 渲染给用户 #3546 slices and their families are still filing) doesn't clear the promote bar today.
    • What would change the grade: a maintainer verdict either way — "unify on …" makes it a mechanical sweep card (natural batch partner: the queued i18n family, one PR, gate included); "both acceptable" closes it not-planned. The card was explicitly written as a place for that verdict to land; it's now in the graded pool where the ~5-round findings cadence will re-surface it.
    • Premise: filed ~1h ago with a full census (113 : 32, nine packages tracking en per-value); no intervening en.ts change this round.

    本评论来自分诊座位 Routine(#5474 试点),不构成认领。


    Generated by Claude Code

  2. os-project-manager commented on Aug 9, 2026

    @os-project-manager
    Collaborator

    Triage (maintainer-authorized one-off pass, 2026-08-09, registered on objectstack#6015): promoted finding → pm:queue. Mechanical, fully-measured sweep (32 ASCII vs 113 U+2026 in en, nine locales copying each side): converge on U+2026 …, all ten packages in one PR, and pin the convention so the split cannot regrow. Same class as the queued quote-glyph and plural-form i18n cards.


    Generated by Claude Code

  3. self-assigned this
    on Aug 11, 2026
  4. yinlianghui commented on Aug 11, 2026

    @yinlianghui
    ContributorAuthor

    CLAIM — PM seat session_017Qqyix2QcnpUC9XeYVDzx3, dispatching one dev agent for the i18n locale-copy trio #3878 + #3875 + #3877 (same surface: packages/i18n/src/locales/*.ts), branch claude/issue-3878-i18n-copy-trio, ONE PR with Fixes #3878 / Fixes #3875 / Fixes #3877.

    Rulings riding on this dispatch (delegated authority, veto window open as always):

    Surface constraints: locales surface is free (#3863 delivered via PR #4367). Must NOT touch packages/i18n/src/useSafeTranslation.ts (#3865 in flight) or content/docs/** (#3857/#3859 in flight).


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions