Skip to content

fix(mobile): correct Khmer code reviewer copy - #8452

Merged
iscekic merged 3 commits into
mainfrom
drain/km-code-reviewer-copy
Oct 21, 2026
Merged

iscekic merged 3 commits into
mainfrom
drain/km-code-reviewer-copy

Conversation

@iscekic

@iscekic iscekic commented Oct 21, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Twelve Khmer values in the Code Reviewer copy are out of step with the English source and with each other:

  • One product term. common.codeReviewer (screen eyebrow, profile row, home card), codeReviewer.actionRequired.title (the banner that sits directly under that eyebrow) and codeReviewer.reviewDetail.retryNeedsSettings said "code reviewer" (person) while all six action-required descriptions, the update-failure message and the review-list empty state said "code review tool". All three now use the term the descriptions use.
  • One noun for the review. codeReviewer.reviewDetail.title said ការពិនិត្យ while every other key in that family (cancel, retry, transcript, failed, completed) said ការត្រួតពិនិត្យ. The title now matches the family.
  • Manual review empty state said the user requests a review and dropped the manual qualifier. It now says the user starts a manual review, using the term the manual-review screen title and the "Start a manual review" action already use.
  • Interrupted rows said the review was paused midway, which implies it can continue. The transcript row now says the review stopped, parallel to the completed row, and the status chip on the review list follows.
  • Tool error row dropped the ឧបករណ៍៖ {{name}} label separator its sibling uses and restructured the label-plus-state into a sentence. It now reads ឧបករណ៍៖ {{name}} — កំហុស, mirroring the English colon and dash.
  • Terminal sentence mark removed from five heading-style values the English source leaves unpunctuated: the action-required banner title, the provider-status error title, the review-load error title, the no-findings empty state, and the error template after its interpolated message. The resolved message now supplies its own punctuation.

Keys, placeholders, $t() references, and file structure are unchanged: 3290 keys before and after, zero keys added or removed, twelve value lines changed (plus the banner title mark in a follow-up commit).

Key Before After
common.codeReviewer អ្នកពិនិត្យកូដ ឧបករណ៍ត្រួតពិនិត្យកូដ
codeReviewer.actionRequired.title អ្នកពិនិត្យកូដមានបញ្ហាដែលត្រូវដោះស្រាយ។ ឧបករណ៍ត្រួតពិនិត្យកូដមានបញ្ហាដែលត្រូវដោះស្រាយ
codeReviewer.reviewDetail.retryNeedsSettings អ្នកពិនិត្យកូដត្រូវបានបិទ… ឧបករណ៍ត្រួតពិនិត្យកូដត្រូវបានបិទ…
codeReviewer.reviewDetail.title ការពិនិត្យ ការត្រួតពិនិត្យ
codeReviewer.reviewDetail.reviewInterrupted ការត្រួតពិនិត្យបានផ្អាកកណ្តាលទី ការត្រួតពិនិត្យបានឈប់
codeReviewer.status.interrupted បានផ្អាកកណ្តាលទី បានឈប់
codeReviewer.reviewDetail.toolNameError ឧបករណ៍ {{name}} មានកំហុស។ ឧបករណ៍៖ {{name}} — កំហុស
codeReviewer.reviewDetail.errorWithMessage មានកំហុស៖ {{message}}។ មានកំហុស៖ {{message}}
codeReviewer.reviewDetail.couldNotLoad មិនអាចផ្ទុកការត្រួតពិនិត្យបានទេ។ មិនអាចផ្ទុកការត្រួតពិនិត្យបានទេ
codeReviewer.reviewDetail.noFindings រកមិនឃើញបញ្ហាទេ។ រកមិនឃើញបញ្ហាទេ
codeReviewer.manualReview.couldNotCheckProviderStatus មិនអាចពិនិត្យស្ថានភាពអ្នកផ្តល់សេវាបានទេ។ មិនអាចពិនិត្យស្ថានភាពអ្នកផ្តល់សេវាបានទេ
codeReviewer.manualReview.connectProviderDescription ភ្ជាប់ GitHub ដើម្បីស្នើសុំការត្រួតពិនិត្យសំណើបញ្ចូលកូដ។ ភ្ជាប់ GitHub ដើម្បីចាប់ផ្តើមការត្រួតពិនិត្យតាមការស្នើសុំលើសំណើបញ្ចូលកូដ។

Copy lives in en.json; the other catalogs are reviewed against the screens their keys render on, so a reviewed translation slice edits one catalog by hand and lets the parity checks guard it. This change touches the Khmer catalog only.

Verification

