Skip to content

fix(i18n): correct wrong-sense Simplified Chinese UI strings - #29321

Merged
nwparker merged 1 commit into
stablyai:mainfrom
shichen35:claude/fix-zh-wrong-sense-619e9f
Oct 26, 2026
Merged

nwparker merged 1 commit into
stablyai:mainfrom
shichen35:claude/fix-zh-wrong-sense-619e9f

Conversation

@shichen35

@shichen35 shichen35 commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

ELI5

Some Simplified Chinese labels in Orca used the wrong meaning of the English word. "Board" came out as "board of directors", "host" as "TV presenter", "run" as "jogging", "terminal" as "airport terminal", and "transcript" as "school report card". This PR rewrites those labels so they mean what the English means.

What Changed

Only src/renderer/src/i18n/locales/zh.json changes: 90 values. There are no code changes, and every {{value0}} placeholder stays the same.

Before: wrong-sense machine translations, for example 董事会设置 (board of directors), 主持人 (presenter), 别跑 / 每次跑步 (don't jog / every jog), 前往航站楼 (go to the airport terminal), 成绩单 (report card), 遥控器 (TV remotes), 稀疏结账 (cashier checkout), 风俗 (folk customs), 受到推崇的 (revered), 贝壳 (seashells), 嵌套工人 (factory worker), 不可触摸 (untouchable), 轮廓 (outline), 个人资料 (personal profile).

After: terms that already appear elsewhere in the catalog or match the platform. That gives 看板, 主机, 运行 / 运行中, 交给终端, 会话记录, 远程仓库, 基础引用, 稀疏检出, 自定义, 推荐, 辅助功能 (the name macOS uses for the Accessibility permission), 配置文件, 工作智能体, 交接, 窗口, 分隔线粗细, and 水平内边距. Brand names stay in Latin script (Bitbucket Cloud, Orca Relay), and so does "shell", as in the rest of the catalog. The count strings in the background-task strip gain the measure word they need (个 / 项).

The second commit on the original branch carried the same fixes over to the hidden Settings-search keywords and a few sibling strings. Without it, search and labels would disagree: custom / window / host / running / base ref / manager, plus the divider-thickness description.

The full table of the original 76 keys is in #29321.

Why

Machine translation chose the everyday meaning of words that have a specific meaning in software, so Chinese readers saw nonsense. None of the existing repair-policy overrides in config/scripts/locale-* cover these keys, so a re-translation pass would not have fixed them. Where the catalog already had a correct term, this PR reuses it. Fixing only the wrong-sense strings, instead of retranslating the whole catalog, keeps the diff easy to review.

Linked Issue

Fixes #29320

Visual Proof

Settings → Browser: the terminal link action changes from 前往航站楼 ("go to the airport terminal") to 交给终端. The add-profile button changes from 添加个人资料 to 添加配置文件.

Before After
before browser settings after browser settings

Settings → Terminal: the color contrast description changes from 平衡可读性与终端主题。受到推崇的。("...Revered.") to 兼顾可读性与终端主题。推荐使用。

Before After
before terminal contrast after terminal contrast

Testing

  • Rendered the Settings → Browser and Settings → Terminal panes with the UI language set to zh, before and after the change, on macOS (background Electron, CDP screenshots above).

  • pnpm verify:localization-catalogs passes: all 17023 existing zh.json entries verified.

  • Ran the zh locale policy tests (locale-translation-policy.test.mjs, .zh-round5, .zh-status-bar-usage, locale-generic-ui-terms.test.mjs): 33/33 pass.

  • src/renderer/src/i18n vitest suite: 146/147 pass. The one failure is a hook timeout in language-detection-reconciliation.test.tsx while it imports modules on a heavily loaded machine (load average ~82). That test exercises ja detection and does not read zh strings.

  • oxfmt --check is clean on the changed file.

  • Only label text changes, so there is no platform, SSH/remote, or mobile behavior impact.

  • I manually tested these changes locally

  • Automated tests added/updated, or explained why not below (no new test: this is translation data only, and perf(ci): cut redundant tests and reuse expensive setup #28669 deliberately removed the zh mistranslation test file)

Original fix by @shichen35 in #29321.

Review

Agent skill upstream boundary

  • Not applicable, or this change copies or mechanically translates no upstream skill-installer source, tests, fixtures, registry entries, path tables, comments, or documentation.

Notes

Language file only. No impact on security, cross-platform behavior, remote SSH, mobile, backwards compatibility, or performance.

Checklist

  • This PR is small and focused
  • I explained what changed and why (ELI5, the user-facing before/after, the mechanism, and why over the alternatives)
  • Before/after screenshots or videos attached for UI changes, or N/A with reason
  • Self-reviewed for correctness, security, and performance
  • Cross-platform, SSH/remote, and path/shortcut impact considered (or N/A)
  • pnpm lint, pnpm typecheck, pnpm test, and pnpm build pass (or CI will cover; local preferred)

@coderabbitai

coderabbitai Bot commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Important

Review skipped

The saved review base belongs to an older reviewed commit. This saved history cannot establish the base for an incremental review. Comment @coderabbitai full review to establish a new review baseline. No full review was started, and the last reviewed checkpoint was preserved.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
Recent review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 2c8f7576-6822-4c93-9021-a4ef7c9a4645
Commits

Reviewing files that changed from the base of the PR and between 28172ba585d3a3eb22ce3a929187dcc2a61a8cd7 and 5c0ad1b69efbbde8ae8063be289294c6af76c06c.

Files selected for processing: 1
  • src/renderer/src/i18n/locales/zh.json

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.

Walkthrough

Updated Simplified Chinese labels and descriptions across workspace, settings, terminal, browser, orchestration, usage, and session interfaces. The changes revise terminology for software concepts and product names. No application logic or public declarations changed.

Priority: Pending latest changes

Severity of issue fixed: Medium

Merge Risk: Low · up to 5c0ad

One minor Chinese UI wording correction remains advisable; the PR is otherwise mergeable.

Pre-merge checks: Passed 3 · Inconclusive 2

Failed Failed checks: 2 inconclusive

Check name Status Explanation Resolution
Linked Issues check Inconclusive Issue #29320 requires correcting wrong-sense Simplified Chinese labels in zh.json. The PR description and the AI-generated raw summary both claim 76 value changes in src/renderer/src/i18n/locales/zh.j… Provide a readable whole-PR diff from merge base 1ad8755 to head 5c0ad1b69efbbde8ae8063be289294c6af76c06c for src/renderer/src/i18n/locales/zh.json, so the before and after values of the listed keys can be c…
Out of Scope Changes check Inconclusive The PR description and raw summary state that only src/renderer/src/i18n/locales/zh.json changes (+76/-76) and that no code changes are included. The whole-PR file list is not confirmed because the di… Provide the whole-PR changed-file list for merge base 1ad8755 to head 5c0ad1b69efbbde8ae8063be289294c6af76c06c, and a readable diff for those files. This is needed to confirm that no file other than zh.json …
Passed Passed checks: 3 passed
Check name Status Explanation
Title check Passed The title clearly and concisely describes the primary change: correcting incorrect Simplified Chinese UI translations.
Description check Passed The description is complete and relevant. It explains the user impact, changed terminology, rationale, linked issue, testing performed, limitations, AI usage, scope, and checklist status. The visual p…
Docstring Coverage Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Full details: Description check

Explanation

The description is complete and relevant. It explains the user impact, changed terminology, rationale, linked issue, testing performed, limitations, AI usage, scope, and checklist status. The visual proof section explains why screenshots are unavailable, and the unrun checks are documented with CI coverage expected.

Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files. (1 skipped: 1 unsupported.)

Full details: Linked Issues check

Explanation

Issue #29320 requires correcting wrong-sense Simplified Chinese labels in zh.json. The PR description and the AI-generated raw summary both claim 76 value changes in src/renderer/src/i18n/locales/zh.json, with terms such as 看板, 主机, 运行, 会话记录, 远程仓库, 引用, 检出, 智能体, and Latin-script shell, Bitbucket Cloud, and Orca Relay. Those claims are not verified. Whole-PR diff reads for base 1ad8755 to head 5c0ad1b failed because changed blobs are missing from the checkout. The zh.json blob at head is readable only in its first 16000 bytes, and the changed keys are not in that range. The visible head text is consistent with the requirements but does not show the changed values. No concrete unmet requirement was found. The coding requirement cannot be confirmed as met. Incremental diffs since the previous reviewed head are also unavailable, so the previous PASS cannot be carried forward on changed-code evidence.

Resolution

Provide a readable whole-PR diff from merge base 1ad8755 to head 5c0ad1b69efbbde8ae8063be289294c6af76c06c for src/renderer/src/i18n/locales/zh.json, so the before and after values of the listed keys can be checked against the issue terms. Alternatively, provide readable blob content for the changed keys at the head revision.

Full details: Out of Scope Changes check

Explanation

The PR description and raw summary state that only src/renderer/src/i18n/locales/zh.json changes (+76/-76) and that no code changes are included. The whole-PR file list is not confirmed because the diff read failed with missing changed blobs. The incremental diff from the previous reviewed head is also unavailable. The head zh.json is readable only in part. Within the readable portion, no non-locale change is visible, but that portion does not cover the changed keys. The scope claim therefore cannot be verified. Grammar fixes, measure words, the 辅助功能 and 配置文件 terms, and the 工作智能体 and 监控任务 terms are described as support for the issue scope. Their relation to the issue cannot be checked against changed lines until the diff is readable.

Resolution

Provide the whole-PR changed-file list for merge base 1ad8755 to head 5c0ad1b69efbbde8ae8063be289294c6af76c06c, and a readable diff for those files. This is needed to confirm that no file other than zh.json changed and that every changed zh.json value is within the wrong-sense label correction scope.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@shichen35
shichen35 force-pushed the claude/fix-zh-wrong-sense-619e9f branch 2 times, most recently from 5c0ad1b to dbaf597 Compare October 24, 2026 04:41

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1


Review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 2c8f7576-6822-4c93-9021-a4ef7c9a4645
Commits

Reviewing files that changed from the base of the PR and between 28172ba585d3a3eb22ce3a929187dcc2a61a8cd7 and 5c0ad1b69efbbde8ae8063be289294c6af76c06c.

Files selected for processing: 1
  • src/renderer/src/i18n/locales/zh.json

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to GitHub limitations.

⚠️ Outside diff range comments (1)

Minor · Keep Orca as the subject of the run-step title. · zh.json:12254

src/renderer/src/i18n/locales/zh.json:12254
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Keep Orca as the subject of the run-step title.

Orca 开始每次运行 is awkward, but 每次运行都启动 Orca reverses the intended meaning. Use:

Suggested wording
-          "runStepTitle": "Orca 开始每次运行",
+          "runStepTitle": "Orca 会启动每次运行",

Review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 2c8f7576-6822-4c93-9021-a4ef7c9a4645
Commits

Reviewing files that changed from the base of the PR and between 28172ba585d3a3eb22ce3a929187dcc2a61a8cd7 and 5c0ad1b69efbbde8ae8063be289294c6af76c06c.

Files selected for processing: 1
  • src/renderer/src/i18n/locales/zh.json

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.

@shichen35

Copy link
Copy Markdown
Contributor Author

Caution

Some comments are outside the diff and can’t be posted inline due to GitHub limitations.

⚠️ Outside diff range comments (1)

Minor · Keep Orca as the subject of the run-step title. · zh.json:12254

src/renderer/src/i18n/locales/zh.json:12254
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Keep Orca as the subject of the run-step title.
Orca 开始每次运行 is awkward, but 每次运行都启动 Orca reverses the intended meaning. Use:

Suggested wording

-          "runStepTitle": "Orca 开始每次运行",
+          "runStepTitle": "Orca 会启动每次运行",

Review info

Good catch, thanks, applied your suggestion: runStepTitle is now "Orca 会启动每次运行".

@shichen35
shichen35 force-pushed the claude/fix-zh-wrong-sense-619e9f branch from fef1280 to 2f6c680 Compare October 24, 2026 22:09
Several zh.json strings used a translation with the wrong meaning for the
UI context (e.g. git base ref, dividers, host, browser profile, search
keywords). Align them with the intended sense and consistent terminology.

Co-authored-by: Neil <neil@stably.ai>
@nwparker
nwparker force-pushed the claude/fix-zh-wrong-sense-619e9f branch from 2f6c680 to f5cde88 Compare October 26, 2026 19:46
@nwparker
nwparker merged commit 44d2fcb into stablyai:main Oct 26, 2026
33 checks passed
smwbev added a commit to smwbev/orca that referenced this pull request Oct 27, 2026
main moved 1112 commits. One conflict, in the WorktreeList object of
zh.json: stablyai#29321 rewrote groupRenameFailedDesc, while this branch had
appended its two groupProjectsRemained* keys after hostRepairRequired.
Resolved with main's value first, then the branch's two keys.

The other six catalogs, en-runtime-required.json and
locale-ko-key-overrides.json merged on their own. Against main the
branch removes the same twelve keys and adds the same 24 in all seven
catalogs, with no other value changed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Simplified Chinese: labels use the wrong sense of the English word (board → 董事会, host → 主持人, run → 跑步, …)

2 participants