Skip to content

Five more s2twp over-substitutions are wrong in any register — 介面卡 is a network interface card, not an adapter #194

Description

@hotlong

Filed by the PM seat from the corpus-wide survey in PR #192 (card #144), which the ruling on that card asked for and reserved the filing of. Every number below was re-verified by the seat against opencc-js and the corpus at 5d4b0b6, not copied from the survey.

Blocked on #144 / PR #192 landing — that PR builds the override mechanism this card would use, and the two would collide on the same table.

What

s2twp's TWPhrases group contains a handful of entries that are not contested vocabulary at all. They are mechanical over-substitutions: the preset appends or swaps a word fragment that is simply wrong in Taiwanese usage, in any register, for any audience. Same shape as the 許可權 defect #144 just fixed — only rarer, which is why nobody noticed.

zh-Hans twp ships ordinary Taiwanese occurrences what went wrong
全局 全域性 全域 4 a spurious 性 turns a noun into an adjective
扩展 擴充套件 擴充 / 擴充功能 4 a spurious 套件 ("package")
适配器 介面卡 配接器 3 介面卡 is a network interface card — different hardware entirely
控件 控制元件 控制項 2 the standard UI-control term is 控制項
镜像 映象 映像 1 wrong second character

Verified directly:

全局   twp-> 全域性     扩展   twp-> 擴充套件    适配器 twp-> 介面卡
控件   twp-> 控制元件    镜像   twp-> 映象

and every one is live in the built Traditional corpus at exactly those counts (全域性 4, 擴充套件 4, 介面卡 3, 控制元件 2, 映象 1).

Plus one the seat has already ruled on: 脚本

Seat ruling: normalize on 腳本, by shadowing the TWPhrases entry — the same identity-entry mechanism PR #192 built for 權限 and 實例. 指令碼 is the Microsoft-glossary rendering; 腳本 is the ordinary Taiwanese word, and in this corpus the referent is always shell/webhook glue in an automation argument, never a screenplay.

The more important half of this is a defect regardless of which term wins: the corpus already ships both.

指令碼  26 occurrences
腳本     5 occurrences

That split is not editorial. It is the same straddling-phrase accident PR #192 diagnosed for the locative 里: the two-character STPhrases entry 本里 matches across a word boundary in 脚本里, which blocks the phrase layer as well as the character layer, so five sites escape the 指令碼 substitution. Whichever term is chosen, the inconsistency has to close in the same pass.

Shape of the fix

PR #192 leaves behind exactly the mechanism this needs, and (per the patch round on it) a shared override module that both scripts/gen-zh-hant.mjs and src/lib/zhconvert.ts load. Each entry here is:

  • one identity or replacement entry in that shared table, and
  • one fixture case, so a preset upgrade cannot silently reinstate it.

Nothing else. No content file is hand-edited; the Traditional locale stays fully generated.

Acceptance

  • All five artifact spellings go to 0 in the built output (dist, not just the MDX — gen-zh-hant: ship 權限/實例 and the straddled locative 裡 #192's patch round is the reminder that these two are different populations), and their intended forms appear at the same counts.
  • 指令碼 → 0 and 腳本 → 31, matching 脚本 in the zh-Hans sources.
  • Every changed byte explained by the ruled terms alone, checked mechanically the way gen-zh-hant: ship 權限/實例 and the straddled locative 裡 #192 checked its own: apply only the ruled substitutions to the main version of each file and require byte equality.
  • git status --porcelain empty after pnpm build.
  • Fixture ablation: remove one override, show it red.

Not in scope

The genuinely contested Microsoft renderings — 元数据 → 後設資料 (174 occurrences), 类型 → 型別 (67), 发布 → 釋出 (48), 审核 → 稽核 (40) and the rest — are a different question and are filed separately. This card is only the ones that are wrong on their face.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions