Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » GoldenDict (часть 2)

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175

Открыть новую тему     Написать ответ в эту тему

Maz



Дед Мазай
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Предыдущее обсуждение: Часть 1




 
Актуальная версия 1.5.0:
Windоws Qt 4.8.6 или Qt 5.12.3, последний EXE-файл: 1.5.0-18-g59363bc9.
Плагин dsengine.dll для Qt 5.6-based версии на Windows XP: dsengine_5.6.1_for_XP.7z
как собрать актуальный рабочий комплект для windows (без словарей)
MacOSX 1.5.0-18-g59363bc9 Intel; архив прежних версий: на github (09.2012–04.2019), на sourceforge (06.2016–04.2019)
 
Расширенная настройка интерфейса
 
GoldenDict — новая словарная программа, обладающая следующими особенностями:  
 
  • Графический интерфейс на основе табов, для создания которого использована библиотека Qt;
  • Интеграция с html-движком WebKit для корректного представления материалов в html-формате;
  • Поддержка подключения словарей в форматах: Babylon (.bgl/.gls), StarDict (.ifo/.dict./.idx/.syn), Dictd (.index/.dict), ABBYY Lingvo (.dsl тексты и аудиоматериалы .lsa/.dat, .lsd - только в Android), XDXF, AARD, SLOB, ZIM, MDX/MDD, EPWING;
  • Система морфологии, которая находит основы слов при поиске, улучшая его результаты, а также дает рекомендации по правильному написанию слов. Используются обычные словари Hunspell/Myspell;
  • Поддержка индексации звуковых файлов в директориях, формируя из них словари аудио-произношений;
  • Поддержка отправки запросов в Wikipedia, Wiktionary и другие MediaWiki сайты;
  • Режим работы в роли глобальной для всего десктопа всплывающей подсказки, позволяющий выводить информацию для выделенного или помещенного в буфер обмена слова из любого текста внешней программы;
  • Для загрузки доступна версия, имеющая в комплекте набор англо-русско-английских словарей, словарей морфологии и примеры произношения слов на английском языке.  
     
    Программа позиционируется как функциональная замена StarDict, поддерживающая большее количество форматов файлов и более качественное их отображение. Программа умышленно не вводит собственного формата файлов, ставя вместо этого задачу наиболее полно поддержать все популярные существующие.
     
    Официальные Early Access билды для Windоws :: для MacOSX :: для Linux.
    Официальные Development билды для Windоws.
    Официальный форум поддержки GoldenDict.
    Официальный баг-трэкер.
     
    Параллельные топики:
    GoldenDict - New Level - Разработка новых форматов словарей для GD: DSLGD, HTMLGD; подключение речевых движков; режим закладок; варианты полнотекстового поиска.
     
    Как сжимать словари в формат .dz для использования в GoldenDict :: DictZip 1.12.1 (latest) :: Оболочка DictUI
     
    Ссылки на готовые сборки
     
    Ссылки на словари для GoldenDict

  • Всего записей: 38829 | Зарегистр. 26-02-2002 | Отправлено: 11:50 23-02-2017 | Исправлено: yozhic, 22:10 16-03-2024
    ramanuki



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Abs62
    Уже высказывалась мысль о реализации панели с группами словарей.  
     
    У нее еще был бы такой плюс, как возможность комбинировать группы словарей, например, включить одновременное отображение словарей групп En-Ru, Ru-En и Ru-Ru, что невозможно или затруднительно сделать сейчас.
     
     
     

    Всего записей: 805 | Зарегистр. 07-08-2013 | Отправлено: 13:34 27-03-2017
    Abs62



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ramanuki
    Хлопотное это дело. Может быть когда-нибудь...

    ----------
    0 программистов ругал сердитый шеф
    Потом уволил одного, и стало их FF

    Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 14:50 27-03-2017
    andreyefgs



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Реализовано через QWebSecurityOrigin::addAccessWhitelistEntry(). При подгрузке ресурсов из сети домен ресурса просто добавляется в белый список для запрашивающего. Обратное не реализовано, то бишь доступ из фрейма ко всей странице GD по-прежнему блокируется. Потому и "Partially workaround".
    А на github сейчас залью.
     

     
    В порядке эксплуатации новых возможностей
     
    Удалось подключить онлайн-словарь к GD у которого словарные данные выводятся скриптами после загрузки страницы.
     
    Статья из словаря:
    http://lexin.nada.kth.se/lexin/#searchinfo=both,swe_swe,liten;
     
    Если посмотреть код страницы по ссылке выше в браузере (CTRL-U), то можно увидеть, что она пустая.
    Качать ее curl-ом или XMLHttpRequest смысла нет.
     
    МЕТОД:
    1)Динамически создаётся скрытый iframe в который грузится статья
    2)Потом, когда выстреливает onload (iframe-а) начинается прощупывание содержания iframe-а на предмет готовности контента.
    Сразу после onload это сделать оказывается невозможно, у меня  300 миллисекунд обычно хватает.
    Проверка через каждые 300 мс, до 3000 (максимум)
    3)Если контент готов, то он забирается, парсируется и выводится в очищенном, подготовленном виде.
     
    Код веб-страницы: Lexin
     
       
     
     

    Всего записей: 1533 | Зарегистр. 16-10-2005 | Отправлено: 15:57 27-03-2017 | Исправлено: andreyefgs, 16:00 27-03-2017
    Barabashka

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mvlog
    andreyefgs
    Спасибо за ответы. Для меня этого достаточно.

    Всего записей: 746 | Зарегистр. 25-03-2002 | Отправлено: 16:39 27-03-2017
    Barabashka

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mvlog
    Отдельное спасибо за сборку словарей - это мегакруть!
    Только есть вопрос, Вы пишете: "2. Лучший формат - dsl", а автор сборки словарей предлагает не использовать dsl-формат. У него написано:
    4. Для добавления словарей в словарную оболочку Lingvo - архив DSL.7z.
    7. Для добавления словарей в словарную оболочку GoldenDict - архив WORKING.7z.
    Почему автор сборки не предлагает качать DSL?

    Всего записей: 746 | Зарегистр. 25-03-2002 | Отправлено: 20:15 27-03-2017
    mvlog



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Barabashka Об этом лучше спросить автора. Я лично считаю dsl лучшим из-за совместимости с др.оболочками и лёгкости редактирования (я все словари редактирую под свои вкусы).

    Всего записей: 184 | Зарегистр. 08-05-2014 | Отправлено: 22:29 27-03-2017
    andreyefgs



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Abs62
    Такой вопросик возник по поводу использования внешних программ:
    Замерзает ли GD ожидая ответа от запущенной программы,
     т.е. прекращается всякая деятельность (статьи не выводятся и т. д.)
     или может быть это отдельным потоком делается и работа оболочки не блокируется?

    Всего записей: 1533 | Зарегистр. 16-10-2005 | Отправлено: 08:57 28-03-2017
    Abs62



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    andreyefgs
    Не замерзает и не блокируется. Но вот панель "Найдено в словарях" будет ждать, пока не отработают все словари группы.

    ----------
    0 программистов ругал сердитый шеф
    Потом уволил одного, и стало их FF

    Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 09:16 28-03-2017
    ramanuki



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Abs62
     
     
    Есть строптивые словари (напр., BGL), которые при автосортировке не хотят автоматически становиться на свою полку (группу) и определяются неверно. Судя по месиву в коде файла BGL, там поправить язык невозможно. Толку от добавления языка в название файла нет (так как, наверное, приоритет ниже).
     
    Остается одна надежда - если вы добавите в конец цепочки средств определения языка поиск буквенных сокращений еще и в названии папок пути к словарю. И, если и в названии файла словаря + в названии какой-либо папки из пути к словарю встречается какое-то одно и то же буквенное сокращенное обозначение языка, то оно будет иметь преимущество над встроенным в словаре языком.
     
    Это также поможет при автосортировке по группам не только исправить ошибку в отнесении к языку, но и исполнить желание пользователя переместить словарь в иную группу нежели та, что определена в словаре.
     
    Например, если в пути
     
    C:\Dictionaries\En-Ru\Special Dictionaries\
     
    встречается En-Ru, а также и в названии словаря: Acronyms En-Ru.BGL,
     
    то словарь при автосортировке будет отнесен в группу En-Ru, а не в Ru-En, как это прописано внутри словаря.

    Всего записей: 805 | Зарегистр. 07-08-2013 | Отправлено: 12:12 28-03-2017 | Исправлено: ramanuki, 12:15 28-03-2017
    Abs62



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ramanuki
    Не думаю, что стоит менять алгоритмы определения языковой пары из-за единичных кривых словарей, которые можно и вручную в нужную группу перетащить. Или переделать bgl, инструменты известны.

    ----------
    0 программистов ругал сердитый шеф
    Потом уволил одного, и стало их FF

    Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 12:32 28-03-2017
    ramanuki



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Abs62
    Хотел бы узнать у вас: слова длиной 3 и меньше вообще не включаются в файл FTS при индексации или только просто не подлежат полнотекстовому поиску?

    Всего записей: 805 | Зарегистр. 07-08-2013 | Отправлено: 12:24 29-03-2017
    Abs62



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ramanuki
    Не включаются в индекс. При поиске в тексте статьи они вполне себе учитываются.

    ----------
    0 программистов ругал сердитый шеф
    Потом уволил одного, и стало их FF

    Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 13:04 29-03-2017
    ramanuki



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Abs62
    Я правильно понял, что если я хочу исключить из индекса GD какие-то слова, то смысл обрамлять их тегом [!trs] есть только в том случае, если их длина больше трех символов?

    Всего записей: 805 | Зарегистр. 07-08-2013 | Отправлено: 13:47 29-03-2017
    Abs62



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ramanuki
    На сегодняшний момент - да. Надеюсь, что менять тут что-то и не потребуется.

    ----------
    0 программистов ругал сердитый шеф
    Потом уволил одного, и стало их FF

    Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 13:56 29-03-2017
    andreyefgs



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Abs62
     
    Для программ очень не хватает такой фичи:
    file:///path/to/external_prog.ext %GDWORD% %GROUP%
     
    Т.е. ещё одного аргумента, который содержит имя текущей группы
    Я предлагаю %GROUP%
     
    Зачем это надо:
    Дело в  том, что это наверное единственный способ узнать программе узнать c какого языка надо переводить или в каком языковом сегменте надо искать и т. д.
    Локальные странички, которые имеют доступ к DOM могут вытащить эту информацию из имени флажка группы
    Внешние проги не могут.
    Поэтому приходится прописывать язык в коде в виде константы и делать клоны прогамм для разных языков.
    К примеру:
    translate_en-ru.exe
    translate_fr-en.exe
    И. т. д.
     
    В моём случае это будет 12 клонов с соответствующим последствиями для словарной полки.
    А можно было бы, хотелось бы:
    translate.exe %GDWORD% %GROUP%

    Всего записей: 1533 | Зарегистр. 16-10-2005 | Отправлено: 14:58 29-03-2017
    Abs62



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    andreyefgs
    Во-первых, далеко не факт, что имя группы всегда содержит нужную информацию или флажок. А во-вторых, как по мне, вполне резонно иметь отдельный словарь для каждого языка, который можно сунуть в соответствующую группу.
    И зачем вам клоны программ? Делайте одну и передавайте ей необходимую информацию через командную строку, вам же всё одно её в настройках GD прописывать. Ну, будет у вас не единственный словарь там, а несколько. Зато с гарантией, что программа разберётся, что ей в каждом конкретном случае делать надо.

    ----------
    0 программистов ругал сердитый шеф
    Потом уволил одного, и стало их FF

    Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 15:12 29-03-2017
    andreyefgs



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Abs62
     

    Цитата:
    Во-первых, далеко не факт, что имя группы всегда содержит нужную информацию.

     
    Гарантировать, то что внешняя программа получит нужную инфу можно двумя способами:
     
    1)Для названий групп брать либо языковые коды, либо полные названия языков.
    (Я так и сделал, создал группы "English", "French"... и разбросал по ним словари.)
    В группы которые, которые имеют невалидные названия не надо помещать программу, которая берёт информацию о source language из названия группы.
     
    Этот вариант мне теперь кажется не самым лучшим, ибо он ограничивает свободу в выборе названий.
     


     
    2)Второй, более совершенный вариант:

    Код:
    if (process.argv.length === 4)
    {
     
        let GroupLng = {
            "All":"ru",
            "Duden_Dics":"de",
            "Oxford_and_Longmans":"en",
            "Russian1":"ru"
        }
     
        
        let word = process.argv[2];
        let group = process.argv[3];
     
        if (GroupLng[group]!== undefined)
        {
            let lng = GroupLng[group];
     
            console.log("All ok");
     
        }  
     
    }
     

     
    Если используется скрипт, то пользователь должен открыть его в редакторе и отредактировать в нем специальный ассоциативный массив.
    Если ему конечно нужна эта программа.
     
    А изначально скрипт будет содержать просто как бы шаблон:
    let GroupLng = {
        "Group_name1":"source_language",
        "Group_name2":"source_language",
        "Group_name3":"source_language",
        "Group_name4":"source_language"
    }
     
    Если второй аргумент не будет содержать подходящий ключ,
     то ничего страшного не случится - программа проверит и закончит работу.
     
    Для бинарных, т.е. скомпилированных программ можно использовать ini-файлы и т. п. вещи, но принцип тот же.
     
     

    Цитата:
    И зачем вам клоны программ?

     
    Клоны пожалуй и не нужны.
    Я проверил можно оказывется и так делать:
    node /home/path/to/translate.js "en" %GDWORD%
    node /home/path/to/translate.js "de" %GDWORD%
    ...
    ...
     
    Программу клонировать не надо, но тем не менее остаётся такой минус:
    Если я добавлю отдельную строчку для каждого своего языка (я владею в разной степени 12-ю), то будет замусорена полка группы All.
    А если такого рода универсальных прог будет несколько, то будет совсем плохо, несколько десятков иконок.
     
    ЗЫ
    Ладно, я свои аргументы исчерпал наверное.
    В общем, на ваше усмотрение
     
    А я пока попробую придумать как передавать инфу о группе каким-нибудь другим способом, без изменений в GD

    Всего записей: 1533 | Зарегистр. 16-10-2005 | Отправлено: 17:12 29-03-2017 | Исправлено: andreyefgs, 18:04 29-03-2017
    Abs62



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    andreyefgs

    Цитата:
    Если я добавлю отдельную строчку для каждого своего языка (я владею в разной степени 12-ю), то будет замусорена полка группы All.

    Будет. А вы часто ей пользуетесь? При большом количестве словарей она в любом случае будет забита.
    В общем, как мне кажется, не слишком востребованная фича.
     
    Кстати о птичках. Загляните в обсуждение этого реквеста. Сдаётся мне, высказываемые там идеи напрямую пересекаются с тем, что вы делаете.

    ----------
    0 программистов ругал сердитый шеф
    Потом уволил одного, и стало их FF

    Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 17:54 29-03-2017
    andreyefgs



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Кстати о птичках. Загляните в обсуждение этого реквеста. Сдаётся мне, высказываемые там идеи напрямую пересекаются с тем, что вы делаете.

    Спасибо, почитал, приятно встретить единомышленников

    Всего записей: 1533 | Зарегистр. 16-10-2005 | Отправлено: 20:12 29-03-2017
    andreyefgs



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Написал первую полноценную внешнюю прогу для GD (php скрипт)
    Вот чем она занимается:
    Скриншот1
     
    Для сравнения вот что bing.com даёт:
    Скриншот2
     
    bing пока не ровня.
     
    Хорошая фича.
    Быстро, надёжно. И хорошо, что если программа ничего не возвращает, то и в окне GD ничего не выводится, не надо вручную прятать название как в случае с использованием локальной веб-страницы.
    Для полного счастья не хватает только %GROUP%, но ладно приспособимся как-нибудь  

    Всего записей: 1533 | Зарегистр. 16-10-2005 | Отправлено: 23:48 29-03-2017 | Исправлено: andreyefgs, 23:54 29-03-2017
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175

    Компьютерный форум Ru.Board » Компьютеры » Программы » GoldenDict (часть 2)


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru