feat: add Russian (ru) localization - #143
Conversation
First namespace of the Russian locale. Keys mirror en/common.json 1:1; values follow the project glossary (chore=дело, points=очки, etc.). Thing is rendered as "Штуки" to keep the deliberately casual tone of the English "Things".
Second namespace. Keys mirror en/chores.json 1:1, values follow the glossary (chore/task=дело, due date=срок, assignee=исполнитель, subtask=подзадача). "Created By" is rendered gender-neutrally as "Автор" to avoid Russian past-tense gender agreement.
Third and final namespace. Keys mirror en/settings.json 1:1. Circle=группа, Notification=уведомление, task=дело. Technical tokens kept verbatim (webhook URL placeholder, "Plus" plan name, date-format patterns).
Add the ru entry to the language selector and import moment/locale/ru so Russian dates format correctly (matching the existing moment/locale/ja pattern). The ru dictionaries already exist under public/locales/ru.
|
Thank for the contribtion! will hold on few days to see if anyone interested in review it or has any comments! |
|
No rush on the review — but I noticed Do you still want Either way works for me:
The one thing I'd flag: Tell me which you'd rather have and I'll do the legwork — no need for you to untangle it. |
|
Correction to my last paragraph: I had that backwards. The actual question stands: direct PR, or route |
Adds a complete Russian translation as a new locale. No architecture changes — follows the existing i18n setup.
What's included
public/locales/ru/{common,chores,settings}.json— all three namespaces, keys mirroren1:1 (30 / 71 / 147, verified programmatically).AVAILABLE_LANGUAGES— adds{ code: 'ru', name: 'Russian', nativeName: 'Русский' }to the selector.import 'moment/locale/ru'insrc/i18n/config.js(matching the existingmoment/locale/ja) so Russian dates format correctly.Translation notes
completeChore: "Complete Task"); the Russian unifies both as «дело».Created Byis rendered gender-neutrally as «Автор» to avoid Russian past-tense gender agreement.Plusplan name, date-format patterns) are kept verbatim.Verification
npm run buildpasses.runamespaces load at runtime (GET /locales/ru/*.json→ 200) with the selector set to Russian;document.documentElement.langbecomesru.