Run on the work VM against this branch.

  • pnpm --filter kilo-app check:i18n — Found 0 warnings and 0 errors, check-catalogs: 87 languages, every catalog matches en.json.
  • node tools/i18n/check-plurals.mjs — every counted message and every locale declares its plural categories.
  • pnpm --filter kilo-app format:check — clean.
  • pnpm --filter kilo-app exec vitest run src/i18n — 17 files, 1614 tests passed (with a throwaway smoke test in place).
  • pnpm --filter kilo-app exec vitest run src/components/code-reviewer — 9 files, 175 tests passed.

The one-wording check groups English Review with the PR-review label and an onboarding label; the Khmer catalog already carries the review exception, so the title change needs no exception edit and no other locale value moved.

Render smoke (throwaway test, deleted before the commit) switched the app's own i18next instance to Khmer with fallbackLng: 'en' and drove the real consumers, asserting exactUsedKey so an English fallback fails the run. Rendered output:

common.codeReviewer = ឧបករណ៍ត្រួតពិនិត្យកូដ
codeReviewer.actionRequired.title = ឧបករណ៍ត្រួតពិនិត្យកូដមានបញ្ហាដែលត្រូវដោះស្រាយ
codeReviewer.reviewDetail.title = ការត្រួតពិនិត្យ
codeReviewer.reviewDetail.couldNotLoad = មិនអាចផ្ទុកការត្រួតពិនិត្យបានទេ
codeReviewer.reviewDetail.noFindings = រកមិនឃើញបញ្ហាទេ
codeReviewer.reviewDetail.toolName = ឧបករណ៍៖ grep
codeReviewer.reviewDetail.toolNameError = ឧបករណ៍៖ grep — កំហុស
codeReviewer.reviewDetail.reviewCompleted = ការត្រួតពិនិត្យបានបញ្ចប់
codeReviewer.reviewDetail.reviewInterrupted = ការត្រួតពិនិត្យបានឈប់
codeReviewer.status.interrupted = បានឈប់
codeReviewer.reviewDetail.errorWithMessage = មានកំហុស៖ boom
codeReviewer.manualReview.couldNotCheckProviderStatus = មិនអាចពិនិត្យស្ថានភាពអ្នកផ្តល់សេវាបានទេ
codeReviewer.manualReview.connectProviderDescription = ភ្ជាប់ GitHub ដើម្បីចាប់ផ្តើមការត្រួតពិនិត្យតាមការស្នើសុំលើសំណើបញ្ចូលកូដ។
row(interrupted) = ការត្រួតពិនិត្យបានឈប់
row(error) = មានកំហុស៖ boom
row(tool error) = ឧបករណ៍៖ grep — កំហុស
reviewFailureLabel(byok_invalid_key) = ឧបករណ៍ត្រួតពិនិត្យកូដត្រូវបានបិទ ព្រោះសោ API សម្រាប់ BYOK ដែលបានជ្រើសរើសមិនត្រឹមត្រូវ ត្រូវបានដកហូត ឬខ្វះសិទ្ធិ។ សូមធ្វើបច្ចុប្បន្នភាពសោ ឬជ្រើសរើសម៉ូដែលផ្សេង រួចបើកឧបករណ៍ត្រួតពិនិត្យកូដឡើងវិញ។

row(...) lines come from the live transcript-row mapper: an interrupted stream event, an error event carrying a server message, and a failed tool-call part. reviewFailureLabel is the failed-review recovery text built from the action-required keys.

Limitation: these surfaces sit behind a signed-in account with a connected provider and a real review, so no emulator screenshot is attached. The evidence above exercises the same translator instance and the same consumer functions the screens call; there is no layout change to observe.

Proxy answers

