Всем здравствуйте! Прошло уже какое-то время с моей первой статьи на Хабре. Спасибо всем. Статья, насколько я могу судить, принята сообществом достаточно тепло. Сегодня хотелось бы поговорить о возможностях читалок с точки зрения изучения иностранных языков. Есть много разных методик и способов изучения языков, но один из самых простых, очевидных и доступных — начать читать книгу на другом языке: в адаптированном варианте, если пока «так» не получается, или в нормальном, если уже получается. По своему опыту могу сказать, что особенно приятно читать в оригинале любимого автора. Так что же нам могут предложить читалки? Размышления на тему под катом. Должен сразу оговориться, что больше рассказ коснётся KnownReader (он же KR), который мы разрабатываем, а также близкого семейства, построенного на одном движке (CoolReader, он же CR; KOReader). Но кое-какие ссылки и на другие приложения будут даны, если потребуется. Хотелось не столько поделиться собственными ноу-хау, сколько рассказать, как оно работает изнутри, с какими проблемами пришлось столкнуться и как они были решены, а заодно и познакомить читателя с интерфейсом и возможностями приложения. Потому что читалка — это целая философия, без понимания которой можно не заметить целый океан возможностей, скрытых от взгляда обывателя. Вернёмся к нашим баранам. Напомню, остановились на вопросе о том, как читалки могут помочь в изучении иностранного языка. Самое простое — выделение одного или нескольких слов с последующим переводом выделенного текста в словаре. Выделение — больная для меня тема, так как я убеждён, что вариант с «подержали, подвигали ползунки», реализованный в большинстве приложений (не только в читалках), медленный и жутко неудобный. Благо тут в KR есть возможность: Для некоторых словарей (в том числе онлайн) есть возможность уточнить направление перевода. Должен сделать небольшое отступление о том, как устроены элементы управления в программах для чтения. Читалка — вещь уникальная тем, что она должна быть похожа на книгу. Поэтому на всём своём пространстве она рисует текст. А если везде текст, как же ей управлять? И вот что обычно предлагают читалки:
Тап-зоны — это зоны экрана (в KR их 9 — 3х3), на нажатие которых можно назначить действия. Очевидно, должны быть как минимум следующая/предыдущая страницы, но не только. Разнообразие действий очень велико, а потому тут каждый развлекается как может. Буквально. В настройках KR можно настроить тап-зоны под себя;  Жесты. Всякие смахивания, проведения слева направо, сверху вниз и т.п.;
Панель с кнопками. Её не все любят, считая её визуальным мусором, но не все и не любят. И эти самые базовые возможности в KR заиграли по-своему, т.е. даже в таких в некотором смысле стандартных аспектах взаимодействия с читалкой KR отметился своим подходом. Вот что здесь было доработано: Одна из моих любимых тем. В ходе повествования часто встречается слово «Словарь». При этом неизбежна некоторая путаница, когда я «словарём» называю: Как правило, хватает двух словарей. Но в KR их больше. И вот что это даёт: Стоит сказать пару слов о приложениях-словарях, достойных внимания: Аард один раз лично мне очень помог в работе (в настоящей, за которую деньги платят). У него есть утилита Slob (на питоне), которая позволяет выполнять поиск словарных статей и выгружать их в html формат. Нам (моей команде на работе) нужно было обогатить информацию о населённых пунктах РФ данными из википедии (численность населения по годам и т.д.). Мы разработали свою утилиту, которая запускала Slob и давала ей на вход название населенного пункта (например «Пермь»). Далее находились все статьи (с «околопермской» тематикой), после чего мы пакетно обрабатывали файлы и легко вычисляли нужный (через jsoup) — по наличию определённых атрибутов — коды ОКАТО, ОКТМО и т.д., затем забирали из него нужные данные (страницы википедии хорошо шаблонизированы и структурированы). Так задача была решена в автоматическом режиме по всем населённым пунктам РФ. Немного многословно, но до сих пор мы с вами обсудили только базовую функциональность — выделили слово, перевели слово (возможно, даже в нескольких словарях и с множеством хитрых настроек). Хорошо, но мало. Ведь есть нерешённая проблема. При чтении нам иногда встречаются трудные слова, которые мы переводим. Эти слова могут встречаться и на следующих страницах, а мозг устроен таким образом, что сразу слово можно и не запомнить. А потому одно и то же действие мы вынуждены повторить несколько раз. Чтобы этого не делать мы добавили то, что называем «пользовательским словарём». Это наше нововведение и в какой-то мере отличительная особенность.
Сейчас расскажу, как оно работает. Мы завели небольшую панель под книгой, в которую помещаем слова из пользовательского словаря (до 10 слов), встретившиеся на текущей (читаемой) странице. Можно быстро нажать и «подсмотреть» перевод. Возникает закономерный вопрос о том, как же пополнять пользовательский словарь? В этом есть техническая сложность. Отправить слово на перевод в стороннее приложение мы ещё можем, а вот получить его, как оказалось, уже совсем не тривиальная задача. Вот что тут придумано и реализовано: Пользовательский словарь это не только «нижняя панелька». Это полноценное окно — «пользовательский словарь / цитаты / история поиска в словаре». С поиском и т.д. Вызывается также по «действию», либо можно нажать на ссылку «слов: Х».
Вроде бы и звучит хорошо, но мало. Мы живем в современном мире. Современный мир живет в онлайне. Поэтому тут мы добавили онлайновые словари — Яндекс, Lingvo, Wikipedia (пока еще в ранней реализации).: Ещё не уснули? Тогда пойдём дальше, в глубь. Про выделение слов и текста я уже сказал, но тут есть ещё возможности: Много всего сказано, но хочется большего: