Гид по технологиям

Исправление проблем со словарём в iBooks 1.1

5 min read Инструкции Обновлено 16 Sep 2025
Исправление словаря в iBooks 1.1
Исправление словаря в iBooks 1.1

Введение

Я как активный читатель e‑книг накопил большую библиотеку. Когда появился iPad с поддержкой ePub, я конвертировал многие книги через Calibre. После выхода iBooks 1.1 в App Store появилась поддержка iPhone и iPod touch и синхронизация позиций чтения — отличное улучшение. Но после обновления словарь стал недоступен для моих собственных конвертированных книг: при выделении слова появлялось окно «Dictionary not available for this language.»

Это происходило не для всех книг: книги, загруженные из Project Gutenberg через iBookstore, работали нормально. На форумах Mobileread выяснилось, что Calibre иногда записывает неверный идентификатор языка в ePub — обычно “UND” (undefined). iBooks 1.1 не имеет словаря для такого кода, поэтому и появляется ошибка.

Как это работает — коротко

ePub — это по сути ZIP‑архив с файлами HTML, картинками и метаданными. Внутри есть XML‑файл content.opf, который содержит метаданные, включая тег dc:language. Если там стоит “UND”, приложение не понимает, какой словарь использовать.

Важно: мы не изменяем текст книги. Мы корректируем только метаданные — код языка.

Что нужно подготовить

  • Компьютер с macOS (инструкции для macOS в разделе команд). Можно сделать то же на Linux/Windows с аналогичными утилитами (unzip/zip/текстовый редактор).
  • Резервная копия ePub-файла на случай ошибки.
  • Базовое знание терминала (опционально). Если не комфортно, можно переупаковать ePub через графический архиватор.

Пошаговая инструкция (метод для macOS, Terminal)

  1. Найдите файл ePub в iTunes: правый клик → Show in Finder.

  2. Скопируйте файл в рабочую папку и сделайте резервную копию (важно).

  3. Откройте Terminal и выполните команду, чтобы извлечь только файл content.opf:

unzip -p '/путь/к/книге.epub' content.opf > content.opf
  • ключ -p печатает файл в stdout; перенаправление > сохраняет его локально.
  1. Откройте content.opf в текстовом редакторе. На macOS можно использовать TextEdit:
open -e content.opf
  1. Найдите строку с тегом — обычно там стоит UND. Измените значение на нужный код языка, например:
en

Для русского — используйте ru. Для испанского — es. Используйте двухбуквенные ISO 639‑1 коды.

  1. Сохраните файл и закройте редактор.

  2. Поместите изменённый content.opf обратно в ePub:

zip -u '/путь/к/книге.epub' content.opf

Ключ -u обновляет файл в архиве.

  1. Перенесите обновлённый ePub в iTunes (или замените существующий файл в библиотеке). Синхронизируйте устройство и проверьте работу словаря.

Если iBooks всё ещё не показывает словарь, посмотрите раздел «Когда это не работает» ниже.

Диалог ошибки словаря в iBooks с сообщением «Dictionary not available for this language»

Редактирование content.opf в TextEdit — пример изменения тега dc:language

Пример команд Terminal: unzip, open -e, zip

Перетаскивание ePub из Finder в Terminal для вставки пути к файлу

Переупаковка ePub и проверка

Альтернативные подходы

  • Графические архиваторы: откройте ePub как ZIP в Finder (переименуйте .epub → .zip), извлеките content.opf, отредактируйте и снова упакуйте. Затем переименуйте обратно в .epub.
  • Используйте специализированные редакторы ePub (Sigil, Calibre Editor). В Sigil можно открыть ePub и изменить метаданные через интерфейс.
  • Повторная конвертация в Calibre: иногда при повторной конвертации можно ввести правильный язык в настройках, но не всегда это исправляет уже созданный файл.

Когда это не работает — возможные причины и решения

  • Тег dc:language уже корректен, но словарь всё равно не доступен. Причина: iBooks может требовать конкретный словарь, которого нет в iOS для выбранного кода. Решение: выставьте язык на ближайший поддерживаемый (например, en для английских текстов), либо смените регион устройства.
  • Книга имеет несколько языков внутри. Решение: укажите основной язык в dc:language, но для многоязычных текстов словарь может работать неполно.
  • Файл content.opf находится в подпапке внутри архива (не в корне). В этом случае извлеките правильный путь: сначала распакуйте список файлов командой unzip -l файл.epub, найдите путь к content.opf и используйте его.

