Skip to content

i18n(ru): exercise-name pack for all 1,324 exercises - #266

Merged
DuarteSantos8 merged 1 commit into
DuarteSantos8:mainfrom
dima-po:i18n/ru-exercise-names
Sep 28, 2026
Merged

DuarteSantos8 merged 1 commit into
DuarteSantos8:mainfrom
dima-po:i18n/ru-exercise-names

Conversation

@dima-po

@dima-po dima-po commented Sep 20, 2026

Copy link
Copy Markdown
Contributor

Russian joins pt-BR and hu in EXERCISE_NAME_LANGS: all 1,324 titles, shown the way the other two are — Russian first, English original in parentheses, so nobody loses the term they already search by.

Built with your pipeline, not a new one:

scripts/exercise-name-sources/ru.json curated source, same shape as pt-BR.json
scripts/exercise-name-sources/GLOSSARY.ru.md the terminology decisions
scripts/translate-ru-exercise-names.mjs a copy of the pt-BR script with a Russian prompt; still incremental, still checkpoints per batch
scripts/build-ru-exercise-names.mjs same validation — unknown ID or short count throws
frontend/src/lib/ru-exercise-names.test.js mirrors the pt-BR suite

The glossary is the part worth reviewing. It draws the line between movements Russian has its own name for (hammer curl → молотковое сгибание, good morning → наклон со штангой, skullcrusher → французский жим) and the ones where the gym just says the English word, so a calque would read worse than the loanword (бёрпи, машина Смита, гакк-приседание, EZ-гриф).

What I fixed after the machine pass, since a batched run drifts:

  • sentence case throughout — the model capitalised early batches and not later ones (V-, Y-, EZ- keep their capitals)
  • equipment trailing, not fronted with a comma: 43 titles read гантели, жим лёжа where the other 1,278 read жим лёжа с гантелями
  • one Russian term per English term where it had drifted (russian twist, rollerout)
  • 13 titles had dropped a qualifier the English states — the dumbbell in eight wrist curls, assisted, weighted — and one had taken its equipment from the eq metadata instead of the title

The test pins the qualifiers that change what a movement is (equipment, assisted/weighted, male/female), so a future batch cannot quietly drop them again. npm test in frontend/ passes — 106 files, 1473 tests.

On review status, per the caveat in exercise-name-sources/README.md: these are original translations from the English titles, produced with LLM assistance and tidied by hand. They have not had a line-by-line native-speaker review, so please don't describe them as such. I am happy to do that pass, or to take corrections from Russian-speaking users, if you'd rather merge it as a starting point.

The third exercise-name pack, built the way pt-BR was: a curated JSON source,
a glossary that fixes the terminology, a translate script that only visits IDs
the source does not have yet, and a build step that refuses to emit anything
less than the complete catalogue.

All 1,324 titles. The app shows them the way it shows Portuguese and
Hungarian — the Russian title with the English original in parentheses — so
nobody loses the term they already search by.

The glossary is the part worth reviewing. It decides where Russian has its own
established name (hammer curl → молотковое сгибание, good morning → наклон со
штангой, skullcrusher → французский жим) and where the gym simply says the
English word, in which case inventing a calque would be worse than keeping it
(бёрпи, машина Смита, гакк-приседание, EZ-гриф).

After the machine pass I normalised what it got inconsistent across batches:
sentence case throughout (leaving V-/Y-/EZ- alone), equipment trailing rather
than fronted with a comma, and one Russian term per English term where it had
drifted (русский твист, выкат). Thirteen titles had dropped a qualifier the
English states — the dumbbell in eight wrist curls, assisted, weighted — and
one had taken its equipment from the metadata rather than the title.

ru-exercise-names.test.js mirrors the pt-BR suite and pins the qualifiers that
change what a movement is, so a future batch cannot quietly drop them.

These are original translations produced with LLM assistance from the English
titles, not copied from another Russian exercise dataset. They have NOT been
reviewed line by line by a native speaker — the normalisation pass above and
the spot checks were mine, but treat the pack as machine output that a human
has tidied, exactly as the pt-BR README asks.
@dima-po
dima-po force-pushed the i18n/ru-exercise-names branch from 3444030 to 0a7fe0b Compare September 20, 2026 12:14
@dima-po

dima-po commented Sep 20, 2026

Copy link
Copy Markdown
Contributor Author

Heads-up on overlap with #254, which I found after opening this: it adds de/es/fr/it packs plus the per-language "English name in parentheses" toggle. The two are complementary — a fifth language rather than a competing approach — but they touch the same line:

Whichever you merge first, I will rebase this one on top — just say the word, or merge #254 and I will push the rebase without waiting.

ilirhushi added a commit to ilirhushi/openGym that referenced this pull request Sep 20, 2026
The upstream name packs (DuarteSantos8#245, DuarteSantos8#254, DuarteSantos8#266) only cover the 1,324 exercises
shared with upstream; this fork's own 9 additions (landmine row, pike
push-up, nordic hamstring curl, meadows row, bird dog, band clamshell,
deficit deadlift, band pull-apart, copenhagen plank) had no translation
in any of the newly-added languages, failing each pack's completeness
test.
@dima-po dima-po changed the title Russian exercise names (the third name pack) i18n(ru): exercise-name pack for all 1,324 exercises Sep 24, 2026
@DuarteSantos8
DuarteSantos8 merged commit 683383f into DuarteSantos8:main Sep 28, 2026
@DuarteSantos8

Copy link
Copy Markdown
Owner

Thanks @dima-po, the Russian name pack is in, and the #254 toggles work with it as you expected.

Released in v1.3.9: https://github.com/DuarteSantos8/openGym/releases/tag/v1.3.9

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants