Repository navigation
fix(i18n): parity suite runs, and 54 missing keys translated in 61 locales - #119
Merged
Merged
Conversation
The suite imported upstream's Electron renderer dictionaries (desktop/src/renderer/i18n), which do not exist in this Tauri app, so every run failed on "Cannot find module" before comparing a single key, and the real gaps were invisible. With the dead domain removed it runs: 4 of 5 checks pass, and the 5th reports 53 keys missing from all 61 locales (translated in the next commit). Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_0178ACkfNSfZq61Zejqk55PG
Every non-English locale was missing the same keys: the voice UI
(ui.promptInput.dictate.*), the dictation microphone setting, the dictate
command, command-palette filters, status dots, session panel add, the
auto-update setting and ui.promptInput.integrations. The parity suite now
passes in full (5/5), with 0 keys missing in app and ui.
How: each locale reuses its own file's existing terminology (prompt,
session, copy, retry, background...), placeholders and plural families are
preserved, English is untouched. A few existing strings that were clear
machine-translation errors were not reused (e.g. hu "Collapse" as a crash,
tk "Dismiss" as firing someone); "Dismiss" uses "Close" in de/es/br/pl
where it would otherwise equal "Discard" in the same toast.
Needs native review (no external corpus was consulted): dz (weakest), dv,
am, my, si, lo, km (coined "dictate" verbs), pa (Shahmukhi, as the file
is), ur, ne, mn, tg, tk, uz, ka, hy, fo, is.
Known English-source issue, not changed here: ui.promptInput.dictate.saved
.one is "1 saved recording" without {{count}}, so the parity test cannot
require the extra plural categories, and in ru/uk/bs/hr/sr/lt/lv/is/mk the
"one" category also covers 21, 31... (21 would read "1 saved recording").
Fix: make English .one "{{count}} saved recording", then add the extra
categories.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_0178ACkfNSfZq61Zejqk55PG
mayoalexander
added a commit
that referenced
this pull request
Oct 31, 2026
… sendAndLog, Hive reads on top Conflicts: - platform-mail.ts: main's send/reply kept (#191605, sendAndLog logging). The PR's numeric-id 'mail reply' over Hive is dropped: two commands cannot share the name, and it needs daemon #28 and API #119, both unmerged. inbox/search/read over Hive, the classifier and intent stay. - capabilities.json: main's, regenerated. Follow-on fixes: - 'mail read' no longer points at a reply command that does not take that id. - a body fetched by id is only used if sender and subject match: ids are per Mac, the rail unpinned. - intent no longer says send/reply/iMessage are routed over Hive. They are not. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This was referenced Oct 31, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Issue for this PR
The i18n parity suite never actually ran. It imported upstream's Electron renderer dictionaries, which don't exist in this Tauri app, and failed with "Cannot find module" before comparing any keys. Behind that crash, 54 keys were missing from every one of the 61 locales.
Type of change
What does this PR do?
test(app): removes the deaddesktopdomain fromparity.test.ts, so the suite compares the dictionaries that exist (app and ui).feat(i18n): adds the 54 missing keys to all 61 locales (122 files, insertions only,en.tsuntouched). They cover the voice UI (ui.promptInput.dictate.*), the dictation microphone setting, the dictate command, command-palette filters, status dots, session panel add, the auto-update setting, andui.promptInput.integrations.Each locale reuses its file's existing terminology, and placeholders and plural families are preserved. A handful of existing strings that were clear machine-translation errors weren't reused; details are in the commit message.
Needs native review (no external corpus was consulted): dz, dv, am, my, si, lo, km, pa, ur, ne, mn, tg, tk, uz, ka, hy, fo, is.
Known English-source issue, not changed here:
ui.promptInput.dictate.saved.oneis "1 saved recording", without{{count}}. In ru/uk/bs/hr/sr/lt/lv/is/mk the "one" category also covers 21, 31 and so on, so it misreads there. The fix is an English copy change ("{{count}} saved recording") plus the extra plural categories.How did you verify your code works?
bun test --conditions=solid --preload ./happydom.ts src/i18n(packages/app): 13 pass, 0 fail. The parity suite is 5/5.bun run typecheck: clean in packages/app and packages/ui.git diff --stat: 122 locale files, 3441 insertions, 0 deletions.Screenshots / recordings
N/A.
Checklist
🤖 Generated with Claude Code