feat(desktop): add Russian locale - #62215
milinov885-web wants to merge 5 commits into
Conversation
Full Russian translation for all desktop UI strings. Registers the locale in types.ts, languages.ts, and catalog.ts, and uses defineLocale() so any untranslated string falls back to English. Adds pluralRu()/countRu() helpers with correct Russian plural rules (incl. the 11-14 exception) and routes all count-based strings through them. Reconciled against current main: dropped removed keys (credentials.or/escToCancel, providers.removeExternal->removeExternalGeneric, agents.tokensK, commandCenter.restartMessaging, sidebar.reorderWorkspace, modelPicker.persistGlobal(Session), clarify.shortcutSuffix/back/send) and moved desktop.branchTitle to its count form.
tonydwb
left a comment
There was a problem hiding this comment.
Code Review Summary
💡 Found 1 TODO/FIXME comment(s) in added lines.\n---
Reviewed by Hermes Agent
|
Thanks for the focused Desktop localization contribution. I found no correctness blocker in the implementation. Current main still exposes only GitHub currently reports the branch mergeable. The existing duplicate discussion should remain a maintainer consolidation decision. Automated hermes-sweeper review. |
Update: Russian desktop locale scopeThis update fixes the concrete Russian-localization gaps found during review:
Validation completed locally:
Honest scope statementThis is not yet a claim of a fully exhaustive Russian translation for every Desktop string. The Desktop locale system intentionally falls back to English for untranslated keys, and several newer or less frequently used surfaces still use that fallback. The goal of this PR is to provide a solid, tested Russian Desktop baseline without misleading users about completeness. Remaining copy can be translated incrementally in follow-up contributions, with the same typed catalog and regression-test coverage. |
Summary
Adds Russian (
ru) as a supported Hermes Desktop locale.ru,ru-RU, andru_rualiases in the typed desktop i18n catalog.display.language: ru.11–14exception.<html lang>.The primary translation work is preserved from the earlier Russian-locale contribution (not reimplemented from scratch); this branch rebases it on current
main, adds verification, and fills newly surfaced Appearance copy.Scope and limitations
This changes only the Electron Desktop i18n layer. It does not alter the Hermes backend, CLI, user installation, or user configuration.
The desktop uses
defineLocale()with English fallback by design. New or hard-coded UI copy that has not yet been wired into the i18n catalog therefore remains English rather than producing missing-key errors. This PR keeps that existing fallback behavior intentionally.Validation
npm run test:ui -- src/i18n/languages.test.ts src/i18n/runtime.test.ts src/i18n/context.test.tsx src/components/language-switcher.test.tsxnpm run typechecknpm run buildHERMES_HOMEand user-data directories:display.language: ruin the isolated config;document.documentElement.lang === "ru";Review request
Please review this as a strict Desktop localization contribution. Approval confirms that the current architecture and translation direction are acceptable; rejection or requested changes are welcome if maintainers prefer consolidation with another active Russian-locale effort.