Изучение иностранных языков с помощью программ для чтения

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Всем здравствуйте!


Прошло уже какое-то время с моей первой статьи на хабре. Спасибо всем. Статья, насколько я могу судить, принята сообществом достаточно тепло. Сегодня хотелось бы поговорить о возможностях читалок с точки зрения изучения иностранных языков. Есть много разных методик и способов изучения языков, но один из самых простых, очевидных и доступных — начать читать книгу на другом языке: в адаптированном варианте, если пока «так» не получается, или в нормальном, если уже получается. По своему опыту могу сказать, что особенно приятно читать в оригинале любимого автора.
Так что же нам могут предложить читалки? Размышления на тему под катом.


Должен сразу оговориться, что больше рассказ коснётся KnownReader (он же KR), который мы разрабатываем, а также близкого семейства, построенного на одном движке (CoolReader, он же CR; KOReader). Но кое-какие ссылки и на другие приложения будут даны, если потребуется. Хотелось не столько поделиться собственными ноу-хау, сколько рассказать, как оно работает изнутри, с какими проблемами пришлось столкнуться и как они были решены, а заодно и познакомить читателя с интерфейсом и возможностями приложения. Потому что читалка — это целая философия, без понимания которой можно не заметить целый океан возможностей, скрытых от взгляда обывателя.


Выделяем, переводим


Вернёмся к нашим баранам. Напомню, остановились на вопросе о том, как читалки могут помочь в изучении иностранного языка. Самое простое — выделение одного или нескольких слов с последующим переводом выделенного текста в словаре. Выделение — больная для меня тема, так как я убеждён, что вариант с «подержали, подвигали ползунки», реализованный в большинстве приложений (не только в читалках), медленный и жутко неудобный. Благо тут в KR есть возможность:


  1. Выделить одно слово двойным тапом (при включенной соответствующей настройке);
  2. Двумя быстрыми тапами в разных местах текста выделить текст между ними.
    При должной сноровке это получается сделать практически мгновенно. Этим KR выгодно отличается от других читалок. Обязательно попробуйте и поделитесь своим мнением в комментариях здесь или на форуме.
    Остаётся только выполнить перевод в словаре. Словарь, по сути, является отдельной программой. Для перевода текст передается в неё, и дальше уже в её интерфейсе происходит магия. Этот базовый функционал хорош тем, что он надёжен, доступен оффлайн и реализован практически во всех читалках.


Для некоторых словарей (в том числе онлайн) есть возможность уточнить направление перевода.


Направление перевода
Направление перевода Перевод (Lingvo)

Про элементы управления


Должен сделать небольшое отступление о том, как устроены элементы управления в программах для чтения. Читалка — вещь уникальная тем, что она должна быть похожа на книгу. Поэтому на всём своём пространстве она рисует текст. А если везде текст, как же ей управлять? И вот что обычно предлагают читалки:
Тап-зоны — это зоны экрана (в KR их 9 — 3х3), на нажатие которых можно назначить действия. Очевидно, должны быть как минимум следующая/предыдущая страницы, но не только. Разнообразие действий очень велико, а потому тут каждый развлекается как может. Буквально. В настройках KR можно настроить тап-зоны под себя;


Тап зоны


Жесты. Всякие смахивания, проведения слева направо, сверху вниз и т.п.;
Панель с кнопками. Её не все любят, считая её визуальным мусором, но не все и не любят.


Про ноу-хау


И эти самые базовые возможности в KR заиграли по-своему, т.е. даже в таких в некотором смысле стандартных аспектах взаимодействия с читалкой KR отметился своим подходом. Вот что здесь было доработано:


  1. В качестве словаря в KR можно указать любую программу, которая может принимать в себя текст (хоть СМС отправляйте). Это удобно, если у вас есть какой-то словарь, про который KR не знает. Отмечу также, что и переключение словарей также можно вынести на тап-зону;
  2. Сделали несколько настроек словарей, между которыми можно быстро переключаться (режимы «переключить на 2 словарь», «переключить на 2 словарь на один следующий перевод, потом вернуться обратно»);

