Repository navigation
Add the /translate skill, with translator and reviewer agents, style sheets and a glossary - #1204
Merged
Merged
Conversation
…sheets and a glossary
timche
added a commit
that referenced
this pull request
Oct 23, 2026
…sheets and a glossary (#1204) * Add the /translate skill, with translator and reviewer agents, style sheets and a glossary * Pair prior art by similarity, giving each old entry to at most one new one * Warn when the collector's --base does not resolve * Typecheck the skills' scripts with the root tsconfig * Use Gmail's word for what Gmail also shows, with sources per locale * Follow Apple's Japanese punctuation: half-width ? and !, and curly quotes
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.
Slice 3 of translating Meru's interface, after the groundwork in #1197 (#1197). This adds the tooling that writes and reviews translations. No catalog other than English ships yet, so with English alone
/translatesays there is nothing to translate and stops./translate(.claude/skills/translate/SKILL.md):collect.tsreads that from git, becauseextract --cleandrops obsolete entries.translatorper locale, in parallel.translation-reviewerper locale. The reviewer's findings go back to the same translator, continued, for at most two rounds.check sync --clean,check missing,i18n:checkandcompile --strict.translatorruns onclaude-opus-5-5at high effort, andtranslation-revieweronclaude-sonnet-5-5at medium effort. These come from a blind test of the three current models on real strings in German, Polish and Japanese.languages/<tag>.md). Each holds its language's address form, label form, capitalization, Settings word, plural categories and traps, with Apple's words read from the macOS Mail and AppKit string tables.CLAUDE.mdsays CI stays strict: a contributor without Claude Code gets a red run, and the maintainer runs/translateon the pull request before merging.tsconfig.jsonnow includes.claude/skills/**/*.ts, socollect.tsis typechecked.Proof
Run on a scratch branch from this one that ships
de,plandja, with a plural message and a<0>tag message added. Onbetathere is no/translateto run.Before
/translate:After
env -u CLAUDE_CODE_EFFORT_LEVEL claude -p "/translate". Three translators ran in parallel, then three reviewers, and all passed review:<0>Cmd+K</0>, um deine Accounts zu durchsuchen. The toast reads Rückgängig machen and Nachricht gesendet.Reviewer. I planted German Ihres, a dropped
<0>tag, a dropped{systemLabel}, a Polish plural withoutfewand a Japanese half-width comma. The reviewers named all five.Fix loop. A finding sent back with
SendMessagereached the original German translator. It fixed the entry, and the re-review passed underclaude -p.Prior art. When two entries share the comment "Menu item" and one is reworded, the reworded one is paired with its own old translation, at a similarity of 0.92, and never with the other entry's.
fmt:check,lint,typesandbun test --isolatepass.Risk
Low. The change is tooling and docs; no app code changes. Revert the squash commit to undo it.