feat(i18n): add Russian locale#409
Conversation
d5d233f to
8ca7eb6
Compare
Greptile SummaryAdds a complete Russian (
Confidence Score: 5/5Safe to merge — all changes are additive locale files with no logic or runtime-path modifications. The PR adds translation strings and registration boilerplate only; nothing existing is modified except inserting 'ru' into a union type, an array, and a display-name map. The new key-parity test catches structural drift, typecheck passes, and no runtime logic is touched. No files require special attention beyond the minor Important Files Changed
|
| create: "Создать", | ||
| active: "Активен", | ||
| noModel: "Модель не выбрана", | ||
| skillsCount: "Навыков: {{count}}", |
There was a problem hiding this comment.
Genitive-plural form is incorrect for count = 1
"Навыков: {{count}}" uses the genitive plural and will render as "Навыков: 1", which is ungrammatical in Russian. The correct forms are "1 навык" (1), "2 навыка" (2–4), and "5 навыков" (5+). The same pattern appears in memory.ts with entries: "Записей: {{count}}". The PR notes this is deferred to a future i18n-architecture change, which is reasonable, but it's worth tracking as a known user-facing rough edge for Russian speakers.
Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
|
pls make |
Summary
Adds a complete Russian (
ru) locale for Hermes Desktop, synced with the current English locale modules.What changed
discoveranddiagnosenamespaces.ruin the supported locale list andAppLocaletype.Русскийto the Settings language picker.en/rukey parity.kanbanmodule for Russian so the locale stays structurally aligned with English.Translation notes
API Key,OAuth,MCP,SSH,URL, provider names, product names,worker, andkanbanare kept recognizable where that matches the existing UI style.еrather thanё.1 навыков, without changing the shared i18n architecture in this PR.Validation
npm run test -- src/shared/i18n/index.test.ts tests/locale-persistence.test.ts- passes: 2 files, 14 testsnpm run typecheck- passesnpx eslint src/shared/i18n/index.ts src/shared/i18n/index.test.ts src/shared/i18n/config.ts src/shared/i18n/types.ts src/shared/i18n/locales/ru/*.ts src/renderer/src/screens/Settings/Settings.tsx- passesenandruen/rukey parity is covered by the added testNote: one local run of
locale-persistence.test.tshit Vitest's 5s timeout, then the same targeted command passed on immediate rerun. No i18n key or type failures reproduced.