feat(i18n): add Russian locale and count-based tab pluralization#229
Conversation
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Files Reviewed (18 files)
Reviewed by kimi-k2.6 · 7,402,791 tokens |
|
Hi! Thank you so much for this contribution. As usual with translations, I fully trust the people who contribute them. Unfortunately I don’t know Russian, so reading this language is basically like navigating in the dark for me. In general, I’m always very happy to see your PRs. If you’d like, you’re also welcome to join us on Discord: https://discord.com/invite/K2hmhfHRSt I’ll merge this in the next few minutes. |
|
🫡 hi @debba I didn’t just translate it with AI — I also validate all the translations to make them sound more natural. Ofc, in my opinion :) But before I started developing, I worked as an editor and copywriter, so I think I haven’t forgotten everything yet, :) I joined Discord, thanks! |
Add Russian (ru) localization
Adds Russian as the 8th supported UI language, plus a tab-counter pluralization fix.
What's included
New language — Russian
src/i18n/locales/ru.json— full Russian translationREADME.ru.md— translated READMEru("Русский") insrc/i18n/config.tsSUPPORTED_LANGUAGESREADME.*files; also restored the missingjaentry in the README config-language docsPluralization fix —
editor.tabSwitcher.tabsTabSwitcherModal.tsxnow passes the count into i18next (t("editor.tabSwitcher.tabs", { count })) instead of concatenating the number outside the call, so plural rules can apply.ru:_one/_few/_many/_other(4 forms)en/de/es/fr:_one/_otherit/ja/zh: single form (no singular/plural distinction needed)Test plan
en.json(extra ru keys are Russian plural forms — expected)pnpm lintpasses (eslint, 0 warnings)1 / 2 / 5 / 21 across all 8 languages — each renders its own localized
form (e.g. ru 1→"вкладка", 2→"вкладки", 5→"вкладок", 21→"вкладка"),
with no English-fallback leak for the single-form locales (it/ja/zh)
schema/column editor, and visual-explain panels render correctly
Known limitations
The following UI areas are not wired into i18n — they render hardcoded English:
src/components/ui/VisualQueryBuilder.tsx+ its canvas nodesrc/components/ui/TableNode.tsx).src/components/modals/AiQueryModal.tsx).src/components/ui/MiniResultGrid.tsx).