Skip to content

feat(i18n): add 11 new languages — Korean, German, Spanish, French, Portuguese-BR, Arabic, Hindi, Thai, Vietnamese, Italian, Russian - #56220

Closed
iaendi wants to merge 1 commit into
NousResearch:mainfrom
iaendi:i18n/add-11-languages
Closed

feat(i18n): add 11 new languages — Korean, German, Spanish, French, Portuguese-BR, Arabic, Hindi, Thai, Vietnamese, Italian, Russian#56220
iaendi wants to merge 1 commit into
NousResearch:mainfrom
iaendi:i18n/add-11-languages

Conversation

@iaendi

@iaendi iaendi commented Jul 1, 2026

Copy link
Copy Markdown

Summary

Adds 11 new Desktop UI locales to the i18n framework that landed in #38241, expanding language support from 4 to 15.

Each locale uses defineLocale() with English fallback for any missing keys. All translations have been carried over from our earlier 15-language JSON catalog (the one in PR #38846) and converted to the upstream TypeScript format.

New locales

Code Language Keys Status
ko 한국어 (Korean) 850 Complete
de Deutsch (German) 850 Complete
es Español (Spanish) 850 Complete
fr Français (French) 850 Complete
pt-br Português (Brasil) 850 Complete
ar العربية (Arabic) 850 Complete
hi हिन्दी (Hindi) 850 Complete
th ภาษาไทย (Thai) 850 Complete
vi Tiếng Việt (Vietnamese) 850 Complete
it Italiano (Italian) 850 Complete
ru Русский (Russian) 850 Complete

Changes

  • apps/desktop/src/i18n/types.ts: Extend Locale type union (4 → 15)
  • apps/desktop/src/i18n/catalog.ts: Import and register all 11 new locales
  • apps/desktop/src/i18n/languages.ts: Add LOCALE_OPTIONS entries, LOCALE_META, and LOCALE_ALIASES for all new locales
  • apps/desktop/src/i18n/{ko,de,es,fr,pt-br,ar,hi,th,vi,it,ru}.ts: Full translation catalogs using defineLocale()

Notes

  • Language display names are from LOCALE_META (endonym shown in picker), not translation keys
  • English fallback applies for any Desktop UI strings not yet covered
  • 11 language self-reference keys (language.{code}) omitted intentionally — upstream uses LOCALE_META
  • All keys are ~850 Desktop UI strings covering: settings, appearance, chat, onboarding, gateway, models, MCP, sessions, tools, command center, install, updates, etc.

Closes the Russian Desktop locale gap noted in #40347.
Related: #38846 (superseded omnibus PR)

Converts our existing JSON locale files to upstream's defineLocale()
TypeScript format.

New languages (11):
- Korean (ko), German (de), Spanish (es), French (fr)
- Portuguese-Brazil (pt-br), Arabic (ar), Hindi (hi)
- Thai (th), Vietnamese (vi), Italian (it), Russian (ru)

Updates:
- types.ts: extend Locale type union (4 → 15 locales)
- catalog.ts: import and include all 11 new locales
- languages.ts: add LOCALE_OPTIONS, LOCALE_ALIASES for all new locales

Each locale uses defineLocale() for automatic English fallback.
Approximately 850 translation keys per locale.

[skip ci]
@alt-glitch alt-glitch added type/feature New feature or request P3 Low — cosmetic, nice to have comp/desktop Electron desktop app (apps/desktop/*) labels Jul 1, 2026
@iaendi

iaendi commented Jul 1, 2026

Copy link
Copy Markdown
Author

This PR supersedes the earlier #38846 (now closed). Translation content from the 15-language JSON catalog has been converted to the upstream defineLocale() TypeScript format. Review history, discussion threads, and the zh-CN polish pass from @starlit-dream can be found there.

@iaendi

iaendi commented Jul 1, 2026

Copy link
Copy Markdown
Author

Closing — switching to hybrid JSON+TS approach that keeps JSON as canonical translation source.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/desktop Electron desktop app (apps/desktop/*) P3 Low — cosmetic, nice to have type/feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants