Тысячи словарей и одна GoldenDict ; x86+x64

Ответить на тему
 
Автор Сообщение

CAEman ®

Стаж: 1 год 1 месяц

Сообщений: 5

Создавать темы 09-Июл-2016 14:54

[Цитировать]


Название: Тысячи словарей и одна GoldenDict
Стадия разработки : Release
Год/Дата Выпуска: 2013
Разработчик: Константин Исаков
Сайт разработчика: https://github.com/goldendict/goldendict
Разрядность: 32bit+64bit
Язык интерфейса: Английский + Русский
Таблэтка: Не требуется
Системные требования: Если подключать словари согласно приведённой инструкции (т.е. без индексации*), то особых требований нет.
Описание:
GoldenDict- наиболее популярная на сегодняшний день свободнораспространяемая (GNU GPL), многоплатформенная, входящая в большинство современных дистрибутивов ОС для настольных компьютеров словарная графическая оболочка (приложение для работы со словарями): последнюю master версию в виде файлов исходного кода можно скачать по указанному ранее адресу.
Раздача содержит наборы En-Ru, En-En, Ru-En, Ru-Ru словарей различных форматов (~2 тыс. шт.), используемых в GoldenDict (папка DICTIONs).
Раздача НЕ содержит аудио, видео и т.п. файлы! Только файлы словарей и используемых в них картинок.
Права на распространение и использование словарей - см. описания словарей.
Желающие добавить имеющиеся у них и отсутствующие в раздаче словари (поддерживаемых GoldenDict форматов) могут обращаться ко мне в личку (в частности, после декомпиляции в DSL формат отсутствующих в раздаче, но имеющихся на этих ресурсах словарей)
Раздача также содержит конвертеры для различных словарных форматов (папка CONVs) и входящую в практически все современные дистрибутивы ОС для настольных компьютеров словарную оболочку StarDict (папка PROGRAMS вместе с GoldenDict) - GNU GPL.
Более подробно - см. файл "Описание, скачиваемое предварительно для ознакомления".

ДЛЯ ЧЕГО ЧТО СКАЧИВАТЬ?

1. Для конвертации в различные форматы при создании словарей - папку CONVs с конвертирующими приложениями.
2. Для обновления/установки словарной оболочки StarDict - архив stardict.7z.
(установка и запуск по аналогии с п. 0 ИНСТРУКЦИИ, только исполняемый файл - в подпапке /dict/src, а компиляция - см. файл INSTALL)
3. Для обновления/установки словарной оболочки GoldenDict - архив goldendict.7z.
4. Для добавления словарей в словарную оболочку Lingvo - архив DSL.7z.
5. Для добавления словарей в словарную оболочку StarDict (+ старые Wiki словари) - архив IFO.7z (+ IFO_WIKI.7z, распаковываемый после в папку IFO).
(при нехватке места или многопользовательском режиме см. по аналогии с пп. 1 и 2 ИНСТРУКЦИИ, только ссылка ~/.stardict/dic).
6. Для добавления словарей в поддерживающие XDXF формат словарные оболочки - архив XDXF.7z.
7. Для добавления словарей в словарную оболочку GoldenDict - архив WORKING.7z.
8. Для добавления Wiki словарей в словарную оболочку GoldenDict - архивы WIKI.7z (только при использовании новых версий оболочки с поддержкой ZIM и SLOB словарей) и AAR.7z.
9. Для использования раздаваемого рабочего набора словарей (+ автономных Wiki словарей) БЕЗ ИНДЕКСАЦИИ* (см. ИНСТРУКЦИЮ) -
архив goldendict.7z, архив WORKING.7z (+ WIKI.7z и/или AAR.7z - см. п.8).
spoiler="ИНСТРУКЦИЯ для автоподключения раздаваемого рабочего набора словарей (БЕЗ ИНДЕКСАЦИИ* в случае использования версий GoldenDict из раздачи)."]
0. Выгружаем (если запущена) старую версию GoldenDict и пробуем установить скомпилированную версию (имеющую намного больший функционал, чем устаревшая портативная), для чего распаковываем архив goldendict.7z, пробуем запустить файл goldendict из папки goldendict-master. Если приложение запускается, то выгружаем его и (если пароль суперпользователя известен) скидываем указанную папку в /tmp/DICTIONS и в командной строке из папки с данной версией приложения вводим su -c 'make install' (с последующим вводом пароля суперпользователя root). Иначе пробуем скомпилировать из исходников (по указанной ранее причине приложение имеет не устраняемые разработчиками недоработки, в т.ч. и компилирования - см. офиц. форум), для чего в командной строке из папки goldendict-master вводим:
qmake "CONFIG+=zim_support" "CONFIG+=no_epwing_support" "DISABLE_INTERNAL_PLAYER=1" "PREFIX=/usr"
make clean && make
см. выше (без скидывания в /tmp/DICTIONS).
В случае удачи в распакованной папке .goldendict переименовываем с заменой файл config.new в config, в противном случае используем старую портативную версию программы
(если в системе нет более новой - тогда тоже переименовываем).
1. Распаковать из архива WORKING.7z папку WORKING в каталог на разделе (для более быстрой работы оболочки - наиболее скоростном) с достаточным свободным пространством (в случае же использования данного набора словарей несколькими пользователями - на общедоступный ресурс) и в случае использования не портативной, а новой версии GoldenDict удалить подпапку index, а подпапку index.new переименовать в index.
2. В директории /tmp создать на папку WORKING одноимённую последней символическую ссылку (например, в современной ОС в файловом менеджере перетащив мышкой указанную папку из своего расположения в /tmp и выбрав в появившемся контекстном меню "Создать ссылку", а в старых ОС - MidNightCommander / команда запуска mc - открыв в одной панели /tmp, а в другой выбрав указанную папку и зайдя в меню Файл/Символическая ссылка).
3. Папку .goldendict скидывать в свою домашнюю папку (~) каждому пользователю (с перезаписью или с предварительным переименованием старой в случае использования GoldenDict ранее).
Для добавления БЕЗ ИНДЕКСАЦИИ* имеющихся в раздаче Wiki словарей:
4. ДО ПЕРВОГО ЗАПУСКА GoldenDict распаковать в папку WORKING папки со словарями из архива WIKI.7z (ТОЛЬКО в случае использования новой версии) и из архива AAR.7z.
5. Запустить GoldenDict.* К сожалению, я знаю, как избежать индексации, только имея права суперпользователя (root).
Для этого
1) из-под него нужно сделать одно из следующего:
а) в случае, если есть достаточно свободного места в корневом разделе, то создать в нём вложенные друг в друга папки (с учётом регистра): /WORKING/DICTIONs
б) в противном случае создать часть указанного пути на корневом разделе, а часть на НЕстандартном разделе (например, НЕ /home) с достаточным свободным местом
и монтировать последний на созданной в корневом разделе части пути (например, создать папку WORKING на корневом разделе /, а на нестандартном - папку DICTIONs и при помощи какой-либо утилиты работы с дисками, т.е. в конечном счёте в файле /etc/fstab указать в качестве точки монтирования указанного раздела /WORKING)
2) распаковать содержимое WORKING.7z в указанную папку DICTIONs.
ПРИМЕЧАНИЕ. Во время индексирования таких больших словарей, как Wikipedia, процесс goldendict может использовать >7ГБ памяти, а полнотекстовая индексация - >9 ГБ памяти, идти 2 сут, считывая байтов на 130 ГБ и символов на 2 ТБ (без возможности выключения комп-а, и нет перспектив исправления этого по указанной ранее причине).
*********
Для подключения ~10^3 словарей и более возможно потребуется изменение значения maximum file descriptor number that can be opened by a process (см. подпапку etc в PROGRAMS).
Имея права суперпользователя (root), это можно сделать путём редактирования значений параметров:
1) в старых системах - HARDFDLIMITS и SOFTFDLIMITS в файле /etc/sysconfig/ulimit (а, например, в OpenSUSE это можно сделать также в Центре управления Yast2: Система/"Редактор /etc/sysconfig": System/Limits), где можно установить указанные значения равными 4096, 8192, 16384, 32768, 65536, ..., при этом значение SOFTFDLIMITS не должно превышать таковое для HARDFDLIMITS, а в файле /etc/initscript присваивание значения HARDFDLIMITS обязательно ДОЛЖНО ВЕЗДЕ ПРЕДШЕСТВОВАТЬ таковому для SOFTFDLIMITS, например:
test -z "$HARGS" || ulimit $HARGS
test -z "$SARGS" || ulimit $SARGS
но не наоборот (тогда необходимо поменять их местами)!
2) в новых системах - DefaultLimitNOFILE в файле /etc/systemd/system.conf (можно установить и =infinity - будут тогда равными 65536 и ulimit -Hn, и ulimit -Sn)
Если же прав суперпользователя нет
, а значение ulimit -Hn больше ulimit -Sn, то программу можно запускать через файл скрипта (с установленными правами на запуск, находящийся на поддерживающей это файловой системе, т.е. форматов Ext, Reiser, X и т.п.) следующего содержания (введя требуемый путь на указанном ниже в виде пустой строки месте):
#! /bin/sh
#
#
ulimit -Sn 8192
#для проверки применения изменения при запуске в консольном режиме:
ulimit -Sn
#полный путь к исполняемому файлу программы для работы со словарями:
где при необходимости изменяем 8192, чтобы было не больше значения ulimit -Hn (в данном примере обеспечивается возможность подключения, например, > 1 тыс. stardict словарей).
Доп. информация: Основные преимущества и возможности GoldenDict.
0. Открытость приложения, что может обеспечить привлечение заинтересовавшихся разработчиков для устранения имеющихся недостатков.
1. Удобная работа со словарями большинства открытых форматов.
2. Шаблонный поиск заголовков, полнотекстовые запросы, в т. ч. при помощи шаблонов и регулярных выражений.
3. Работа с заголовками словарей.
4. Работа с различными источниками словарей.
...
Основным недостатком является оставление открытой части проекта разработчиком в 2013 г. (см. скриншоты со стартовым окном оболочки), наверное, по причине того, что десктопная часть (под GNU/Linux и др.) стала просто тестовой бета-версией для коммерческого варианта под Android/Linux. В результате с того времени остались следующие отслеживаемые баги и недоработки.
1. Отсоединённая панель Навигация после повторного запуска оболочки открывается на всех рабочих столах поверх всех окон (при этом все окна приложения не сворачиваются в лоток вместе с главным окном при его закрытии, правда, в отличие от панели сворачиваются в панель задач вместе с программой), и при этом нет возможности встроить панель на пустое место справа от меню.
2. Не работает автозапуск программы (так как ссылка для автозагрузки создаётся не в ~/.config/autostart, а в ~/.kde/Autostart, использующейся версией рабочего окружения, которая перестала входить в дистрибутивы ОС примерно во времена прекращения разработки оболочки).
В СЛУЧАЕ ИСПОЛЬЗОВАНИЯ СКОМПИЛИРОВАННОЙ ИЗ РАЗДАЧИ ВЕРСИИ ДАННОГО БАГА НЕ БУДЕТ,
так как исправлен исходный код в файле mainwindow.cc на следующий:
void MainWindow::setAutostart(bool autostart)
{
#ifdef Q_OS_WIN32
    QSettings reg("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run",
                  QSettings::NativeFormat);
    if (autostart) {
        QString app_fname = QString("\"%1\"").arg( QCoreApplication::applicationFilePath() );
        app_fname.replace("/", "\\");
        reg.setValue(QCoreApplication::applicationName(), app_fname);
    }
    else {
        reg.remove(QCoreApplication::applicationName());
    }
    reg.sync();
#else
    // this is for Linux
    QString app_fname = QFileInfo(QCoreApplication::applicationFilePath()).baseName();
    QString lnk(QDir::homePath()+"/.config/autostart/"+"goldendict.desktop");
    if (autostart) {
        QFile f("/usr/share/applications/goldendict.desktop");
        f.link(lnk);
    } else {
        QFile::remove(lnk);
    }
#endif
}
3. При сохранении файлов из оболочки (например, нажатии кнопки "Экспорт" в окне Заголовков словаря или выбора "Сохранить изображение..." контекстного меню рисунка в статье словаря) оболочка "вылетает" (при подключённом большом количестве словарей) с ошибкой (выдаваемой на консоль в случае запуска из неё оболочки) "*** buffer overflow detected ***: /usr/bin/goldendict terminated", если не нажать предварительно кнопку Пересканировать во вкладке Источники / Файлы окна Словари (без изменения словарей).
В СЛУЧАЕ ИСПОЛЬЗОВАНИЯ ПОРТАТИВНОЙ ВЕРСИИ ДАННОГО БАГА НЕ БУДЕТ.
4. После нажатия кнопки Пересканировать во вкладке Источники / Файлы окна Словари (даже без изменения словарей), если выбран поиск в группе "Все", то число открытых оболочкой файлов вырастает на число, равное 2-х кратному количеству подключённых словарей, причём максимальному количеству, т.е. первоначальному количеству - при его уменьшении или конечному - в случае увеличения, что может привести к "вылету" оболочки, если у пользователя установлено недостаточно большое значение параметра maximum file descriptor number that can be opened by a process.
5. После прерывания процесса полнотекстового индексирования словаря из-за завершения работы приложения при возобновлении процесса индексация словаря начинается заново, а также при неизменности указанного в конфигурации пути к словарям, в т.ч. сформированного при помощи символических ссылок, происходит переиндексация данных словарей в случае изменения "реального" пути монтирования (в отличии, например, от словарной оболочки StarDict).
6. Разные шаблоны (например, запросы "абв" и "абв*") в поисках заголовков не различаются в отличие от полнотекстового поиска.
7. Функция поиска синонимов неотключаема.
8. Функция выделения слова одиночным щелчком не сохраняет возможность выделения части слова.
9. К XDXF словарям не подгружаются dict.bmp иконки.
В СЛУЧАЕ ИСПОЛЬЗОВАНИЯ СКОМПИЛИРОВАННОЙ ИЗ РАЗДАЧИ ВЕРСИИ ДАННОЙ НЕДОРАБОТКИ НЕ БУДЕТ,
так как исправлен исходный код в файле xdxf.cc на следующий:
void XdxfDictionary::loadIcon() throw()
{
  if ( dictionaryIconLoaded )
    return;
  QString fileName =
    QDir::fromNativeSeparators( FsEncoding::decode( getDictionaryFilenames()[ 0 ].c_str() ) );
  QFileInfo baseInfo( fileName );
  fileName = baseInfo.absoluteDir().absoluteFilePath( "icon32.png" );
  QFileInfo info( fileName );
  if( !info.isFile() )
  {
      fileName = baseInfo.absoluteDir().absoluteFilePath( "icon16.png" );
      info = QFileInfo( fileName );
  }
  if( !info.isFile() )
  {
      fileName = baseInfo.absoluteDir().absoluteFilePath( "dict.bmp" );
      info = QFileInfo( fileName );
  }
  if ( info.isFile() )
    loadIconFromFile( fileName, true );
  if ( dictionaryIcon.isNull() )
  {
    // Load failed -- use default icons
    dictionaryIcon = QIcon(":/icons/icon32_xdxf.png");
    dictionaryNativeIcon = QIcon(":/icons/icon32_xdxf.png");
  }
  dictionaryIconLoaded = true;
}
10. В окне Порядка словарей в первой строке контекстного меню находятся не "Заголовки словаря", а автоматическая сортировка словарей, которая и происходит при нечаянном смещении мыши во время щелчка правой кнопкой, и результаты которой можно не заметить (особенно при включённой фильтрации) и нажать кнопку "ОК", после чего для восстановления нужного пользователю порядка словарей при отсутствии резервной копии файла конфигурации необходима ручная пересортировка всех подключённых словарей!
В СЛУЧАЕ ИСПОЛЬЗОВАНИЯ СКОМПИЛИРОВАННОЙ ИЗ РАЗДАЧИ ВЕРСИИ ДАННОЙ НЕДОРАБОТКИ НЕ БУДЕТ,
так как исправлен исходный код в файле orderandprops.cc на следующий:
void OrderAndProps::contextMenuRequested( const QPoint & pos )
{
  QMenu menu( this );
   QModelIndex idx = ui.searchLine->mapToSource( ui.dictionaryOrder->indexAt( pos ) );
sptr< Dictionary::Class > dict;
   if( idx.isValid() && (unsigned)idx.row() < ui.dictionaryOrder->getCurrentDictionaries().size() )
    dict = ui.dictionaryOrder->getCurrentDictionaries()[ idx.row() ];
  QAction * showHeadwordsAction = NULL;
  if ( dict && dict->getWordCount() > 0 )
  {
    showHeadwordsAction = new QAction( tr( "Dictionary headwords" ), &menu );
    menu.addAction( showHeadwordsAction );
  }
QAction * sortNameAction = new QAction( tr( "Sort by name" ), &menu );
  menu.addAction( sortNameAction );
  QAction * sortLangAction = new QAction( tr( "Sort by languages" ), &menu );
  menu.addAction( sortLangAction );
  QAction * result = menu.exec( ui.dictionaryOrder->mapToGlobal( pos ) );
  if( result && result == showHeadwordsAction )
  {
    emit showDictionaryHeadwords( QString::fromUtf8( dict->getId().c_str() ) );
  }
  if( result == sortNameAction || result == sortLangAction )
  {
    vector< sptr< Dictionary::Class > > sortedDicts = ui.dictionaryOrder->getCurrentDictionaries();
    if( result == sortNameAction )
      sort( sortedDicts.begin(), sortedDicts.end(), dictNameLessThan );
    else
      sort( sortedDicts.begin(), sortedDicts.end(), dictLessThan );
    ui.dictionaryOrder->populate( sortedDicts );
  }
}
11. Некоторые недоработки интерфейса (В СЛУЧАЕ ИСПОЛЬЗОВАНИЯ СКОМПИЛИРОВАННОЙ ИЗ РАЗДАЧИ ВЕРСИИ БУДЕТ ПОЛНЫМ ОТОБРАЖЕНИЕ ЗАГОЛОВКА вкладки Панели поиска, а также Панели навигации по переводу, так как удалены в файле locale/ru_RU.ts из переводов соответствующих заголовков акселератор & или &)...
Приветствуются предложения по внесению исправлений в исходный код оболочки для устранения данных и др. недостатков. Все работающие исправления будут внесены в раздачу.
Скриншоты
Загрузка...