The owner's proxy gave these answers in the owner's place.

  1. Question: Product term: The Code Reviewer product name is split in the Khmer catalog: common.codeReviewer (screen eyebrow, profile row, home card), reviewDetail.retryNeedsSettings and actionRequired.title say អ្នកពិនិត្យកូដ (person); all 6 actionRequired descriptions, updateFailed and reviewList.noReviewsDescription say ឧបករណ៍ត្រួតពិនិត្យកូដ (tool). The finding only cites actionRequired.title, and the banner sits directly under an eyebrow from common.codeReviewer. Which scope do I implement?
    Answer: Whole family (3 values)
    Confidence: 0.70 · Precedent: Fix the root cause and the class of the issue: "if anything repeats the same mistake over and over again, fix the class"; "if you saw a gap, fix it"
  2. Question: Review noun: Inside reviewDetail, the title says ការពិនិត្យ while cancel/retry/transcript/reviewFailed/reviewCompleted all say ការត្រួតពិនិត្យ. English 'Review' is also prReview.review (ការពិនិត្យ) and an excluded-feature onboarding key; the km one-wording exception 'review' already exists, so either direction passes the checker. Which direction?
    Answer: Title → ការត្រួតពិនិត្យ
    Confidence: 0.85 · Precedent: Do the least work possible with no drop in quality: "do the least amount of work possible, with no drop in quality"
  3. Question: Manual review gloss: connectProviderDescription must say the user starts a manual review. The catalog's existing gloss for this feature is តាមការស្នើសុំ ('on request'), used by manualReview.title and reviewList.startManualReview. Which phrasing?
    Answer: Reuse តាមការស្នើសុំ
    Confidence: 0.60 · Precedent: Keep similar elements consistent across surfaces: the owner asked that the thought row match the tool call row
  4. Question: Interrupted: reviewInterrupted becomes ការត្រួតពិនិត្យបានឈប់ (parallel to reviewCompleted = ការត្រួតពិនិត្យបានបញ្ចប់). The status chip codeReviewer.status.interrupted (English 'Interrupted', rendered on the review list) still says បានផ្អាកកណ្តាលទី ('paused midway'), same defect class, but no finding cites it. Do I change it too?
    Answer: Align the chip
    Confidence: 0.65 · Precedent: If you see a gap or an error, fix it: "if you saw a gap, fix it"; fix the class: "fix class of issue preventing progress"

Use one Khmer term for the reviewer product across the product name, the
action-required banner and its descriptions, and the retry notice, and one
noun for the review across the review detail family.

Retranslate the manual review empty state so it says the user starts the
review, the interrupted transcript row and status chip so they say the review
stopped, and the tool-error row so it keeps the label separator its sibling
uses. Drop the terminal sentence mark from title and label values that the
English source leaves unpunctuated, and stop appending one after the
interpolated error message.

Verified with the catalog and plural checks, the mobile i18n and
code-reviewer suites, and a throwaway render smoke through the app's real
translator and transcript-row helpers.
@iscekic iscekic added drain Work item from the findings drain janitor:i18n Janitor finding: mobile copy and catalog checks labels Oct 21, 2026
Comment thread apps/mobile/src/i18n/locales/km.json Resolved
@kilo-code-bot

kilo-code-bot Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Executive Summary

The follow-up commit removes the terminal ។ from codeReviewer.actionRequired.title, resolving the only outstanding suggestion; the Khmer catalog now matches the unpunctuated English source.

Assumptions: [INFERENCE] The i18n catalog/plural checks could not be executed in this read-only review. JSON validity is inferred from the diff, which changes only characters inside the string value and retains the trailing comma and structure.

Overview

Severity Count
CRITICAL 0
WARNING 0
SUGGESTION 0
Files Reviewed (1 file)
  • apps/mobile/src/i18n/locales/km.json - 0 issues (prior suggestion at line 1576 verified fixed)
Previous Review Summary (commit ddf8729)

Current summary above is authoritative. Previous snapshots are kept for context only.

Previous review (commit ddf8729)

Status: 1 Issue Found | Recommendation: Address before merge

Executive Summary

The Khmer copy fixes are consistent with the English source and the stated term choices; one edited banner title still carries a terminal ។ that English omits.

Assumptions: [INFERENCE] The i18n catalog/plural checks and Khmer linguistic accuracy could not be independently executed in this read-only review; the changes are value-only, with no key, placeholder, or $t() edits.

Overview

Severity Count
CRITICAL 0
WARNING 0
SUGGESTION 1
Issue Details (click to expand)

SUGGESTION

File Line Issue
apps/mobile/src/i18n/locales/km.json 1576 actionRequired.title still ends in ។ although en.json ("Code Reviewer needs attention") has no terminal mark
Files Reviewed (1 file)
  • apps/mobile/src/i18n/locales/km.json - 1 suggestion

Reviewed by deepseek-flash-latest · Input: 30.1K · Output: 1.5K · Cached: 177.5K

Review guidance: REVIEW.md from base branch main

The English banner title is a heading with no terminal punctuation, and the
other title values in this slice already lost theirs. Align it with them.
@iscekic iscekic added the merge:bot Bot-owned review; merge when ready once readiness passes and a review approves. label Oct 21, 2026
…r-copy

# Conflicts:
#	apps/mobile/src/i18n/locales/km.json
@iscekic iscekic added merge:bot Bot-owned review; merge when ready once readiness passes and a review approves. and removed merge:bot Bot-owned review; merge when ready once readiness passes and a review approves. labels Oct 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

drain Work item from the findings drain janitor:i18n Janitor finding: mobile copy and catalog checks merge:bot Bot-owned review; merge when ready once readiness passes and a review approves.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants