feat(i18n): add Russian (ru) locale for desktop app - #46634
Conversation
2e38e46 to
b23a07f
Compare
|
I did another live Desktop QA pass against the current RU Desktop branch and found a few remaining English fallback surfaces, especially the intro/welcome copy, project/sidebar actions, cron counters, context usage, preview save errors, assistant resume copy, and tool-title wrappers. I opened a focused follow-up PR into the canonical RU branch here: Anatoly17#2 Verification on that patch:
The wording pass also removes several unnecessary English/Russian hybrids from the Russian intro copy while preserving command names, provider names, tool ids, paths, and technical tokens where they should remain unchanged. |
|
A follow-up patch for the newly spotted RU desktop gaps is ready here: Anatoly17#2 (latest commit 374e079). It addresses the screenshots with remaining English in:
Validation on the patch branch is green:
Recommended next step: fold/merge Anatoly17#2 into this canonical RU Desktop PR so #46634 carries the screenshot-driven polish before maintainer review. |
|
Thanks for the thorough QA pass, @DrMaks22 — the MoA / intro / stale-aux English-fallback gaps you spotted are real and worth fixing. That said, I'd like to keep #46634 scoped to the Russian locale itself (the Could you open #2 as its own PR directly against Thanks again for the collaboration. |
|
Thanks, @Anatoly17 — agreed on keeping #46634 focused on the Russian locale itself. I split the component/catalog work out and opened it directly against upstream main here: #61970.\n\nThat PR does not include the RU locale or duplicate #46634; it only routes the remaining hardcoded Desktop intro / Mixture of Agents / stale auxiliary-model copy through the shared i18n catalog, with English source strings and zh parity where needed.\n\nValidation on the split PR:\n- |
|
Follow-up from the Desktop visual/i18n audit: I opened a small helper PR against the canonical RU branch: It localizes the remaining Russian fallbacks for assistant tool titles/actions plus a few adjacent thread/clarify labels, while keeping the existing Validation on that branch:
This is intentionally small so it can be folded into #46634 if you want the canonical RU Desktop PR to carry the latest polish before maintainer review. |
501fdeb to
e704708
Compare
|
Updated this PR onto the latest upstream The refreshed branch now includes:
Validation on the final branch:
Current status: 5 commits, 4 i18n files changed, no merge conflicts. The PR remains focused on the Russian Desktop locale and its registration. |
|
Thanks, @Anatoly17 — confirmed, and thank you for preserving authorship while folding the helper commits into the focused RU branch. I’ll keep the shared component/catalog work separate in #61970 as discussed; I’ve also addressed the sweeper review there with focused Intro and ModelSettings i18n regression tests. From my side, the Russian Desktop locale path now looks well-scoped and ready for maintainer review. Happy to handle any specific wording or coverage requests if reviewers spot anything else. |
|
Current RU Desktop consolidation status after the latest review pass:\n\n- #46634 now carries the current-main Russian locale, Hermes Cloud gateway strings, the Russian plural helper, and the focused tool-title/action wording polish that was folded in with authorship preserved.\n- I am keeping the shared component/catalog work separate in #61970; that PR has now been rebased onto current main and revalidated.\n- I agree with the existing direction that only one RU Desktop locale PR should land. From my side, #46634 remains the cleanest focused candidate unless maintainers explicitly prefer folding this branch back into #41677.\n\nHappy to handle any further wording or coverage requests, but I am not planning to open another duplicate RU Desktop locale PR. |
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.
Translate the newly added Hermes Cloud strings that were falling back to English: the cloud* sign-in / agent-picker block plus modeTitle and remoteAuthHint. Update restartingMessage to match the reworded English (the desktop shell now stays open on reconnect). No changes to en.ts, zh.ts, types.ts, or components.
Add behavior-based coverage for the Russian locale without pinning exact Russian wording: - normalizeLocale / isLocale / isSupportedLocaleValue / localeConfigValue for `ru` and the `ru-RU` and `ru_ru` aliases - I18nProvider restores a persisted Russian locale from display.language and saves the selected Russian locale back to config - runtime translator resolves the active Russian locale and falls back to English when a Russian key cannot be resolved Test-only change; no production code, ru.ts, or other translations touched.
e704708 to
f0c9606
Compare
|
Follow-up: rebased once more onto current The new tests cover:
The tests do not pin exact Russian wording and no production code was changed by the test commit. Final validation:
Current head: |
|
Thanks for the focused Desktop locale contribution. Current main has no Russian entry in the selectable locale list ( No verified blocking correctness or design-fit defect was found in the PR diff. This is an automated hermes-sweeper review. |
|
Closing this PR in favor of #72250 as the single canonical Russian Desktop locale. @timoncool and @DrMaks22 — thank you for driving the consolidation. #72250 carries a complete catalog against current I also appreciate that the consolidated branch preserves the work from this thread with the original Git authorship — the locale alias / config-persistence / runtime-fallback behavior tests, and the Happy to help review or translate remaining keys on #72250 if that's useful. Thanks to the maintainers and to the sweeper review for the feedback along the way. |
Full Russian translation for all desktop UI strings (~1000 lines). Adds ru.ts translation file and registers the locale in types.ts, languages.ts, and catalog.ts. Uses defineLocale() for English fallback on any untranslated strings.
What does this PR do?
Adds a full Russian (ru) locale for the Hermes Desktop UI
Related Issue
Fixes # (no issue)
Type of Change
Changes Made
Added apps/desktop/src/i18n/ru.ts with ~1000 translated strings
Registered 'ru' in types.ts, languages.ts (aliases: ru, ru-ru), and catalog.ts
Used defineLocale() so future untranslated keys fall back to English automatically
How to Test
Checklist
Code
fix(scope):,feat(scope):, etc.)pytest tests/ -qand all tests passDocumentation & Housekeeping
docs/, docstrings) — or N/Acli-config.yaml.exampleif I added/changed config keys — or N/ACONTRIBUTING.mdorAGENTS.mdif I changed architecture or workflows — or N/AFor New Skills
hermes --toolsets skills -q "Use the X skill to do Y"Screenshots / Logs