Piece Of DictionaryВерсия: 0.0.1Последнее обновление программы/игры в шапке: 13.07.2013Когда мне понадобился небольшой оффлайн англо-русский словарь под рукой, первым мидлетом, на который я наткнулся, оказался MobileLexicon. Этот словарь отличает ужасный интерфейс и сравнительно неплохая словарная база: часто требуется прикладывать дополнительные усилия для того чтобы выудить слово из него. Не стану особенно вдаваться в минусы этой программы, достаточно только сказать, что она меня не удовлетворяет.
Поэтому написал конвертер MobileLexicon-словарных баз в собственный бинарный формат, представляющий словарь как ориентированный граф и научил читать этот формат свой мидлет.
Нарекаю связку конвертер-мидлет
PieceOfDictionary.
Именно "кусок словаря", это не ошибка.
Возможности:- Вводить английские слова с помощью виртуальной qwerty-клавиатуры на телефонах с тачскрином (должно работать и с хардварным qwerty).
- Переключать языки интерфейса в "Опциях" и менять полноэкранный и нормальный режимы долгим тапом до опупения.
- Пользоваться предиктивным вводом текста на телефонах с цифровой клавиатурой.
- Просматривать историю введённых слов, нажимая Вправо-Влево или делая соответствующие жесты пальцем на экране.
Словари — лучшие кандидаты на реализацию предиктивного ввода разработчиком программы; странно, что я такого не видел в чужих программах. Если по поводу нанесения английских букв на цифровые клавиши есть какая-то всеобщая договорённость, то русские часто (например, на "
телефонах Fly") размещены с отклонениями от чаще встречающегося
"абвг|деёжз|ийкл|мноп|рсту|фхцч|шщъы|ьэюя", поэтому в настройках программы предиктивный ввод текста отлично настраивается.
Скриншот немного прокрученной вниз выдачи по запросу "235".Меню выбора направления перевода просто нет – как видите, слова из различных направлений расположились вперемешку. Оно, в самом деле, не нужно: только запустив программу можно сразу нажимать на кнопочки и ждать (все минусы предиктивного ввода присутствуют), пока (не) появится желаемое слово.
Скриншот начала выдачи по запросу "bel" с виртуальной клавиатуры.Для ввода с виртуальной клавиатуры диалог выбора направления перевода был бы вовсе раздражающим атавизмом, поскольку пользователь уже выбрал язык ввода.
Словарные статьи сортируются в следующем порядке:- Количество непробельных символов в ключах к статьям.
- ISO 639-2 тэги языков ключей ("eng", "rus") – по алфавиту.
- Ключи – по алфавиту.
Параметры, с которыми PieceOfDictionary запускается в первый раз, задаются в файле "parameters.xml". Изначально предусматривалось, что программа может иметь любое количество любых словарей. В XML-файлах хранятся и переводы на различные языки. Для мобильных устройств XML, возможно, не оптимальный вариант хранения информации, но альтернативы вроде INI-подобного формата показались мне неприятными. Для работы с XML я использовал kXML.
В MIDP 2.0 не входят средства для чтения из файла подлинного UTF-8, ни в одном из классов не реализована функция seek как таковая и это не говоря уже о том, что максимальный размер читаемого файла во многих JVM ограничен. Поэтому было написано семейство классов со странным названием "EasyReadingFile", которые позволяют работать с этим подвидом Unicode и даже делать seek по "колонии" файлов, составляющих один большой "файл", который не каждый телефон смог бы прочесть.
В дальнейшем можно было бы создать сайт, скрипты которого добавляли бы в JAR-архив нужные файлы и редактировали бы "parameters.xml" в соответствии с пожеланиями пользователей.
Возможный интерфейс загрузки PieceOfDictionary-сборки с сайта.Если расширится ассортимент словарей, то действительно в программе начнёт иметь смысл возможность если не выбора направления перевода, то, наверное, отключения временно ненужных словарей до востребования.
Рекомендую обладателям телефонов с цифровыми клавишами, поскольку реализован предиктивный ввод текста (что-то вроде T9 или iTAP исключительно по словам, имеющимся в словаре).Скачать:PieceOfDictionary 0.0.1: PieceOfDictionary.jar ( 1.36 МБ )
Исходники словаря: PieceOfDictionary.zip ( 1.36 МБ )
Смотрите, пользуйтесь, изменяйте, но просто обозначьте где-то, пожалуйста, моё изначальное авторство.
Тему эту я поднял из
моей пропащей статьи в песочнице Хабра.
Спойлер (+/-) (Минусы)
Минусы концепции вообще- У оффлайн словарей не может быть серьёзного применения. Достаточно солидную словарную базу телефон хранить не может (проблема, скорее, на настоящий момент в том, чтобы её на телефон доставить), а может брать её из Интернета. Я от этого отказался: не всегда у меня есть денежки на счету (а готовые решения, между прочим, есть).
- Платформа находится в непонятном состоянии: с одной стороны некоторые экземпляры уже поддерживают свежий MIDP 3.0 (например), покупатели уже давно покупают новенькие дешёвые телефончики с тачскринами, а с другой эти телефоны всё чаще имеют операционную систему, в которой место Java у ведра.
Минусы реализации (почему 0.0.1)Вообще:
- На данный момент формат неоптимален – всё знаем, но лень одолевает.
Конвертера:
- Конвертер писался достаточно небрежно и, в частности, загружает в ОЗУ всю словарную базу перед записью её на диск.
Мидлета:
- Дергается и скачет всё при прокрутке пальцем.
- Единственный альтернативный перевод программы – английский просто ужасен (как и, наверное, все идентификаторы и английские строковые константы в исходниках) по вине моей настырности и нежелания иметь дела с иностранным языком.
- Ввод русских слов виртуальной клавиатурой невозможен. Вводятся только буквы с 'т' по 'я' включительно. Что за песня? (JVM — Esmertec Jbed 20081013.2.1)
Сообщение отредактировал
viRUS_966 - 12.07.2013, 22:14