Словари и режимы выделения
Настройки словарей Настройки различных видов выделения в разных режимах: режим чтения, выделения, инспектора

  1. Добавили уникальное действие — длинный двойной тап. Это когда вы делаете двойной тап, но не отпускаете палец после второго тапа. На это уникальное действие можно настроить что душе угодно. Например, вызов другого словаря. Если вы знаете другую читалку, которая умеет длинный двойной тап, напишите об этом в комментариях или в личку. Мне правда интересно;
  2. К жестам (это не про словари, но все равно напишу) добавили возможность менять размер шрифта диагональным щипком и размеры полей горизонтальным и вертикальными щипками. Тут следует отметить, что аудитория читалки отреагировала хорошо. Но не вся аудитория. А потому без правок не обошлось. В следующем же релизе пришлось вынести в настройки возможность отключения управления жестами;
  3. Разнообразили панель с кнопками — её теперь можно очень гибко настраивать: изменять список и функции кнопок, регулировать её размер (больше, меньше, средний) и цвет. Вообще, гибкость настраивания — это про KR. Возможно, кого-то это может запутать поначалу, но было замечено, что к такой свободе люди быстро привыкают и неохотно от неё отказываются.

Несколько словарей


Одна из моих любимых тем.


Минутка заботы от автора материала

В ходе повествования часто встречается слово «Словарь». При этом неизбежна некоторая путаница, когда я «словарём» называю:


  1. Элемент управления или пункт меню в читалке;
  2. Приложение для отображения словарей (Abbyy, GoldenDict и т.д.);
  3. Конкретный словарь (например «Толковый словарь Ушакова»), отображаемый в пункте выше.
    Как правило, из контекста понятно о чём идет речь. Если непонятно, спрашивайте, отвечу.

Как правило, хватает двух словарей. Но в KR их больше. И вот что это даёт:


  1. Разнообразие. В одной программе могут быть одни словарные статьи, в другой — другие. Где-то есть транскрипция, где-то нет. Какие-то умеют переводить фразы (Яндекс, Гугл, Промт), какие-то могут оперировать только словами.
  2. Словари «языковые» и «толковые». Может быть интересно посмотреть как перевод слова, так и его толкование (википедия, энциклопедии и т.д.).

Стоит сказать пару слов о приложениях-словарях, достойных внимания:


  • Lingvo. Очень достойное приложение от уважаемой фирмы ABBYY. Всё на уровне, даже с проговаривателем. Умеем показывать его в «карточке» (т.е. на часть экрана). Есть хороший такой минус — это платно. Как сама программа, так и словари. Я покупал английский словарь за 20 долларов (а для России — ещё и с НДС). Другой значимый минус в том, что нельзя повлиять на развитие. Например, я просил поддержку добавить кнопку «скопировать словарную статью» — уж столько воды утекло, а её до сих пор не добавили.
  • GoldenDict. Очень хорошая вещь, практически не имеющая аналогов, у которой есть куча словарей. Их очень много. Также GoldenDict умеет найти словари из Lingvo и использовать их. Есть форк на форуме 4pda, который привносит некоторую функциональность и «осовременивает» интерфейс. От минусов совсем грустно становится — развитие остановилось, исходников программы нет. Да и платный он, этот GoldenDict.
  • Aard 2. Совершенно уникальная вещь. Программа создана для обработки больших (даже не больших, а огромных) словарей. На сайте Aard’а выкладываются дампы википедий. Представляете, оффлайновая википедия в телефоне? Ух...

Любопытный вариант использования Aard

Аард один раз лично мне очень помог в работе (в настоящей, за которую деньги платят). У него есть утилита Slob (на питоне), которая позволяет выполнять поиск словарных статей и выгружать их в html формат. Нам (моей команде на работе) нужно было обогатить информацию о населённых пунктах РФ данными из википедии (численность населения по годам и т.д.). Мы разработали свою утилиту, которая запускала Slob и давала ей на вход название населенного пункта (например «Пермь»). Далее находились все статьи (с «околопермской» тематикой), после чего мы пакетно обрабатывали файлы и легко вычисляли нужный (через jsoup) — по наличию определённых атрибутов — коды ОКАТО, ОКТМО и т.д., затем забирали из него нужные данные (страницы википедии хорошо шаблонизированы и структурированы). Так задача была решена в автоматическом режиме по всем населённым пунктам РФ.


  • Яндекс Переводчик / Гугл Переводчик. Это уже новое веяние, они в представлении не нуждаются. Работают, развиваются, очень хороши. Недавно, правда, Яндекс немного расстроили, переведя свой API переводчика на платные рельсы. Мы об этом писали на форуме и даже инструкцию оформили о том, как его теперь готовить для использования в KR. Поэтому здесь повторяться не буду. Если кому интересно станет, заходите, в нашей ветке на форуме уютно.
  • Если знаете другие хорошие словари — добавляйте в комментарии, обсудим.

