Repository navigation
fix(mobile): translate every catalog against its UI context - #5880
Merged
Merged
Conversation
Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1250 strings changed.
Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1317 strings changed.
Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1096 strings changed.
Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1092 strings changed.
Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1280 strings changed.
Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1362 strings changed.
Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1374 strings changed.
Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1275 strings changed.
Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1209 strings changed.
Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1310 strings changed.
Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1358 strings changed.
Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1403 strings changed.
Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1421 strings changed.
Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1337 strings changed.
Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1331 strings changed.
Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1455 strings changed.
Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1253 strings changed.
Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1349 strings changed.
Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1321 strings changed.
Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1356 strings changed.
Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1318 strings changed.
Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1469 strings changed.
Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1688 strings changed.
Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1642 strings changed.
Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1712 strings changed.
Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1354 strings changed.
Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1513 strings changed.
Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1576 strings changed.
Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1515 strings changed.
Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1509 strings changed.
Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1425 strings changed.
Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 2484 strings changed.
Every locale now leaves the product name as written, so the identical-to-English rule needs the key listed with the other proper nouns.
Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1615 strings changed.
Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1855 strings changed.
Copy that reads the same in two places belongs to one key; two keys holding one English string drift apart the moment someone translates one of them. Each call site now points at the surviving key.
Copy that reads the same in two places belongs to one key; two keys holding one English string drift apart the moment someone translates one of them. Each call site now points at the surviving key.
Copy that reads the same in two places belongs to one key; two keys holding one English string drift apart the moment someone translates one of them. Each call site now points at the surviving key.
Copy that reads the same in two places belongs to one key; two keys holding one English string drift apart the moment someone translates one of them. Each call site now points at the surviving key.
Two keys holding the same English string drift apart the moment someone translates one of them, and nothing downstream can tell which of the two the reader was meant to see. The check now fails on duplicate copy and names both keys. TWO_SENSE_COPY lists the twelve strings this product genuinely uses two ways, each with the reason. Document the rule in the mobile agent guide, which carried no translation guidance at all.
Case carries meaning the review pass could not see one string at a time. A badge is drawn in capitals, and a dismissal reason is a lowercase fragment that reads inside a sentence another key starts. Both survive only when every catalog follows the English lead, so the rule is now applied across all 86: - English in full capitals keeps full capitals - English starting lowercase keeps a lowercase first letter - English starting uppercase keeps an uppercase first letter The first-letter rules touch one character, so they never impose English title case on a language that does not use it. A string a placeholder opens is left alone, because the interpolated value sets the case there. Georgian is exempt from capitals, having no case distinction.
Two glanceable tests spell a key inside a longer expected string, so the key rename could not reach them. The session row test asserts Spanish list composition; its LIVE wording changed with the review pass.
Main added 15 keys under prReview.overview and changed no existing value, so every conflicted catalog keeps this branch's reviewed copy and takes main's values only for the keys main added. Merging the other direction would resurrect the keys the deduplication removed.
Contributor
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Files Reviewed (1 files)
Previous Review Summaries (3 snapshots, latest commit f83e6fc)Current summary above is authoritative. Previous snapshots are kept for context only. Previous review (commit f83e6fc)Status: No Issues Found | Recommendation: Merge Files Reviewed (1 files)
Previous review (commit 360b75c)Status: No Issues Found | Recommendation: Merge Files Reviewed (91 files)
Previous review (commit af8e283)Status: No Issues Found | Recommendation: Merge Files Reviewed (311 files)
Reviewed by grok-4.6 · Input: 108.7K · Output: 4.1K · Cached: 136.6K Review guidance: REVIEW.md from base branch |
The case pass recased the first letter of every value to follow the English copy. Two languages do not take that rule. Greek keeps the tonos on a capital initial and drops it only in full capitals, so "Άνοιγμα" had wrongly become "Ανοιγμα". 137 values are restored. Georgian Mkhedruli has no letter case. Uppercasing writes a Mtavruli letter, which the script reserves for a full-capitals effect, so 1980 values had gained a capital the orthography does not use.
Main added prReview.overview.reviewDismissed, which holds the same copy as securityAgent.deadline.dismissed. Both are a state label with one sense, so the copy belongs to one key and both call sites now read common.dismissed.
The case pass had to be undone in Greek and Georgian. Neither language takes the English rule, so the note says so before the next pass repeats it.
The pull request overview keys arrived after the review pass, so their values were still the old machine translation. Every locale now reviewed them against the screen, like every other key. 549 strings changed.
pandemicsyn
approved these changes
Sep 4, 2026
The note read as though only one plural family's members were exempt. Every plural key is, and the reason the gap is safe belongs next to the skip.
iscekic
enabled auto-merge (squash)
September 4, 2026 17:10
The tab layout now reads `common.kiloclaw`, `common.agents`, `common.chat` and `common.profile`. The guard test still asserted the old `tabs.*` keys, and the profile label is wrapped across lines now, so its regex needs the same whitespace tolerance as the others.
iscekic
added a commit
that referenced
this pull request
Sep 5, 2026
* fix(mobile): correct de translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1250 strings changed. * fix(mobile): correct fr translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1317 strings changed. * fix(mobile): correct es translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1096 strings changed. * fix(mobile): correct pt-BR translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1092 strings changed. * fix(mobile): correct pt translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1280 strings changed. * fix(mobile): correct it translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1362 strings changed. * fix(mobile): correct nl translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1374 strings changed. * fix(mobile): correct ja translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1275 strings changed. * fix(mobile): correct ko translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1209 strings changed. * fix(mobile): correct zh-Hans translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1310 strings changed. * fix(mobile): correct zh-Hant translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1358 strings changed. * fix(mobile): correct ru translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1403 strings changed. * fix(mobile): correct pl translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1421 strings changed. * fix(mobile): correct tr translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1337 strings changed. * fix(mobile): correct id translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1331 strings changed. * fix(mobile): correct hi translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1455 strings changed. * fix(mobile): correct ar translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1253 strings changed. * fix(mobile): correct vi translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1349 strings changed. * fix(mobile): correct th translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1321 strings changed. * fix(mobile): correct uk translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1356 strings changed. * fix(mobile): correct af translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1318 strings changed. * fix(mobile): correct sq translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1469 strings changed. * fix(mobile): correct hy translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1688 strings changed. * fix(mobile): correct am translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1642 strings changed. * fix(mobile): correct az translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1712 strings changed. * fix(mobile): correct eu translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1354 strings changed. * fix(mobile): correct be translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1513 strings changed. * fix(mobile): correct bn translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1576 strings changed. * fix(mobile): correct bs translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1515 strings changed. * fix(mobile): correct bg translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1509 strings changed. * fix(mobile): correct ca translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1311 strings changed. * fix(mobile): correct my translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1927 strings changed. * fix(mobile): correct hr translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1499 strings changed. * fix(mobile): correct cs translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1429 strings changed. * fix(mobile): correct da translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1432 strings changed. * fix(mobile): correct et translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1282 strings changed. * fix(mobile): correct fil translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1857 strings changed. * fix(mobile): correct fi translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1327 strings changed. * fix(mobile): correct gl translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1256 strings changed. * fix(mobile): correct ka translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1622 strings changed. * fix(mobile): correct el translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1434 strings changed. * fix(mobile): correct gu translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1657 strings changed. * fix(mobile): correct ht translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1712 strings changed. * fix(mobile): correct ha translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1782 strings changed. * fix(mobile): correct he translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1729 strings changed. * fix(mobile): correct hu translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1471 strings changed. * fix(mobile): correct is translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1576 strings changed. * fix(mobile): correct ig translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1795 strings changed. * fix(mobile): correct ga translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1403 strings changed. * fix(mobile): correct kk translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1589 strings changed. * fix(mobile): correct kn translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1540 strings changed. * fix(mobile): correct km translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1538 strings changed. * fix(mobile): correct ckb translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1735 strings changed. * fix(mobile): correct lv translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1448 strings changed. * fix(mobile): correct lt translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1495 strings changed. * fix(mobile): correct mk translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1522 strings changed. * fix(mobile): correct mg translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1942 strings changed. * fix(mobile): correct ms translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1293 strings changed. * fix(mobile): correct ml translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1385 strings changed. * fix(mobile): correct mt translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1515 strings changed. * fix(mobile): correct mi translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1815 strings changed. * fix(mobile): correct mr translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1608 strings changed. * fix(mobile): correct mn translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1608 strings changed. * fix(mobile): correct ne translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1582 strings changed. * fix(mobile): correct nb translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1366 strings changed. * fix(mobile): correct or translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1664 strings changed. * fix(mobile): correct om translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 2203 strings changed. * fix(mobile): correct fa translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1426 strings changed. * test(mobile): allowlist the KiloClaw product name in the catalog check Every locale now leaves the product name as written, which is correct, so the identical-to-English rule needs these three keys listed like the other proper nouns. * fix(mobile): correct ps translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1844 strings changed. * fix(mobile): correct pa translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1551 strings changed. * fix(mobile): correct ro translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1432 strings changed. * fix(mobile): correct sr translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1492 strings changed. * fix(mobile): correct si translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1568 strings changed. * fix(mobile): correct sk translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1521 strings changed. * fix(mobile): correct sl translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1443 strings changed. * fix(mobile): correct so translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1906 strings changed. * fix(mobile): correct sw translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1484 strings changed. * fix(mobile): correct sv translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1363 strings changed. * fix(mobile): correct ta translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1846 strings changed. * fix(mobile): correct ur translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1469 strings changed. * fix(mobile): correct uz translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1640 strings changed. * test(mobile): allowlist Bitbucket in the catalog check The GitHub and GitLab platform names are already listed; Bitbucket was missed and now every locale leaves it as written. * fix(mobile): correct te translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1709 strings changed. * fix(mobile): correct cy translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1425 strings changed. * fix(mobile): correct yo translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 2484 strings changed. * test(mobile): allowlist the Kilo product name in the catalog check Every locale now leaves the product name as written, so the identical-to-English rule needs the key listed with the other proper nouns. * fix(mobile): correct zu translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1615 strings changed. * fix(mobile): correct lo translations for UI context Reviewed every key against the screen it appears on. Fixed grammar, capitalization, placeholder word order, and register. 1855 strings changed. * refactor(mobile): collapse duplicate translation keys, batch 1 of 4 Copy that reads the same in two places belongs to one key; two keys holding one English string drift apart the moment someone translates one of them. Each call site now points at the surviving key. * refactor(mobile): collapse duplicate translation keys, batch 2 of 4 Copy that reads the same in two places belongs to one key; two keys holding one English string drift apart the moment someone translates one of them. Each call site now points at the surviving key. * refactor(mobile): collapse duplicate translation keys, batch 3 of 4 Copy that reads the same in two places belongs to one key; two keys holding one English string drift apart the moment someone translates one of them. Each call site now points at the surviving key. * refactor(mobile): collapse duplicate translation keys, batch 4 of 4 Copy that reads the same in two places belongs to one key; two keys holding one English string drift apart the moment someone translates one of them. Each call site now points at the surviving key. * test(mobile): require one key per piece of copy Two keys holding the same English string drift apart the moment someone translates one of them, and nothing downstream can tell which of the two the reader was meant to see. The check now fails on duplicate copy and names both keys. TWO_SENSE_COPY lists the twelve strings this product genuinely uses two ways, each with the reason. Document the rule in the mobile agent guide, which carried no translation guidance at all. * fix(mobile): restore the case the English copy sets Case carries meaning the review pass could not see one string at a time. A badge is drawn in capitals, and a dismissal reason is a lowercase fragment that reads inside a sentence another key starts. Both survive only when every catalog follows the English lead, so the rule is now applied across all 86: - English in full capitals keeps full capitals - English starting lowercase keeps a lowercase first letter - English starting uppercase keeps an uppercase first letter The first-letter rules touch one character, so they never impose English title case on a language that does not use it. A string a placeholder opens is left alone, because the interpolated value sets the case there. Georgian is exempt from capitals, having no case distinction. * test(mobile): follow the renamed keys and the new Spanish copy Two glanceable tests spell a key inside a longer expected string, so the key rename could not reach them. The session row test asserts Spanish list composition; its LIVE wording changed with the review pass. * fix(mobile): keep Greek accents and drop Georgian capitals The case pass recased the first letter of every value to follow the English copy. Two languages do not take that rule. Greek keeps the tonos on a capital initial and drops it only in full capitals, so "Άνοιγμα" had wrongly become "Ανοιγμα". 137 values are restored. Georgian Mkhedruli has no letter case. Uppercasing writes a Mtavruli letter, which the script reserves for a full-capitals effect, so 1980 values had gained a capital the orthography does not use. * refactor(mobile): point the dismissed label at one key Main added prReview.overview.reviewDismissed, which holds the same copy as securityAgent.deadline.dismissed. Both are a state label with one sense, so the copy belongs to one key and both call sites now read common.dismissed. * docs(mobile): record which languages take the English case The case pass had to be undone in Greek and Georgian. Neither language takes the English rule, so the note says so before the next pass repeats it. * fix(mobile): review the translations main added The pull request overview keys arrived after the review pass, so their values were still the old machine translation. Every locale now reviewed them against the screen, like every other key. 549 strings changed. * docs(i18n): state what the duplicate-copy rule exempts The note read as though only one plural family's members were exempt. Every plural key is, and the reason the gap is safe belongs next to the skip. * fix(dev): track the tab label keys the i18n pass moved to common The tab layout now reads `common.kiloclaw`, `common.agents`, `common.chat` and `common.profile`. The guard test still asserted the old `tabs.*` keys, and the profile label is wrapped across lines now, so its regex needs the same whitespace tolerance as the others.
This was referenced Sep 5, 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.
Why
The catalogs were machine-translated key by key with no idea where each string
appears on screen. That produced grammar errors, English title case copied into
languages that do not use it, labels translated as sentences, and English word
order forced around placeholders.
deshipped"Teilen {{title}}"and"Kommentar"on a button that means comment, the verb.Nothing in the repo told a translator, or an agent, where a key renders.
apps/mobile/AGENTS.mdhad no translation guidance at all.What changed
Every key in all 86 non-English catalogs was reviewed against its call site.
For each key a reviewer saw the surrounding source code, the string's role in the
UI (one of 24:
button,alert-action,screen-title,badge,placeholder,empty-body, …), the English form and capitalization, and the currenttranslation. Mean 1291 of 2736 strings changed per locale.
Examples from
de:prReview.composer.commentKommentarKommentierenbutton, so the action formprReview.hunkRows.fileLoadedOfTotalCount{{displayCount}} Dateien von {{total}} geladen{{displayCount}} von {{total}} Dateien geladenprReview.connectionExpiredGitHub-Verbindung abgelaufen.Die GitHub-Verbindung ist abgelaufen.error-body, needs a full sentencecodeReviewer.titleCode ReviewerCode-Prüferpreferences.autoExpandThinkingDenken automatisch erweiternDenkprozess automatisch aufklappenOne key per piece of copy. 206 groups of keys held identical English, which
cannot be translated apart without drifting. Those collapsed onto one key each:
416 keys dropped, 108 new
common.*keys, 646 call sites repointed.en.jsonwent from 2736 keys to 2428, and stands at 2442 after the merge with main.
Twelve English strings genuinely carry two senses and keep a key each —
Openthe verb versus the state of a pull request,
Commentthe verb versus the noun,Highthe severity versus the thinking effort. Each is recorded with its reason.Case follows the English lead, where the language has case. Case carries
meaning a reviewer cannot see one string at a time: a badge is drawn in capitals,
and a dismissal reason is a lowercase fragment that reads inside a sentence
another key starts. Applied mechanically across all 86 catalogs — full capitals
stay capitals, and the first letter follows English. The first-letter rule
touches one character, so it never imposes English title case. A string a
placeholder opens is left alone, because the interpolated value sets the case
there.
Two languages do not take the rule, and the first pass got both wrong:
Mtavruli letter, which the language uses only for a full-capitals effect, so
1980 values had gained a capital the orthography does not use. Georgian is now
exempt from every case rule, which is what
label-reference.test.tsalreadyassumed.
so
Άνοιγμαhad becomeΑνοιγμαin 137 values. A recase that changes whichletter it is, and not only its case, is now skipped.
apps/mobile/AGENTS.mdrecords both, so the next pass does not repeat them.Guardrails, so this does not come back
check-catalogs.mjsnow fails on duplicate copy, naming both keys and theescape hatch. Verified against a deliberately introduced duplicate. It already
runs in CI via
pnpm check:i18n.apps/mobile/AGENTS.mdgains a## Translationssection: editen.jsononly,search for the string before adding a key, put shared copy under
common.,name a label with
$t(key), never assume English word order.Context fit, capitalization and placeholder order need judgement and are not
mechanically checkable — a "don't mirror English title case" rule fires on every
German noun. Those are covered by the guide, not a check.
Three latent bugs this surfaced
KiloClaw,BitbucketandKiloare product names that should never betranslated, but a few locales' machine translation had mangled them, so the
"identical to English in every locale" rule never fired. Now that every locale
leaves them as written, it does. Each is allowlisted alongside the other proper
nouns, in its own commit.
Merged with main
Main added 15 keys under
prReview.overviewfor the pull request sidebarmetadata and changed no existing value, so each of the 31 conflicted catalogs
keeps this branch's reviewed copy and takes main's value only for those 15 keys.
Merging the other direction would have resurrected every key the deduplication
removed.
Two follow-ups came out of it:
prReview.overview.reviewDismissedholds the same copy assecurityAgent.deadline.dismissed, and both are a state label with one sense.The new duplicate-copy check caught it. Both call sites now read
common.dismissed.were still the old machine translation. All 86 locales reviewed them against
the overview screen, like every other key: 549 strings changed.
Review notes
with main, and the top-up review. Reviewing per commit is far easier than the
squashed diff.
check:i18n,format:check, rootlint-all.sh,root
typecheck-all.sh.response kept timing out upstream.