# bibletime — локалізація й інтерактивізація уроків

Конвеєр, який перетворює англійські PDF-буклети [Bible Educational
Services](https://www.besweb.com/) на українські: перекладає текст зі
збереженням верстки, адаптує мовозалежні головоломки й додає поля форми, щоб
дитина могла заповнити урок на екрані та зберегти файл.

Обсяг програми — **180 буклетів**: 5 рівнів (0–4) × 3 серії (A, B, C) × 12.
Буклет — 8 сторінок і 4 історії (у рівні 0 — 4 сторінки).

## Що вже зроблено

Серія **A1 на всіх п'яти рівнях** пройдена наскрізь — друк і інтерактив.
Готові файли лежать поза цим репозиторієм, у `../lessons/uk/`.

| | Друк | Інтерактив, полів |
|---|---|---|
| Рівень 0 | ✔ | 36 |
| Рівень 1 | ✔ | 81 |
| Рівень 2 | ✔ | 196 |
| Рівень 3 | ✔ | 152 |
| Рівень 4 | ✔ | 252 |

## Як це працює

Три кроки, кожен зі своїм модулем:

1. **Аналіз структури** — `extract.py` розбирає оригінал у `template.json`:
   блоки, рядки, спани, базові лінії, стилі. Це єдине джерело правди для
   рендерера.
2. **Переклад** — на урок пишеться один файл `tr_<буклет>.py` з українським
   текстом. `build.py` стирає оригінальні гліфи (тільки текст — рамки й
   ілюстрації лишаються) і набирає переклад на ті самі базові лінії.
   Головоломки перебудовуються: кросворди складаються заново під українські
   слова, філворди генеруються й перевіряються пошуком.
3. **Поля форми** — `fields_detect.py` знаходить місця для відповідей за
   **геометрією** сторінки, `fields_build.py` вставляє віджети AcroForm.

## Запуск

```bash
python3 -m venv .venv && .venv/bin/pip install -r requirements.txt

.venv/bin/python ua_build/extract.py Level3_A1
# написати ua_build/tr_Level3_A1.py
.venv/bin/python ua_build/build.py Level3_A1

.venv/bin/python ua_build/fields_detect.py <друк.pdf> --out data/fields.json
.venv/bin/python ua_build/fields_build.py --fields data/fields.json \
    --stem Level3_A1_UA --outdir ../lessons/uk/interactive
```

Панель ручного обведення клікабельних областей на ілюстраціях:

```bash
.venv/bin/python editor/serve.py          # тільки цей комп'ютер
.venv/bin/python editor/serve.py --lan    # + локальна мережа, з токеном
```

На сервері — у контейнері; докладно в **`DEPLOY.md`**:

```bash
cp .env.example .env      # задати EDITOR_TOKEN
docker compose up -d --build
```

## Структура

| Тека / файл | Що всередині |
|---|---|
| `ua_build/lessons.py` | конфіг: колір рівня, заголовки, шляхи, шрифти |
| `ua_build/extract.py` | витяг шаблону верстки |
| `ua_build/build.py` | рендер перекладу |
| `ua_build/tr_*.py` | переклад конкретного буклета — єдине, що пишеться на урок |
| `ua_build/puzzlekit.py` | кросворди, пунктирний текст, сітки |
| `ua_build/rebrand.py` | заміна бренду на всіх сторінках |
| `ua_build/fields_detect.py`, `fields_build.py` | детектор і будівник полів форми |
| `ua_build/inventory*.py` | перепис типів завдань по всій програмі |
| `editor/` | веб-панель обведення областей + сервер |
| `Dockerfile`, `docker-compose.yml`, `deploy/` | розгортання на VPS |
| `original/` | вихідні англійські буклети |

## Документація

* **`.claude/agents/lesson-localizer.md`** — метод: усе, що коштувало ітерацій.
  Головний документ; читати перед роботою.
* `STATE.md` — де зупинилися, як відновити роботу.
* `BACKLOG.md` — відкладені рішення.
* `INVENTORY.md` — перепис усіх 180 буклетів і 18 механік завдань.
* `STRUCTURE_A1.md` — робочий журнал серії A1.
* `DEPLOY.md` — розгортання панелі на VPS: тунель, HTTPS, томи, шрифти.

## Ліцензія й права

Вихідні матеріали належать Bible Educational Services. Репозиторій приватний;
код і переклади — робочі матеріали проєкту, не для публічного поширення.