Пользовательский словарь


Немного многословно, но до сих пор мы с вами обсудили только базовую функциональность — выделили слово, перевели слово (возможно, даже в нескольких словарях и с множеством хитрых настроек). Хорошо, но мало. Ведь есть нерешённая проблема. При чтении нам иногда встречаются трудные слова, которые мы переводим. Эти слова могут встречаться и на следующих страницах, а мозг устроен таким образом, что сразу слово можно и не запомнить. А потому одно и то же действие мы вынуждены повторить несколько раз. Чтобы этого не делать мы добавили то, что называем «пользовательским словарём». Это наше нововведение и в какой-то мере отличительная особенность.
Сейчас расскажу, как оно работает. Мы завели небольшую панель под книгой, в которую помещаем слова из пользовательского словаря (до 10 слов), встретившиеся на текущей (читаемой) странице. Можно быстро нажать и «подсмотреть» перевод.


Онлайн-словарь
Перевод в онлайн-словаре Перевод в онлайн-словаре

Пользовательский словарь
Сохранённые слова в пользовательском словаре Быстрый просмотр слова из пользовательского словаря

Цитаты, история поиска
Диалог «пользовательский словарь / цитаты / история поиска в словаре» Диалог «пользовательский словарь / цитаты / история поиска в словаре»

Возникает закономерный вопрос о том, как же пополнять пользовательский словарь? В этом есть техническая сложность. Отправить слово на перевод в стороннее приложение мы ещё можем, а вот получить его, как оказалось, уже совсем не тривиальная задача. Вот что тут придумано и реализовано:


  1. При выделении слова оно запоминается «внутри» KR как последнее выделенное слово.
  2. Дальше оно «уходит» во внешнюю программу-словарь.
  3. Мы в свою очередь прочитали, посмотрели, дальше ВЫДЕЛИЛИ словарную статью и СКОПИРОВАЛИ её в буфер обмена, затем вернулись в KR и нажали действие (мы же помним, что его можно назначить на тап-зону) «создать элемент пользовательского словаря по последнему выделению и содержимому буфера обмена» (знаем, что надо поработать над формулировкой, но как есть), после чего осталось только нажать OK. Можно даже без буфера — есть возможность отправить текст в KR через всплывающее меню андроида — функциональность PROCESS_TEXT.
    Что здесь сложно? Копирование словарной статьи. Это снова «подержать, подвигать ползунки» (не у нас, а в программе-словаре). Хорошо, мы упорные. Поговорили с коллегами из GoldenDict mod, сделали для них доработку — добавили кнопку в GoldenDict, чтобы можно было хотя бы выделить словарную статью. Коллеги обещали нашу доработку включить в свой билд и выпустить. Ждём-с.

Онлайн словари


Пользовательский словарь это не только «нижняя панелька». Это полноценное окно — «пользовательский словарь / цитаты / история поиска в словаре». С поиском и т.д. Вызывается также по «действию», либо можно нажать на ссылку «слов: Х».
Вроде бы и звучит хорошо, но мало. Мы живем в современном мире. Современный мир живет в онлайне. Поэтому тут мы добавили онлайновые словари — Яндекс, Lingvo, Wikipedia (пока еще в ранней реализации).:


  1. Яндекс хорош тем, что переводит несколько слов (добавили действие «перевести всю страницу»). Лингво — расширенными словарными статьями и транскрипциями. Википедия хороша сама по себе.
  2. Технически онлайновый словарь вызывается «не выходя из KR», т.е. вызывается в собственном интерфейсе KR. Таким образом мы получили главную ценность — у нас нет необходимости копировать перевод, вставлять в пользовательский словарь и т.д. Перевод в онлайновом словаре автоматически заносит слово в историю с переводом. И мы сразу видим его на следующих страницах. Профит.
  3. Минусы онлайновых словарей тоже очевидны — зависимость от внешних сервисов с их ограничениями (которые могут меняться), а также — необходимость быть онлайн.
    Ну, это, в целом, более чем приемлемо.

