Page 1 of 1

Как пришить поддержку dict протокола

PostPosted: Thu Dec 09, 2010 2:09 pm
by ayvango
Есть желание пришить к GD поддержку dict протокола для работы с удалёнными серверами. Не подскажите в каком модуле следует копать, на что обратить внимание в первую очередь?

Re: Как пришить поддержку dict протокола

PostPosted: Thu Dec 09, 2010 4:26 pm
by ikm
Берете за основу какую-нибудь mediawiki.hh/cc и пишете по её образу и подобию источник словарей. Сам интерфейс словаря (Dictionary) детально откомментирован в dictionary.hh. Вообще программные интерфейсы документированы главным образом в .hh-файлах. Плюс настройки - добавляете их в config.hh/cc и интерфейс к ним в editdictionaries.cc/hh, sources.cc/hh и тому подобным.

Работу с сокетами надо организовывать через средства Qt. Вообще средства Qt следует использовать по максимуму. В коде когда-то была попытка абстрагирования от Qt, следствия которой до сих пор видны и тут и так (использование разных типов строк и т.п.), но в общем мы от этого уже отказались, Qt стоит использовать везде.

Re: Как пришить поддержку dict протокола

PostPosted: Fri Dec 10, 2010 7:00 am
by ayvango
Для dict есть готовые библиотеки на c или на с++. Я просто хотел бы их прикрутить. Разумеется ни о каких QSocket там речь не идёт. Это будет выбиваться из политки кода?

Re: Как пришить поддержку dict протокола

PostPosted: Fri Dec 10, 2010 9:07 am
by ikm
Нет, не будет, если библиотеки кросс-платформенны (linux/win/mac) и распространяются под gpl-совместимой лицензией.

Re: Как пришить поддержку dict протокола

PostPosted: Tue Mar 12, 2013 5:56 pm
by Michael72
ayvango wrote:Есть желание пришить к GD поддержку dict протокола для работы с удалёнными серверами. Не подскажите в каком модуле следует копать, на что обратить внимание в первую очередь?
Меня тоже очень сильно интересует реализация такой поддержки.
Получилось ли что-нибудь у вас в этом направлении?

Re: Как пришить поддержку dict протокола

PostPosted: Mon Mar 17, 2014 3:46 pm
by Michael72
Прошёл уже год, и только через год удалось случайно наткнуться на способ решения данной задачи, который, как я понимаю, уже давно "лежал под носом", и я его не замечал, хотя искал в данном направлении весьма интенсивно. По этой причине хочу сейчас описать как можно подробнее, как решается данная задача, чтобы это могло принести пользу заинтересованным в данном функционале.
В меню Правка - Словари - Источники (F3) вкладка "Программы" позволяет установить обращение к требуемой внешней программе. Щелкните на кнопке Добавить и создайте запись аналогично тому, как это представлено на скрин-шоте:
Image
Пользователи ОС GNU/Linux могут просто напечатать в поле Командная строка:
Code: Select all
dict -h dict.dvo.ru %GDWORD%

Щелкните на ОК. Будет создан Словарь Он-Лайн, содержащий все словарные базы на DICT-сервере dict.dvo.ru. Список других DICT-серверов см. здесь. Теперь необходимо установить консольный DICT-клиент DICT.

Установка DICT

Если вы используете ОС GNU/Linux, то установить программу DICT вы можете из репозитория. Для этого в командной строке терминала введите:
Code: Select all
sudo apt-get install dict

Программу DICT для Windows можно найти здесь. Но у пакета, который можно скачать с этого сайта, есть определённые проблемы с интернационализацией. Для решения проблемы необходимо обновить файл cygwin1.dll до версии не меньше 1.7.

Скопируйте содержимое ZIP-архива в каталог C:\progs\dict.
Проверяем:
Image

Примечание. Небольшой секрет для тех, кто плохо знаком с консольным dict-клиентом. Можно добиться большей информативности при поиске определений, если использовать стратегию word. Для указания стратегии используется ключ -s. Таким образом, если в качестве командной строки указать:
Code: Select all
dict --html -h dict.dvo.ru -s word %GDWORD%

то поиск в словарях будет проводится по слову. Это значит, что будут показаны все словарные статьи со словосочетаниями, в которых присутствует данное слово. Например, теперь поиск по слову אפשרות будет находить в частности и словарную статью для словосочетания אי אפשרות, а не только такие, которые для одного слова אפשרות.