Skip to content

chore(i18n): translate 85 new keys to es/fr/ja/ko/zh - #22746

Merged
AmethystLiang merged 3 commits into
mainfrom
translation-update
Sep 25, 2026
Merged

AmethystLiang merged 3 commits into
mainfrom
translation-update

Conversation

@AmethystLiang

@AmethystLiang AmethystLiang commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor
Files Added Deleted Net
Test 0 0 0 0
Prod 5 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​368 $\color{#cf222e}{\Huge{\mathbf{−}}}$​243 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​125

ELI5

Several recent features shipped with English-only text. This adds the missing Spanish, French, Japanese, Korean, and Chinese translations so users in those languages see proper copy instead of English fallbacks.

What Changed

Added 85 translations to each of es.json, fr.json, ja.json, ko.json, zh.json (425 strings total). Before, these keys fell back to English at runtime; after, each locale renders native copy. Covered areas:

  • Native-chat resume-after-restart UI (modal, outcome rows, failure guidance, status-bar segment)
  • Notebook (ipynb) kernel viewer (kernel lifecycle, Python/ipykernel setup)
  • Xcode-blocked-Git sidebar banner
  • OpenCode Go API-key settings + no-subscription status label
  • File-link errors, context-window usage label, agent handoff prompt

Placeholders ({{value0}}, {{agent}}, {{command}}, …), markdown links, and brand names (Orca, OpenCode, Git, Python, ipykernel) are preserved verbatim per the repo translation policy; five values were normalized by the repo's own repairTranslatedValue pass.

Why

The sparse-catalog architecture (PR #8512) lets feature PRs land English-only, but the missing translations pile up (this batch: PRs #22301, #22448, #22581, #22551, #22546, #22552, #22370, #22519). This is the localization catch-up for that batch. Alternative of leaving them falls back to English, which works but degrades non-English UI.

Linked Issue

N/A — routine localization catch-up, no tracking issue.

Visual Proof

N/A — locale JSON data only; no component or layout change. Strings render through the existing i18n path.

Testing

  • verify:localization-catalog — 14,889 key references verified, no extras/placeholder mismatches
  • verify:localization-coverage, verify:localization-extraction, verify:localization-runtime-catalog — pass
  • vitest locale suites (translation-policy ×6, generic-ui-terms, catalog, coverage, ko-overrides, jsx-spacing-guard) — pass
  • Manual in-app review by a native speaker per locale (recommended before merge for the longer guidance strings)

Agent skill upstream boundary

  • Not applicable — no skill source copied or translated.

Notes

Data-only change to locale catalogs. No code, path, shortcut, platform, SSH, or mobile impact. Untracked helper script + scan tracker (config/scripts/apply-translation-delta.mjs, config/update-translation.txt) are intentionally left out of this PR.

Checklist

  • This PR is small and focused
  • Explained above (ELI5, before/after, mechanism, alternatives)
  • N/A visual proof with reason
  • Self-reviewed for correctness (placeholder parity validated programmatically per key)
  • Cross-platform/SSH impact: N/A (data only)
  • Local gates pass; CI to confirm

@coderabbitai

coderabbitai Bot commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Advanced

Run ID: 395ec26c-40d5-422b-8f16-33531c0b6e87

📥 Commits

Reviewing files that changed from the base of the PR and between a36986617db4951b7894d2d38143e2f76fcab3bf and feda60f.

📒 Files selected for processing (5)
  • src/renderer/src/i18n/locales/es.json
  • src/renderer/src/i18n/locales/fr.json
  • src/renderer/src/i18n/locales/ja.json
  • src/renderer/src/i18n/locales/ko.json
  • src/renderer/src/i18n/locales/zh.json
🚧 Files skipped from review as they are similar to previous changes (4)
  • src/renderer/src/i18n/locales/es.json
  • src/renderer/src/i18n/locales/ko.json
  • src/renderer/src/i18n/locales/zh.json
  • src/renderer/src/i18n/locales/ja.json

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


📝 Walkthrough

Walkthrough

The Spanish, French, Japanese, Korean, and Simplified Chinese locale files add or revise strings for subscription status, native-chat resume and delivery feedback, local Git toolchain scanning, OpenCode Go API-key settings, Python notebook controls, file links, and context usage. The Spanish locale also adds a Codex configuration-source error message.

Priority: ⬇️ Low

Merge Risk: 🔵 Low · up to feda6

Two French chat-count labels use awkward singular wording. This affects localized copy rather than task completion, so the change is mergeable with a bounded copy follow-up.

Architecture Summary

Architecture risk: 🔵 Low · up to feda6

The change affects 1 system.

Changed systems: src

Architecture concerns
No architecture-level concerns identified.

Review details

Systems and components

  • observed — src (service) was modified; 5 changed files map to changed impact.

Before / after behavior

  • observed — Modified behavior in src/renderer/src/i18n/locales/es.json: Added a Kimi usage label for accounts with no subscription.
  • observed — Modified behavior in src/renderer/src/i18n/locales/es.json: Added singular and plural status labels, accessibility text, and tooltips for chats that failed to resume or need review after restart.
  • observed — Modified behavior in src/renderer/src/i18n/locales/es.json: Added Spanish Git toolchain scan banner text for Xcode license and Apple command-line tool requirements, affected projects, command copying, retry, and restored status.
  • observed — Modified behavior in src/renderer/src/i18n/locales/es.json: Added a Codex config-source unreadable message and OpenCode Go API-key settings text covering fallback key sources and usage display.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description explains the user impact, scope, rationale, testing, and checklist status. However, it lists the required Linked Issue as “N/A”, despite the template requiring an issue link. Add a valid linked issue using the required Fixes #<issue-number> format. If no issue exists, create a tracking issue before merging.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely identifies the localization change and names all five target locales.
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…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
  • Fix all pre-merge checks with AI

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@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

Configuration used: Repository UI

Review profile: CHILL

Plan: Advanced

Run ID: ea8f212c-85d2-4b08-b9ac-f8303404781a

📥 Commits

Reviewing files that changed from the base of the PR and between 9678dfb and 0d6280b.

📒 Files selected for processing (5)
  • src/renderer/src/i18n/locales/es.json
  • src/renderer/src/i18n/locales/fr.json
  • src/renderer/src/i18n/locales/ja.json
  • src/renderer/src/i18n/locales/ko.json
  • src/renderer/src/i18n/locales/zh.json

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

Comment thread src/renderer/src/i18n/locales/fr.json Resolved

@pullfrog pullfrog 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.

ℹ️ No critical issues — two Korean terminology suggestions inline.

Reviewed changes

  • Resume-after-restart copy — adds the failure/check status-segment strings, the modal's outcome rows, and the per-failure guidance for all five locales.
  • Notebook (ipynb) kernel strings — adds the kernel lifecycle, Python/ipykernel setup, cell-action, and execution-error copy.
  • Xcode-blocked Git banner — adds the sidebar banner titles/bodies, affected-worktree count, copy, retry, and restored strings.
  • OpenCode Go settings and misc — adds the API-key settings copy, the no-subscription label, file-link errors, the context-usage label, and the unconfirmed-handoff prompt.

I re-ran the repo gates rather than trusting the PR body: verify:localization-catalog, verify:localization-coverage, verify:localization-extraction, and verify:localization-runtime-catalog all pass, and the catalog script's key/placeholder-parity check confirms no extra keys and matching {{...}} sets in every locale. 168 locale tests pass. (I18nProvider.test.tsx fails to resolve @/store in this environment, but that is a pre-existing alias/config issue, unrelated to a JSON-only diff.)

Pullfrog  | Fix all ➔ | Fix 👍s ➔ | View workflow run | Using DeepSeek Flash (free via Pullfrog for OSS) | 𝕏

Comment thread src/renderer/src/i18n/locales/ko.json Resolved
Comment thread src/renderer/src/i18n/locales/ko.json Resolved

@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: 2


ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Advanced

Run ID: 03172825-5da7-42bb-9b0f-80c38cfb3847

📥 Commits

Reviewing files that changed from the base of the PR and between 0d6280b and 4d506e8.

📒 Files selected for processing (5)
  • src/renderer/src/i18n/locales/es.json
  • src/renderer/src/i18n/locales/fr.json
  • src/renderer/src/i18n/locales/ja.json
  • src/renderer/src/i18n/locales/ko.json
  • src/renderer/src/i18n/locales/zh.json
🚧 Files skipped from review as they are similar to previous changes (3)
  • src/renderer/src/i18n/locales/ko.json
  • src/renderer/src/i18n/locales/zh.json
  • src/renderer/src/i18n/locales/ja.json

Included review availability: Your plan provides up to 10 included reviews per hour; 7 remain after this review.

Comment thread src/renderer/src/i18n/locales/es.json Resolved
Comment thread src/renderer/src/i18n/locales/fr.json Resolved

@pullfrog pullfrog 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.

Important

pnpm run verify:localization-catalog fails at this head. The main merge swapped in main's current English catalog, and two IpynbViewer keys the branch still adds are now stale extras in all five locales — details inline.

Reviewed changes

  • Merged main into translation-update — the only new commit since the last review; it brought main's current en.json and locale content into the branch, which is what exposed the stale keys below. Several translation values also changed as a result of the merge resolution.
  • Resume-after-restart, notebook, Xcode-banner, and OpenCode Go copy — carried over from the last review; the two open Korean terminology threads remain unaddressed and are left open rather than re-raised.

The other three localization gates (verify:localization-coverage, verify:localization-extraction, verify:localization-runtime-catalog) pass at this head, and all five catalogs parse with no duplicate keys.

Pullfrog  | Fix all ➔ | Fix 👍s ➔ | View workflow run | Using DeepSeek Flash (free via Pullfrog for OSS) | 𝕏

Comment thread src/renderer/src/i18n/locales/es.json Resolved

@pullfrog pullfrog 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.

Important

The static analysis CI job is red at this head: verify:localization-catalog still fails on two stale IpynbViewer keys present in all five locales (details inline). This must be cleared before merge.

Reviewed changes

The only new commit since the last Pullfrog review (4d506e8) is a369866 — a terminology pass responding to the prior Korean threads:

  • French resume-conflict guidance — reworded NativeChatResumeFailureGuidance.conflict to tell the reader to close the other Orca window or terminal.
  • Korean resume terminology — normalized 다시 시작 → 재개 across NativeChatResumeStatusSegment, NativeChatResumeOnRestartModal outcome rows, NativeChatResumeOutcomeRow, and NativeChatResumeFailureGuidance, so "resume" no longer collides with "restart" in checkTooltip.
  • Korean context-usage title — aligned contextUsage.title to 컨텍스트, matching its label.

The other three locale gates (verify:localization-coverage, verify:localization-extraction, verify:localization-runtime-catalog) pass at this head, and all five catalogs parse with no duplicate keys.

Pullfrog  | Fix all ➔ | Fix 👍s ➔ | View workflow run | Using DeepSeek Flash (free via Pullfrog for OSS) | 𝕏

Comment thread src/renderer/src/i18n/locales/es.json Resolved
- Standardize Korean terminology from "restart" to "resume" for chat
  resume functionality
- Clarify French error message for conflicting Orca windows/terminals
- Fix Korean context translation (문맥 → 컨텍스트)

@pullfrog pullfrog 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.

✅ No new issues found.

Reviewed changes

The only new commit since the prior Pullfrog review (a369866) is feda60f — a notebook-translation cleanup that also clears the CI blocker:

  • Removed the stale IpynbViewer keys — chooseAnother and installFailed are gone from all five locales, so verify:localization-catalog now passes (re-ran locally: exit 0, no extras).
  • Retranslated the notebook kernel copy — reworded the ipynb lifecycle/setup/error strings across es/fr/ja/ko/zh (kernelDied, missingIpykernel, runAll, interrupt, …), and dropped a duplicate pythonOnly key in ko.json.

I re-ran the failing gate plus the targeted locale suites at this head: verify:localization-catalog passes and all 81 locale tests pass (translation-policy incl. round5/es-pr/zh-status-bar, generic-ui-terms, catalog, jsx spacing guard). The values-only delta leaves the other three localization gates unaffected, and all five catalogs parse with no duplicate keys. The prior blocking thread is replied to and resolved; the pending native-speaker pass noted in the PR body remains the author's call.

Pullfrog  | View workflow run | Using DeepSeek Flash (free via Pullfrog for OSS) | 𝕏

@AmethystLiang
AmethystLiang merged commit c1edd1d into main Sep 25, 2026
30 checks passed
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.

1 participant