קורא · библиотека · инструкция

Как сделать книгу

Книга для קורא — это один JSON-файл (book-data.json). Его можно подгрузить на странице библиотеки кнопкой «+ Добавить свою книгу» — файлом, выбором с диска, или просто вставить текст JSON в поле. Ничего никуда не отправляется, файл остаётся в браузере.

Минимум, который нужен

Всего два обязательных поля на уровне книги и предложения — дальше можно расширять постепенно:

Вот самая маленькая книга, которая пройдёт проверку:

{
  "title": "Моя первая книга",
  "sentences": [
    {
      "id": "s1",
      "fluent": "Это книга.",
      "words": [
        { "t": "זה", "lemma": "זה", "tr": "это" },
        { "t": "ספר.", "lemma": "ספר", "tr": "книга" }
      ]
    }
  ]
}
Огласовки (никуд) в t/lemma — не обязательны. Без них текст просто покажется как есть, а тумблер «Огласовки» в настройках ничего убирать не будет (убирать нечего). Добавите позже — ничего пересобирать не нужно.

Поля предложения

ПолеОбязательноЧто это
idдаЛюбая уникальная строка внутри книги, например "s1", "s2".
wordsдаМассив слов предложения по порядку, см. ниже.
fluentнетЛитературный перевод предложения целиком на русский. Без него просто не будет строки перевода под текстом.
literalнетДословный перевод слово-в-слово (через тире), для поля «Дословный перевод». Необязателен, но помогает видеть структуру фразы на иврите.
audioнетПуть к mp3-файлу с озвучкой этого предложения. См. «Аудио» ниже.
illustrationнетКартинка-мнемоника к одному слову предложения. См. «Иллюстрации» ниже.

Поля слова

ПолеОбязательноЧто это
tдаТекст слова как он должен показаться в предложении — с огласовками или без, знаки препинания (запятая, точка, «?») приклеены к последнему слову перед ними, как обычный текст.
lemmaна практикеСловарная форма слова. Формально проверкой не требуется, но именно по lemma ведутся личный словарь, частотность и звёздочки — без неё эти функции путаются. Если лень нормализовать, продублируйте t сюда как есть.
trнетПеревод слова на русский — то, что покажется в подсказке при клике.
posнетЧасть речи для подсказки: "сущ.", "гл.", "прил.", "нареч.", "предл.", "мест.", "числ.", "частица", "имя собств." — можно своё, это просто текст.
extraнетКороткая грамматическая пометка: биньян, время, лицо, род — что угодно текстом, например "биньян פעל, прош. вр., ж.р.".
rootнетКорень через дефис, например "ק-ט-ל", или "—" если неприменимо.
start, endнетСекунды начала/конца звучания этого слова в файле audio — для подсветки текущего слова при прослушивании. Без аудио не нужны.

Аудио

Положите mp3-файлы рядом (или укажите полный путь/URL) и пропишите его в audio у каждого предложения. Если хотите, чтобы слово подсвечивалось в такт голосу — добавьте start/end (в секундах) у каждого слова этого предложения. Без аудио плеер просто не появится под соответствующим текстом — ничего не сломается.

Готового встроенного озвучивателя в самом сайте пока нет — записывайте сами или прогоняйте текст через любой TTS (например, голосовой синтез в Google Translate или аналогичный сервис) и сохраняйте как mp3.

Как получить огласовки, если хочется

Проще всего — оставить книгу без огласовок вообще (см. выше, это полноценно поддерживается). Если хочется добавить: возьмите словарную форму нужного слова с готовыми огласовками из Pealim или похожего словаря и подставьте её как lemma, а для конкретной словоформы в t — либо тоже поищите в словаре форму спряжения/склонения, либо оставьте t без огласовок, а lemma — с ними: работать будет в любом случае, просто сам текст в предложении не будет вокализован.

Иллюстрации (необязательно)

Можно прикрепить картинку-мнемонику к одному слову предложения — она появится сворачиваемым блоком под текстом:

"illustration": {
  "word": "חָלָל",              // должен ТОЧНО совпадать с lemma нужного слова
  "tr": "космос",
  "caption": "חלל",
  "capTr": "space",
  "mnemonic": "Текст подсказки-ассоциации на русском.",
  "img": "путь/к/картинке.jpg"  // или "svg": "<svg>...</svg>" вместо img
}

word должен буквально совпадать со значением lemma того слова, к которому привязана картинка — по нему ищется подсветка.

Частые ошибки при проверке

СообщениеЧто значит
Не получилось разобрать JSONСинтаксическая ошибка в самом JSON — лишняя запятая, незакрытая кавычка. Проверьте файл в любом JSON-валидаторе.
Нет массива «sentences» на верхнем уровнеКорень файла — объект { }, и в нём должен быть ключ sentences, а не, скажем, text или массив без обёртки.
Массив «sentences» пустойДобавьте хотя бы одно предложение.
Предложение №N без поля id или wordsУ конкретного предложения нет одного из двух обязательных полей — проверьте именно его.

Дальше

Загруженная книга видна только в этом браузере (или синхронизируется между вашими устройствами, если вы вошли через Google — но не публикуется и никому больше не видна). Удалить её можно там же, в окне «Добавить книгу», в списке «Уже добавленные книги».