feat(i18n): add complete Russian desktop locale - #72250
Conversation
|
@teknium1 @alt-glitch, when bandwidth allows, could you review #72250 as the consolidated current-main RU Desktop candidate? It directly resolves the prior sweeper findings from the RU PR cluster: complete visible coverage, correct If the locale-neutral wiring from #71573 is preferred first, this PR can still remain the canonical reviewed Russian catalog and receive only the newly landed keys afterward. Otherwise, #72250 is ready to merge as-is. |
f1831af to
1271e7c
Compare
|
Current-main refresh completed. I rebased the existing contributor-preserving series onto Final validation on head
The full UI run used Node 26's |
1271e7c to
2b7aa37
Compare
|
Synced this canonical Russian Desktop PR onto current What changed:
Validation on the final branch:
The PR remains focused on the existing RU Desktop i18n surface. Maintainer review and merge would be welcome. |
2b7aa37 to
cc25c24
Compare
|
Current-main catalog refresh completed. I rebased the consolidated RU Desktop series onto Quality work:
Validation:
Two TUI-only commits landed while validation was running; after the final rebase, I reran Desktop typecheck and the targeted i18n suite successfully. The PR remains limited to the same 9 RU/i18n files and is mergeable. |
|
Thank you for the excellent native-reviewed translation — we used your catalog as the primary reference for the What we did: compared both catalogs key-by-key (yours: 2375 keys, ours: 2291), took the best variant from each, and applied ё-fidelity corrections on top of your baseline (e.g. «подключён» instead of «подключен» in masculine short participles — ё is mandatory there per Russian orthography rules). Full attribution is in the package: README co-authorship section and a header comment in Also: I've starred your repos (codex-ios-swiftui-kit, doc_parser) ⭐ — would appreciate a star back on hermes-ru if you find the package useful! Спасибо за отличный перевод — мы взяли ваш каталог как основу для npm-пакета Что сделали: поэлементно сравнили оба перевода (ваш: 2375 ключей, наш: 2291), выбрали лучший вариант для каждого ключа и поверх вашей базы применили ё-корректуру (например, «подключён» вместо «подключен» в кратких причастиях мужского рода — там «ё» обязательна по правилам). Полное указание авторства — в README пакета и в комментарии-заголовке Также: я поставил ⭐ вашим репозиториям. Буду благодарен за звёздочку на hermes-ru в ответ! |
cc25c24 to
a702171
Compare
|
Thanks for flagging the remaining Validation after the rebase:
I appreciate the attribution. For this upstream PR, #72250 remains the reviewed source of truth at exact 2755/2755 current-main leaf parity; external package variants will be evaluated individually rather than imported wholesale. |
…00% coverage Russian locale catalog merged from two independent native-speaker sources: - DrMaks22's hand-reviewed catalog (PR NousResearch#72250) as the primary base - anatolijlaptev1991-ctrl's catalog with additional keys + ё-fidelity corrections Changes: - i18n/ru.ts: full Russian translation (defineLocale + defineFieldCopy, same architecture as ja.ts/ar.ts) - i18n/types.ts: add 'ru' to Locale union type - i18n/catalog.ts: register ru in TRANSLATIONS - i18n/languages.ts: add 'Русский' to LOCALE_OPTIONS + locale aliases (ru, ru-RU, ru_ru, russian, Русский, русский) - i18n/languages.test.ts: test cases for ru normalization Coverage: 2755/2755 en.ts leaf keys (100%). Locale-neutral i18n-wiring for hardcoded surfaces (MoA/Billing/Endpoints) is tracked separately in PR NousResearch#74691.
a702171 to
7d25624
Compare
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.
7d25624 to
82fab96
Compare
|
Current-main schema refresh completed on The latest Desktop changes altered several action-label contracts and the changed-files surface. I reconciled the Russian catalog by:
Validation on head
The final TUI-only upstream commit landed after the full run; after the final rebase I reran Desktop typecheck and the targeted i18n suite successfully. |
|
Closing #71573 — your catalog (#72250) is the stronger candidate and our ё-fidelity corrections are already incorporated there. Clean path forward. Happy to help if any issues come up with the Russian locale going forward — whether it's reviewing new keys, testing on Windows, or anything else. Just ping me here or on the hermes-ru repo. Wishing the PR a smooth merge 🚀 |
|
Thank you for the complete Russian Desktop locale contribution. Current main has no The implementation follows the existing locale mechanism: Automated hermes-sweeper review. |
… parallel store
P1: sync-locales.py — missing keys are now informational (fallback to en),
exit 0 on partial catalogs instead of exit 1
P2: locales.test.ts — accept partial catalogs as valid; extra-key check
remains but missing keys are expected
P3: Remove store/i18n.tsx, store/use-locale-sync.ts, store/i18n.test.ts —
dead code not imported by any consumer; all store files correctly
use @/i18n (upstream I18nProvider)
P4: Drop Russian locale (ru.json, ru.ts, KNOWN_LOCALES entry) —
NousResearch#72250 is the complete Russian candidate; removing to avoid
5% coverage regression on merge
|
I tested this PR against the current I prepared a focused refresh commit that:
Commit: lifeFedorovAlexey@e4973d5db After rebasing or merging this PR onto current git fetch https://github.com/lifeFedorovAlexey/hermes-agent.git fix/pr-72250-russian-refresh
git cherry-pick e4973d5dbVerified on Windows against current main:
The refresh changes only |
|
I prepared a focused native/macOS follow-up for this canonical Russian Desktop locale:
The native commit is |
Summary
main, preserving the original Git authorship2526/2526leaf entries), with a parity regression test11–14and111–114exceptionsru,ru-RU, andru_ru, and cover locale selection, persistence, runtime lookup, fallback, settings field copy, and tool-title behaviorScope
This is a focused RU Desktop PR: 9 files under
apps/desktop/src/i18n/and the adjacent Russian settings field-copy catalog. It does not mix in generic hard-coded-surface wiring, runtime, CLI, docs, or unrelated application changes.The branch is the current-main continuation of #66833 rather than a separate translation effort. Commits by @timoncool and @Anatoly17 retain their original authorship, followed by the Russian editorial and validation commits from @DrMaks22.
Translation quality
promptis consistently rendered asзапрос; architectural uses remain technical where appropriatesystem prompt,checkpoint,terminal backend,skill,raw data, and related terms follow the shared Russian product glossary97/97labels and41/41descriptionsValidation
npm run typecheck --workspace apps/desktopnpm run lint --workspace apps/desktop(0 errors)npm run build --workspace apps/desktopgit diff --checkThe full UI suite was run serially with a temporary Node local-storage file because Node 26 otherwise exposes an environment-level
localStoragerace across Vitest workers:Once this lands, the stale RU-only candidates can be closed in favor of this current, complete branch. If the generic multi-language wiring from another PR is selected separately, this catalog should remain the Russian source so Desktop does not regress to a partial or mechanically generated translation.