Режимы


Ещё не уснули? Тогда пойдём дальше, в глубь. Про выделение слов и текста я уже сказал, но тут есть ещё возможности:


  1. Режим выделения.
    Включается режим выделения (страница текста обводится сплошной рамочкой), в котором слово можно выделить в один тап, а несколько слов — тапнули и провели. Что мы поменяли. В режиме выделения можно настроить другие словари на действия. Действий три: выделение слова, выделение нескольких слов, выделение слова по длинному двойному тапу. Это расширяет возможности использования выделения. Допустим в обычном режиме — перевод в англо-русском словаре, в режиме выделения — в википедии.
  2. Режим инспектора.
    Страница текста выделяется штрихпунктирной рамочкой. Режим выделения после перевода отключается. Режим инспектора — это такой залипающий режим выделения, который включен, пока не выключен. Удобно, например, если хочется «протыкать» много слов на странице друг за другом и получить быстрый перевод по каждому. Также в режиме инспектора тоже можно настроить свои словари (на три варианта выделения).

Режимы
Режим выделения Режим инспектора

Википедия
Поиск в Википедии — список статей Википедия — выбранная статья

Что дальше?


Много всего сказано, но хочется большего:


  • У нас есть возможность отображения в горизонтальном расположении устройства текста в виде «двух страниц» (выглядит совсем как раскрытая книга). И это можно как-то обыграть. Есть мысль сделать возможность «на одной странице показывать исходный текст, а на второй — перевод этого текста».

Отображение двух страниц


  • Пользовательский словарь. Сейчас найденные слова на странице отрисовываются на «нижней панельке». Есть желание просто подсвечивать их в тексте в виде «примерно как гиперссылка».
  • Лингво-онлайн умеет «отдать» wav-файл с озвучкой. У нас пока не реализовано, но можно сделать проговариватель.
  • Википедия-онлайн у нас выводится без форматирования. Можно развиваться в эту сторону.
    К чему это я? Да к тому, что приложение живёт, пока оно кому-нибудь нужно. Желательно, чтобы оно было нужно не только его автору и паре-тройке его друзей. Нет, это, конечно, тоже уже кое-что, но всегда хочется большего. Если вы посетите нашу ветку на 4pda, то, возможно, заметите, что у нас ведётся достаточно активное обсуждение новых фич и старых багов. У нас есть своя аудитория, мы ценим её мнение и дорожим ей. Но взгляд со стороны довольно часто бывает полезным. А потому приглашаю вас, хабровчане, к обсуждению.
Источник: https://habr.com/ru/post/529244/

Интересные статьи

Интересные статьи

Хочешь знать, как и откуда добывают нефть, и зачем для этого нужны математики, инженеры и программисты? Это первая часть из серии статей, представляющих собой очень быстрое обзорн...
По состоянию на 9 марта 2020 мы имеем резкое снижение рынков США начиная с исторического максимума в 20-числах февраля 2020, которое на данный момент составило около -16%. Новости пестрят заголов...
Привет, Хабр! И снова мы рассказываем о свежих версиях вредоносного ПО из категории Ransomware. HILDACRYPT — это новая программа-вымогатель, представитель обнаруженного в августе 2019 года семейс...
Периодически мне в разных вариантах задают вопрос, который «в среднем» звучит так: «что лучше: заказать интернет-магазин на бесплатной CMS или купить готовое решение на 1С-Битрикс и сделать магазин на...
Уважаемые читатели Хабра, представляю вашему вниманию серию постов, которые в будущем я планирую объединить в книгу. Я захотел покопаться в прошлом и рассказать свою историю, как я стал разработч...