Последний раз редактировалось: CAEman (2016-08-27 15:16), всего редактировалось 3 раз(а)
[Профиль] [ЛС]

CAEman ®

Стаж: 1 год 1 месяц

Сообщений: 5

Создавать темы 09-Июл-2016 14:59 (спустя 5 минут)

[Цитировать]

Прошу сообщать, если что-то не будет получаться.
Заранее благодарю.
[Профиль] [ЛС]

CAEman ®

Стаж: 1 год 1 месяц

Сообщений: 5

Создавать темы 16-Июл-2016 12:45 (спустя 6 дней)

[Цитировать]

К сожалению, в отличии от StarDict в GoldenDict так просто исключить индексацию на данном этапе мне не представляется возможным. Поэтому изменил соответствующим образом описание (в т.ч. обновляю сейчас и файл описания). Также изменяю файлы конфигурации в папке .goldendict (так как папка AAR у меня была по символической ссылке) и архив WORKING.7z (где из папки с индексами для портативной версии удалил неиспользуемые последней файлы индексов для полнотекстового поиска).
Прошу подождать окончания обновления раздачи.
[Профиль] [ЛС]

CAEman ®

Стаж: 1 год 1 месяц

Сообщений: 5

Создавать темы 16-Июл-2016 17:45 (спустя 5 часов)

[Цитировать]

Если у кого-нибудь файлы не обновляются в раздаче, или обновляются не только указанные ранее файлы, то прошу сообщить об этом в ближайшие пару часов.
[Профиль] [ЛС]

CAEman ®

Стаж: 1 год 1 месяц

Сообщений: 5

Создавать темы 27-Авг-2016 12:28 (спустя 1 месяц 10 дней)

[Цитировать]

Обновил goldendict-master (при этом так как предполагается её частое обновление с изменением лишь отдельных файлов, то сделал её неархивированной, хотя там более тысячи файлов...) и поменял путь для подключения без индексации рабочего набора словарей на /WORKING/DICTIONs (т.е. обновил WORKING.7z, .goldendict и Описание, скачиваемое предварительно для ознакомления), а также заархивировал некоторые конвертеры (в папке CONVs).
[Профиль] [ЛС]
Показать сообщения:    
Ответить на тему

Текущее время: 21-Авг 19:51

Часовой пояс: UTC + 4



Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы