fix(desktop): add display language setting#5369
Conversation
✅ Deploy Preview for old-char canceled.
|
0bb8067 to
e88dbfc
Compare
ba6b287 to
3df0bb3
Compare
e88dbfc to
243f5cb
Compare
3df0bb3 to
8a01b3c
Compare
eea9c5a to
b312eeb
Compare
8a01b3c to
003f66e
Compare
b312eeb to
373168f
Compare
003f66e to
8e1aa19
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 8e1aa19. Configure here.
| return acc; | ||
| }, | ||
| {} as Record<DisplayLocale, Messages>, | ||
| ); |
There was a problem hiding this comment.
Eagerly loading ~100 identical catalogs bloats bundle
Medium Severity
import.meta.glob with { eager: true } bundles and parses all ~100 locale catalog modules at startup, even though only one locale is active at a time. Previously only 3 catalogs were loaded. The new locales all contain identical English source strings (no actual translations), so the bundle now includes ~100 near-duplicate JSON blobs. Combined with i18n.load(catalogs) passing every catalog to the runtime, this significantly increases both bundle size and initialization cost for no user-visible benefit.
Reviewed by Cursor Bugbot for commit 8e1aa19. Configure here.
373168f to
8e3df00
Compare
8e1aa19 to
529990a
Compare
8e3df00 to
50c38a3
Compare
529990a to
21c104a
Compare
50c38a3 to
c0f4d32
Compare
21c104a to
a1b58b4
Compare
Treat bare editor Escape as a main-shell home shortcut while preserving Escape handling for visible editor popovers.
Run the main Escape shortcut from the focused title input and cover it with a regression test.
Read the latest tab store state when running the main Escape shortcut so focused title fields open home reliably.
Keep top corners on the edge-to-edge main surface and cover the scaffold class override.
Use the main AI language for app display locale and add Lingui catalogs for every supported main language.
Add missing Japanese and Korean translations for the "Meetings" and "Show timeline in sidebar" strings that were previously left untranslated in both locale files.
c0f4d32 to
7392f23
Compare
a1b58b4 to
e302089
Compare
7392f23 to
2ebbc51
Compare
|
Closing this i18n branch for now. We'll redo the display-language/i18n work after the lower stack has merged. |


Separate app UI locale from the AI main language and add checks that prevent empty translated settings messages.
Note
Medium Risk
Very large locale rollout means most new languages still show English UI strings; tests only enforce full PO coverage for ko/ja, so incorrect or missing translations elsewhere are possible.
Overview
Expands desktop UI (display) localization from a handful of locales to a large shared
SUPPORTED_DISPLAY_LOCALESlist aligned with spoken-language options, and wires Lingui and runtime loading to that single source of truth.i18n plumbing now discovers catalogs via
import.meta.globinstead of hand-maintained imports, andresolveDisplayLocaleresolves base language codes (plus ajw→jvalias) beforeIntlfallback. New.po/ compiledmessages.tsfiles are added for each locale; most ship with emptymsgstrand English strings in the compiled catalogs until translated.Tests assert every supported locale loads,
ko/jaPO files have no empty translations, and chat tests use theFloatingOpenshell mode. A small Japanese copy tweak is included for one settings string.Note: PR description references separating display language from AI main language; that behavior may live in other stack commits not shown in this diff.
Reviewed by Cursor Bugbot for commit e302089. Bugbot is set up for automated code reviews on this repo. Configure here.
This is part 3 of 3 in a stack made with GitButler: