Add Polish and Korean exercise instructions
Incorporates the translation content from two external PRs onto current main (their branches were based on a pre-media-restore history with no common ancestor, so applied programmatically rather than merged): - Polish (pl) from #25 (Dawid Matyjasik) — as submitted. - Korean (ko) from #27 (SeungTaek Lim) — normalized to the dataset convention: only nested instructions.ko / instruction_steps.ko were kept. The PR's extra flat top-level *_ko metadata fields (name_ko, target_ko, etc.) were dropped because they are inconsistent with every other language and would violate data/exercises.schema.json (additionalProperties: false). Updates data/exercises.json (all 1,324 records), the embedded EXERCISES blob and SQL export in index.html, the SQL schemas / INSERT builder / LLM prompt in setup.html, and README language references (7 -> 9 languages). Change is purely additive: stripping pl+ko reproduces the previous data byte-for-byte. Co-Authored-By: Dawid Matyjasik <63721806+dawidmatyjasik@users.noreply.github.com> Co-Authored-By: SeungTaek Lim <61047602+namest504@users.noreply.github.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Dawid Matyjasik
SeungTaek Lim
Claude Opus 4.8
parent
39348bf821
commit
118e4bd6b1
@@ -11,12 +11,12 @@
|
||||
<img src="videos/0334-DsgkuIt.gif" width="120" alt="dumbbell lateral raise" />
|
||||
</p>
|
||||
|
||||
**A comprehensive, ready-to-use fitness exercise dataset with 1,324 exercises — each with an animation GIF, 180×180 thumbnail image, category, body-part, equipment, target and muscle-group data, and step-by-step instructions in 7 languages (English, Spanish, Italian, Turkish, Russian, Chinese, Hindi).**
|
||||
**A comprehensive, ready-to-use fitness exercise dataset with 1,324 exercises — each with an animation GIF, 180×180 thumbnail image, category, body-part, equipment, target and muscle-group data, and step-by-step instructions in 9 languages (English, Spanish, Italian, Turkish, Russian, Chinese, Hindi, Polish, Korean).**
|
||||
|
||||
[](data/exercises.json)
|
||||
[](videos/)
|
||||
[](images/)
|
||||
[](#-overview)
|
||||
[](#-overview)
|
||||
[](https://github.com/hasaneyldrm/logpress-public)
|
||||
[](LICENSE)
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
|
||||
- 1,324 exercises with category, body-part, equipment, target and muscle-group data
|
||||
- an animation GIF + 180×180 thumbnail for every exercise (media © [Gym visual](https://gymvisual.com/) — see [License](#-license--use))
|
||||
- step-by-step instructions in 7 languages (🇬🇧 English, 🇪🇸 Spanish, 🇮🇹 Italian, 🇹🇷 Turkish, 🇷🇺 Russian, 🇨🇳 Chinese, 🇮🇳 Hindi)
|
||||
- step-by-step instructions in 9 languages (🇬🇧 English, 🇪🇸 Spanish, 🇮🇹 Italian, 🇹🇷 Turkish, 🇷🇺 Russian, 🇨🇳 Chinese, 🇮🇳 Hindi, 🇵🇱 Polish, 🇰🇷 Korean)
|
||||
- the interactive browser (`index.html`) and developer setup guide (`setup.html`)
|
||||
|
||||
---
|
||||
@@ -71,7 +71,7 @@ Each exercise entry contains:
|
||||
| Muscle Group | Supporting / synergist muscles |
|
||||
| Equipment | Equipment required (or `body weight` for bodyweight) |
|
||||
| Instructions | Step-by-step instructions for each exercise |
|
||||
| Available Languages | 🇬🇧 English · 🇪🇸 Spanish · 🇮🇹 Italian · 🇹🇷 Turkish · 🇷🇺 Russian · 🇨🇳 Chinese · 🇮🇳 Hindi |
|
||||
| Available Languages | 🇬🇧 English · 🇪🇸 Spanish · 🇮🇹 Italian · 🇹🇷 Turkish · 🇷🇺 Russian · 🇨🇳 Chinese · 🇮🇳 Hindi · 🇵🇱 Polish · 🇰🇷 Korean |
|
||||
| Media | 180×180 thumbnail (`image`) + animation GIF (`gif_url`) per exercise — media © Gym visual, see [License](#-license--use) |
|
||||
|
||||
---
|
||||
@@ -88,7 +88,7 @@ A fully client-side exercise explorer with:
|
||||
- Live search across all 1,324 exercises
|
||||
- Filter by category, equipment, and target muscle
|
||||
- Infinite scroll grid
|
||||
- Click any card to see full details and instructions in English, Spanish, Italian, Turkish, Russian, Chinese, or Hindi
|
||||
- Click any card to see full details and instructions in English, Spanish, Italian, Turkish, Russian, Chinese, Hindi, Polish, or Korean
|
||||
|
||||
### `setup.html` — Developer Setup Guide
|
||||
|
||||
@@ -131,7 +131,7 @@ exercises-dataset/
|
||||
| Metric | Count |
|
||||
|---|---|
|
||||
| Total Exercises | **1,324** |
|
||||
| Instruction Languages | **7** |
|
||||
| Instruction Languages | **9** |
|
||||
|
||||
### Exercises by Body Part
|
||||
|
||||
@@ -187,7 +187,9 @@ Each record in `data/exercises.json` follows this structure. A machine-readable
|
||||
| `instructions.ru` | `string` | Full step-by-step instructions in Russian |
|
||||
| `instructions.zh` | `string` | Full step-by-step instructions in Chinese |
|
||||
| `instructions.hi` | `string` | Full step-by-step instructions in Hindi |
|
||||
| `instruction_steps.<lang>` | `array[string]` | Same instructions split into an ordered array of steps, per language (`en`, `es`, `it`, `tr`, `ru`, `zh`, `hi`) |
|
||||
| `instructions.pl` | `string` | Full step-by-step instructions in Polish |
|
||||
| `instructions.ko` | `string` | Full step-by-step instructions in Korean |
|
||||
| `instruction_steps.<lang>` | `array[string]` | Same instructions split into an ordered array of steps, per language (`en`, `es`, `it`, `tr`, `ru`, `zh`, `hi`, `pl`, `ko`) |
|
||||
| `muscle_group` | `string` | Primary synergist muscle group |
|
||||
| `secondary_muscles` | `array[string]` | Additional muscles involved |
|
||||
| `target` | `string` | Primary target muscle (e.g. `"biceps"`, `"pectoralis major"`) |
|
||||
@@ -213,7 +215,9 @@ Each record in `data/exercises.json` follows this structure. A machine-readable
|
||||
"tr": "Sırt üstü yatın, dizlerinizi bükün ve ayaklarınızı yere düz koyun. ...",
|
||||
"ru": "Лягте на спину, согните колени и поставьте ступни на землю. ...",
|
||||
"zh": "平躺,膝盖弯曲,双脚平放在地上。...",
|
||||
"hi": "अपने घुटनों को मोड़कर और पैरों को ज़मीन पर सपाट रखते हुए अपनी पीठ के बल लेट जाएँ।..."
|
||||
"hi": "अपने घुटनों को मोड़कर और पैरों को ज़मीन पर सपाट रखते हुए अपनी पीठ के बल लेट जाएँ।...",
|
||||
"pl": "Połóż się płasko na plecach, ugnij kolana i oprzyj stopy płasko na pod ...",
|
||||
"ko": "등을 바닥에 누워 무릎을 구부리고 발을 바닥에 붙입니다. ..."
|
||||
},
|
||||
"muscle_group": "hip flexors",
|
||||
"secondary_muscles": ["hip flexors", "lower back"],
|
||||
@@ -378,6 +382,8 @@ console.log(ex.instructions.tr); // Turkish
|
||||
console.log(ex.instructions.ru); // Russian
|
||||
console.log(ex.instructions.zh); // Chinese
|
||||
console.log(ex.instructions.hi); // Hindi
|
||||
console.log(ex.instructions.pl); // Polish
|
||||
console.log(ex.instructions.ko); // Korean
|
||||
```
|
||||
|
||||
### TypeScript — Type-safe Usage
|
||||
@@ -397,6 +403,8 @@ interface Exercise {
|
||||
ru: string;
|
||||
zh: string;
|
||||
hi: string;
|
||||
pl: string;
|
||||
ko: string;
|
||||
};
|
||||
muscle_group: string;
|
||||
secondary_muscles: string[];
|
||||
|
||||
+24688
-1324
File diff suppressed because it is too large
Load Diff
+18
-6
File diff suppressed because one or more lines are too long
+14
-2
@@ -749,6 +749,8 @@ const DB_SQL = {
|
||||
instructions_ru NVARCHAR(MAX),
|
||||
instructions_zh NVARCHAR(MAX),
|
||||
instructions_hi NVARCHAR(MAX),
|
||||
instructions_pl NVARCHAR(MAX),
|
||||
instructions_ko NVARCHAR(MAX),
|
||||
muscle_group NVARCHAR(100),
|
||||
secondary_muscles NVARCHAR(MAX), -- JSON array stored as string
|
||||
target NVARCHAR(100),
|
||||
@@ -769,6 +771,8 @@ const DB_SQL = {
|
||||
instructions_ru TEXT,
|
||||
instructions_zh TEXT,
|
||||
instructions_hi TEXT,
|
||||
instructions_pl TEXT,
|
||||
instructions_ko TEXT,
|
||||
muscle_group VARCHAR(100),
|
||||
secondary_muscles JSONB,
|
||||
target VARCHAR(100),
|
||||
@@ -789,6 +793,8 @@ const DB_SQL = {
|
||||
instructions_ru TEXT,
|
||||
instructions_zh TEXT,
|
||||
instructions_hi TEXT,
|
||||
instructions_pl TEXT,
|
||||
instructions_ko TEXT,
|
||||
muscle_group VARCHAR(100),
|
||||
secondary_muscles JSON,
|
||||
target VARCHAR(100),
|
||||
@@ -809,6 +815,8 @@ const DB_SQL = {
|
||||
instructions_ru TEXT,
|
||||
instructions_zh TEXT,
|
||||
instructions_hi TEXT,
|
||||
instructions_pl TEXT,
|
||||
instructions_ko TEXT,
|
||||
muscle_group TEXT,
|
||||
secondary_muscles TEXT, -- JSON array stored as string
|
||||
target TEXT,
|
||||
@@ -1393,7 +1401,7 @@ function buildLlmPrompt(fwKey, dbKey) {
|
||||
|
||||
## Dataset Overview
|
||||
- 1,324 fitness exercises
|
||||
- Fields: id (string, e.g. "0001"), name, category, body_part, equipment, instructions_en (full text), instructions_es (Spanish text), instructions_it (Italian text), instructions_tr (Turkish text), instructions_ru (Russian text), instructions_zh (Chinese text), instructions_hi (Hindi text), muscle_group, secondary_muscles (JSON array of strings), target, image (relative path like "images/0001.jpg"), gif_url (relative path like "videos/0001.gif"), created_at
|
||||
- Fields: id (string, e.g. "0001"), name, category, body_part, equipment, instructions_en (full text), instructions_es (Spanish text), instructions_it (Italian text), instructions_tr (Turkish text), instructions_ru (Russian text), instructions_zh (Chinese text), instructions_hi (Hindi text), instructions_pl (Polish text), instructions_ko (Korean text), muscle_group, secondary_muscles (JSON array of strings), target, image (relative path like "images/0001.jpg"), gif_url (relative path like "videos/0001.gif"), created_at
|
||||
|
||||
## Database Schema (${db.name})
|
||||
\`\`\`sql
|
||||
@@ -1522,6 +1530,8 @@ function buildInserts(exercises, db) {
|
||||
const instrRu = ex.instructions && ex.instructions.ru ? ex.instructions.ru : '';
|
||||
const instrZh = ex.instructions && ex.instructions.zh ? ex.instructions.zh : '';
|
||||
const instrHi = ex.instructions && ex.instructions.hi ? ex.instructions.hi : '';
|
||||
const instrPl = ex.instructions && ex.instructions.pl ? ex.instructions.pl : '';
|
||||
const instrKo = ex.instructions && ex.instructions.ko ? ex.instructions.ko : '';
|
||||
|
||||
const vals = [
|
||||
escStr(ex.id, db),
|
||||
@@ -1536,6 +1546,8 @@ function buildInserts(exercises, db) {
|
||||
escStr(instrRu, db),
|
||||
escStr(instrZh, db),
|
||||
escStr(instrHi, db),
|
||||
escStr(instrPl, db),
|
||||
escStr(instrKo, db),
|
||||
escStr(ex.muscle_group, db),
|
||||
escStr(muscles, db),
|
||||
escStr(ex.target, db),
|
||||
@@ -1544,7 +1556,7 @@ function buildInserts(exercises, db) {
|
||||
escStr(ex.created_at, db),
|
||||
].join(', ');
|
||||
|
||||
lines.push(`INSERT INTO exercises (id, name, category, body_part, equipment, instructions_en, instructions_es, instructions_it, instructions_tr, instructions_ru, instructions_zh, instructions_hi, muscle_group, secondary_muscles, target, image, gif_url, created_at) VALUES (${vals});`);
|
||||
lines.push(`INSERT INTO exercises (id, name, category, body_part, equipment, instructions_en, instructions_es, instructions_it, instructions_tr, instructions_ru, instructions_zh, instructions_hi, instructions_pl, instructions_ko, muscle_group, secondary_muscles, target, image, gif_url, created_at) VALUES (${vals});`);
|
||||
|
||||
if (db === 'mssql' && (i + 1) % 50 === 0 && i + 1 < exercises.length) {
|
||||
lines.push('GO');
|
||||
|
||||
Reference in New Issue
Block a user