Мини‑методология: быстрый чек‑лист перед изменением

  • Сделать резервную копию оригинального .epub
  • Проверить текущий код языка в content.opf
  • Изменить на двухбуквенный код ISO 639‑1 (en, ru, es и т.д.)
  • Обновить ePub в архиве и загрузить в iTunes
  • Протестировать выбор слова и вызов словаря на устройстве

Playbook: быстрая автоматизация (скрипт для macOS)

Ниже — простой bash‑скрипт для пакетной обработки. Используйте осторожно — сначала протестируйте на копиях.

#!/bin/bash
# usage: ./fix_lang.sh /path/to/book.epub en
EPUB="$1"
LANG="$2"
if [ -z "$EPUB" ] || [ -z "$LANG" ]; then
  echo "Usage: $0 /path/to/book.epub en"
  exit 1
fi
cp "$EPUB" "${EPUB}.bak"
unzip -p "$EPUB" content.opf > content.opf || { echo "content.opf not found"; exit 2; }
sed -i '' -E "s|.*|${LANG}|" content.opf
zip -u "$EPUB" content.opf
rm content.opf
echo "Done. Backup is ${EPUB}.bak"

Краткая инструкция: сохраните как fix_lang.sh, дайте права выполнения командой chmod +x fix_lang.sh и запустите ./fix_lang.sh '/путь/к/книге.epub' en.

Ролe‑based чек‑листы

  • Для обычного пользователя:

    • Сделать копию файла.
    • Открыть content.opf через графический архиватор или Sigil.
    • Изменить язык и сохранить.
    • Вернуть файл в iTunes.
  • Для администратора / продвинутого пользователя:

    • Использовать скрипт для массовой обработки каталога.
    • Логировать изменения и хранить бэкапы.
    • Проверять корректность пути к content.opf внутри архива.

Критерии приёмки

  • После правки и синхронизации на устройстве словарь открывается при выделении слова.
  • Сохранена целостность текста и форматирования книги.
  • В репозитории хранится резервная копия оригинального файла.

Короткий глоссарий

  • ePub: формат электронных книжных файлов, по сути ZIP с HTML и метаданными.
  • content.opf: XML‑файл метаданных внутри ePub.
  • dc:language: тег в content.opf, указывающий код языка (ISO 639‑1).
  • UND: код, означающий «Undefined» — обычно причина ошибки.

Тестовые случаи и приёмочные проверки

  1. Open book on device and select a word. Expected: dictionary panel opens and shows definition.
  2. Change dc:language to en for English book and repeat. Expected: dictionary works.
  3. Revert to original .epub from backup. Expected: behaviour возвращается к исходному (проверка отката).

Когда не рисковать и резервная стратегия

Если книга защищена DRM, не пытайтесь редактировать ePub — это может привести к нарушению лицензии или порче файла. Всегда работайте с копией файла. Если после изменений форматирование нарушилось, верните бэкап и используйте Sigil или Calibre для более аккуратной правки метаданных.

Краткое резюме

Если iBooks показывает «Dictionary not available for this language» для ваших файлов, проблема чаще всего в неверном метаданном dc:language внутри content.opf. Исправление тега на правильный двухбуквенный код обычно решает проблему. Используйте Terminal, графические архиваторы или редакторы ePub. Обязательно делайте резервные копии и тестируйте изменения.

Important: Всегда сохраняйте резервную копию оригинального файла перед правкой.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Мониторинг Apache Tomcat: счётчики и правила
Мониторинг.

Мониторинг Apache Tomcat: счётчики и правила

Защита от clickjacking: руководство
Кибербезопасность

Защита от clickjacking: руководство

Разные обои для каждого экрана Android
Android.

Разные обои для каждого экрана Android

Удаление данных с сайтов брокеров
Конфиденциальность

Удаление данных с сайтов брокеров

Разные обои для каждой домашней страницы Android
Android.

Разные обои для каждой домашней страницы Android

Мониторинг и управление Apache Tomcat
Мониторинг.

Мониторинг и управление Apache Tomcat