Repository navigation
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
|
✅ Evidence received. Before and after are both attached. Thanks — this is what makes a PR reviewable in one pass. |
The tr locale's pixel headings fell back glyph by glyph to a CJK system face: 'DİL' read 'D:L', 'Bağlantılar' read 'Ba;lantılar'. Re-cut the latin subset from the upstream OFL file with those five code points added (4.4KB, smaller than before). A test reads the woff2 cmap and checks every Turkish letter. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The mock event loop (mockEvents.ts) wrote English literals into each
demo agent's action and assistant text, so the floor's thought clouds
('heading back to desk', 'running tests', ...) stayed English in every
locale. They now come from a demoFloor key tree in en, zh-CN, ar and tr.
Real agents' bubbles are still built from live tool calls and are not
touched here.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
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.
What & why
Adds Turkish (
tr) as a fourth UI language, next to English, Simplified Chinese and Arabic, so Turkish speakers can use the app in their own language.src/renderer/src/i18n/locales/tr.json: all 1170 keys, same key tree asen.json.src/renderer/src/i18n/index.ts: registerstr(import,LANGUAGESentry "Türkçe", left-to-right,resources,supportedLngs).test/turkish-ui.test.cjs: the same structural checks the Arabic locale has: registration, identical key tree, no English left behind (with an allowlist for product names, paths, pure format strings and words that are the same in Turkish, such as "terminal" and "Model"), every{{variable}}kept, inline tags and arrays kept.press-start-2p-latin-400.woff2): the latin subset had no İ Ğ ğ Ş ş, so Turkish headings fell back per glyph to a CJK system face ("DİL" read "D:L", "Bağlantılar" read "Ba;lantılar"). Re-cut the subset from the upstream OFL Press Start 2P file with those five code points added (4.4 KB, smaller than before; same OFL license, attribution updated inLICENSE.txt). A new test intest/bundled-fonts.test.cjsreads the woff2 cmap and checks every Turkish letter; it fails on the old file. Inter and JetBrains Mono still fall back to the system sans/mono for these five letters, which looks the same at body sizes.store/mockEvents.ts) wrote English literals ("heading back to desk", "running tests", "fetching docs", "updating the todo board", …) into the demo agents' action and assistant text. They now come from a newdemoFloorkey tree, translated inen,zh-CN,arandtr. Bubbles of real agents are built from their live tool calls and are not changed here.Type of change
Evidence
Both sides are the built renderer (
out/renderer) in Chrome at 1440×900, same mock roster, same light theme. Before =mainat 4d30bc4 with English; After = this branch with Turkish picked. In the Settings shots the language<select>is shown expanded as a list so every option is visible.Before
Office floor on
main(English):Settings → General → Language on
main: English, 简体中文, العربية. No Turkish.After
Office floor on this branch with Turkish selected:
Settings → General → Language on this branch: "Türkçe" is selected, the Settings UI is in Turkish, and the pixel headings now render "DİL", "BİLDİRİMLER" and "Bağlantılar" correctly. The floor bubbles in the shot above are Turkish too ("panoya gidiyor", "PixelPanel.tsx düzenleniyor").
How I tested it
node --test test/turkish-ui.test.cjs test/arabic-ui.test.cjs test/i18n-god-name.test.cjs test/hooks-notification.test.cjs: 36/36 pass.test/bundled-fonts.test.cjs: 10/10 pass.tsc --noEmit -p tsconfig.web.json: no errors.npm run test:focused: no new failures. The same 106 files fail with and without this change on my machine, because localnode_modulesis missingtypescript.tsc --noEmit -p tsconfig.web.json(temporary TypeScript install): no errors in i18n code. The only error is the missingvite/clienttypes, for the same reason as above.The tests check coverage and shape, not translation quality. A native-speaker read in the app is welcome.
Checklist
npm run typecheckpasses. (not run in full locally, see above)npm run test:focusedpasses. (no new failures, see above)npm run buildsucceeds.DESIGN.md/tokens.ts— no ad-hoc colors, spacing, or fonts.ATTRIBUTION.md. (no art added)🤖 Generated with Claude Code