feat: add Russian translation - #31
Conversation
Adds ru.json (1523 keys, full parity with en.json) and wires it into the language selector, onboarding, i18n:add/i18n:check scripts, the doc-drift checker (which previously hardcoded 9 locales), and the docs that restate the locale count.
… found running it Follow-up to #31 (Russian contributed by @Ptitlouis6012, merged as theirs). - What's New tooling knows about locales that arrived late. Adding "ru" to the three scripts alone would have failed the whole back-catalogue: the check demands that an item carrying ANY non-English locale carries them all, and the 507 items written before Russian existed carry none. A LOCALE_SINCE map ({ ru: "2.27.4" }) says which version a locale shipped in, and each version block is held to the locales that existed then. whatsnew:add scaffolds 10, and whatsnew:import recognises a Russian entry as hand-localised. - Seven Russian plurals corrected, in the contributor's own style: Russian has three plural forms where the engine has two, so "{{n}} материалов" is wrong for 2-4. Counts read "Материалов: {{n}}" -- the impersonal form the file already uses elsewhere -- durations use the invariant "сек" / "мин", and the rack tile's label, which sits under its own number, is "стеллажи". - The printer speed dropdown sizes itself to its own label: a fixed width tuned to the English "Standard" clipped "Сбалансированная". Floored at the old width so no other locale moves, capped so a long one cannot push the card. - Locale counts updated wherever a doc or comment still said nine. The dated CHANGELOG / DEVLOG / ROADMAP entries are left alone -- they were true then. Verified by running the app in Russian: the picker offers Русский, every view renders translated, and the only clipped string was the one fixed above.
|
Merged — thank you! Russian is the 10th locale and ships in the next release. The translation held up to review: same key set as We finished the rest on top ( Thanks again — genuinely useful, and well made. |
Adds
ru.json(1523 keys, full parity withen.json) and wires it into the language selector, onboarding,i18n:add/i18n:checkscripts, the doc-drift checker (which previously hardcoded 9 locales), and the docs that restate the locale count.Why Russian: it is one of the most widely spoken languages in the world, with a large maker / 3D-printing community across Russia, Ukraine, Belarus, Kazakhstan and other Russian-speaking countries who currently only get the app in English.