Skip to content

feat(desktop): add Russian (ru) UI locale - #70499

Open
Gromakoff wants to merge 2 commits into
NousResearch:mainfrom
Gromakoff:feat/russian-i18n
Open

feat(desktop): add Russian (ru) UI locale#70499
Gromakoff wants to merge 2 commits into
NousResearch:mainfrom
Gromakoff:feat/russian-i18n

Conversation

@Gromakoff

Copy link
Copy Markdown

Summary

Add a complete Russian translation for the Hermes Desktop UI and wire it into the i18n catalog so it shows up in the language picker.

  • i18n/ru.ts: new locale (~2.8k keys: common, settings, chat, composer, tools, ...).
  • i18n/languages.ts: register the ru language + locale aliases (ru-ru, ru_ru).
  • i18n/catalog.ts: import and include ru in the bundled locale set.
  • i18n/types.ts: declare the ru translation type.

Test plan

  • Type-checked against apps/desktop/tsconfig.json — no i18n type errors.
  • Locale is opt-in from the settings language picker; default locale unchanged.

Notes

Pure additive i18n change — no core/agent logic touched, no tool schemas or prompt-caching affected.

🤖 Generated with Hermes Agent

Add a full Russian translation (ru.ts, ~2.8k keys) and wire it into the
i18n catalog so it appears in the language picker.

- i18n/ru.ts: new locale (common, settings, chat, composer, tools, ...).
- i18n/languages.ts: register 'ru' language + locale aliases (ru-ru, ru_ru).
- i18n/catalog.ts: import and include ru in the bundled locale set.
- i18n/types.ts: declare the ru translation type.

Type-checked against tsconfig.json (no i18n errors). Language is opt-in
from the settings language picker; default locale unchanged.
@alt-glitch alt-glitch added type/feature New feature or request P3 Low — cosmetic, nice to have comp/desktop Electron desktop app (apps/desktop/*) area/i18n Localization, locales, translations duplicate This issue or pull request already exists labels Jul 24, 2026
@alt-glitch

Copy link
Copy Markdown
Collaborator

This was generated by AI during triage.

Duplicate of #41677: both add the Russian Desktop locale through ru.ts plus the same catalog, language, and type-registration surface. #41677 is the active designated implementation in this saturated locale cluster.

…ier on ru locale

Apply auto-fix for import ordering (catalog.ts, ru.ts) and remove unused
FIELD_DESCRIPTIONS/FIELD_LABELS imports; run prettier --write. No
behavioral change — purely formatting/lint compliance for CI.

@teknium1 teknium1 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for contributing the Russian Desktop locale wiring.

Problems

  • The branch is now conflicting. Its locale registry omits Arabic (apps/desktop/src/i18n/catalog.ts:1-14 on the PR), while current main imports and registers it at apps/desktop/src/i18n/catalog.ts:1,13, with matching entries in languages.ts:32-82 and types.ts:8. A salvage must preserve that current-main surface.
  • The new catalog still renders English in several Russian overrides: ru.ts:41, ru.ts:56, ru.ts:62, ru.ts:94, and ru.ts:114.
  • No tests were added for the new aliases or persistence path. Existing locale behavior is covered in apps/desktop/src/i18n/languages.test.ts:6-46; the Russian registration should receive equivalent behavior coverage.

Suggested changes

  • Reconcile the locale registry against current main, retaining Arabic and current i18n fields.
  • Translate or omit the explicit English Russian overrides, then add alias and config-persistence tests for ru, ru-RU, and ru_ru.

Automated hermes-sweeper review.

zh,
'zh-hant': zhHant,
ja,
ru

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Current main now also registers Arabic in this record (catalog.ts:1,13). This old-base replacement omits it, so a salvage must retain ar alongside ru rather than replacing the current locale set.

set: 'Установить',
skip: 'Пропустить',
update: 'Обновить',
tryHint: term => `Try \u201C${term}\u201D`,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a visible Russian-locale override but remains English. Please translate it (and audit the other explicit English overrides) or omit it so the documented defineLocale() English fallback is used intentionally.

ja: 'ja',
'ja-jp': 'ja',
ja_jp: 'ja',
ru: 'ru',

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add behavior coverage for ru, ru-RU, and ru_ru, including normalization, exact locale recognition, and persisted config values, following languages.test.ts.

@teknium1 teknium1 added sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades sweeper:blast-moderate Sweeper blast radius: moderate — a subsystem or single platform labels Jul 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/i18n Localization, locales, translations comp/desktop Electron desktop app (apps/desktop/*) duplicate This issue or pull request already exists P3 Low — cosmetic, nice to have sweeper:blast-moderate Sweeper blast radius: moderate — a subsystem or single platform sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades type/feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants