feat(desktop,i18n): Hermes Desktop speaks Russian (#84418, salvage #42705) - #100429
Merged
Merged
Conversation
Full desktop UI translation (ru.ts, 3076 string/function leaves, mirrors en.ts 1:1) plus locale registration in types, catalog and language list with aliases (ru, ru-ru, ru_ru, ru-by). Russian plurals (1 / 2-4 / 5+, 11-14 exception) via RU_PLURAL/RU_NOUN helpers; count accepts number | string to match en.ts signatures. Verified against current main: structural validation 3076/3076 with placeholder parity, typecheck (renderer/electron/e2e) clean, i18n vitest 28/28, prettier + eslint clean.
…ests/docs - Translate leftover English 'toolset(s)' strings in ru.ts - Cover ru aliases/config value in languages.test.ts (parity with ar) - List Russian among desktop UI languages in website/docs/user-guide/desktop.md
Contributor
૮ >ﻌ< ა ci reviewran on 9103f78 — fix(desktop,i18n): polish Russian catalog and register ru in
|
Contributor
This was referenced Sep 1, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds the Russian (
ru) locale to Hermes Desktop, closing the gap tracked in #84418: the agent core already shipslocales/ru.yamland the web dashboard hasweb/src/i18n/ru.ts, but the desktop app only offered en/zh/zh-hant/ja/ar.Credit
This is a salvage PR consolidating a 7-PR duplicate cluster:
.tsxfiles against current main, so it couldn't be cherry-picked cleanly.Duplicate PRs superseded by this one (left open for maintainer disposition, not closed by this PR): #42705, #66833 (@timoncool), #70499 (@Gromakoff), #70673 (@saimon4eg), #78483 (@konstantin969696), #91780 (@FASTCHIP), #92096 (@systemINTERNET). Thanks to all of you — seven independent submissions is a strong signal this was wanted.
Related but separate scope (dashboard
web/ru completion, NOT included here): #88444, #97969.Why #91780 as the base
ru.ts,languages.ts,types.ts,catalog.ts); only 3 lines of deletions.en.ts.defineLocale()partial catalog with English fallback,defineFieldCopy()for settings field labels/descriptions (theja/zh-hantpattern — no separateru-constants.tsfile like older entries used), and proper Russian plural forms viaRU_PLURAL/RU_NOUNhelpers (one/few/many).types.tsLocaleunion vs. the newerTipIdimport), vs. 9,000–10,000+ commits of staleness on the July entries.What's in the follow-up commit
ru.tsinto natural Russian («набор инструментов»).languages.test.ts: ru alias/isLocale/localeConfigValuecoverage, mirroring exactly howar(the most recently added locale, 5b6990e) was wired. Nocontext.tsxchanges needed — Russian is LTR, so the RTL plumbing from thearcommit doesn't apply.website/docs/user-guide/desktop.md: the UI language switcher bullet now lists all six desktop locales including Russian.Wiring checklist (mirrors the
arlocale commit's touchpoints)types.ts—'ru'in theLocaleunioncatalog.ts—ruimported and registered inTRANSLATIONSlanguages.ts—LOCALE_OPTIONSentry (endonym Русский, englishName Russian) + aliasesru,ru-ru,ru_ru,ru-by,ru-kz,russian,русский(incl. common misspellingруский)languages.test.ts— alias/id/config-value coveragedefineLocale()partial → any key added toen.tslater falls back to English cleanly (verified: parity probe shows fallback handles the delta;tsc --buildclean)Verification
npx vitest run src/i18n/→ 4 files, 28 tests passednpx tsc --build tsconfig.json→ cleannpx eslinton all touched i18n files → cleanpython3 scripts/audit_pr_attribution.py→ all contributor emails mapped (FASTCHIP uses anid+login@users.noreplyaddress; CI auto-resolves)Closes #84418.
Infographic