*PR Created by the Glary-Bot Agent*
---
Backport of #11712 to `core/1.44`.
## Summary
Cherry-picks `ceb993605` ("fix(i18n): clamp unsupported browser locales
to a shipped tag") onto `core/1.44`.
Sidebar buttons rendered literal i18n keys (e.g.
`sideToolbar.labels.assets`) on a fresh install when the user's
`navigator.language` base tag wasn't one of the 12 shipped locales —
German/Italian/Polish/Dutch/Brazilian-Portuguese users among others.
## Cherry-pick conflict resolution
One file required manual resolution:
- **`browser_tests/tests/customNodeLocales.spec.ts`** — `modify/delete`
conflict. This file does not exist on `core/1.44` (it was introduced on
`main` after the 1.44 branch cut, in #12132). Dropped the modification
from the backport; the underlying test file is not on the release
branch, so its updates are irrelevant here.
All other files merged cleanly (`src/views/GraphView.vue` had an
auto-merge that resolved without intervention).
## Verification
- `pnpm typecheck` — clean
- `pnpm test:unit src/i18n.test.ts` — **17/17 passing** (covers the new
`resolveSupportedLocale` block and the updated unsupported-locale clamp
behaviour)
- `eslint` on all changed files — clean
- **Manual verification via Playwright on the backport branch**,
simulating a fresh install with `navigator.language='de-DE'`:
- Sidebar `aria-label`s render real strings ("Assets (a)", "Node Library
(n)", "Workflows (w)", "Settings", …) — **no** literal i18n keys like
`sideToolbar.labels.assets`.
- Confirmed `hasLiteralKeys: false` on the rendered DOM, matching the
fixed behaviour from the original PR.
- Screenshot attached.
## Files
```
apps/desktop-ui/src/i18n.ts | 3 +-
browser_tests/tests/i18nLocaleFallback.spec.ts | 47 ++++++++
browser_tests/tests/templates.spec.ts | 59 +++++-----
src/i18n.test.ts | 109 +++++++++++++++---
src/i18n.ts | 145 ++++++++----------------
src/locales/CONTRIBUTING.md | 44 +------
src/locales/localeConfig.ts | 82 ++++++++++++++
src/platform/settings/constants/coreSettings.ts | 21 +---
src/views/GraphView.vue | 20 ++--
```
Backport-of: #11712Fixes#10563 on the 1.44 release line
## Screenshots

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-12178-backport-core-1-44-fix-i18n-clamp-unsupported-browser-locales-to-a-shipped-tag-117-35e6d73d3650817dae90d9ae68c7f0c6)
by [Unito](https://www.unito.io)