Метки

, , , ,

Рано или поздно сидящего в линуксе человека заедает тоска по словарям уровня/объема Lingvo. Однако в эмуляторах эта прога работает жутко коряво, поэтому сейчас займемся ковертацией её словарей в формат, понимаемый StarDict’ом.

Прежде всего нужно немного хакнуть поставляемый вместе с Lingvo Dslcomp.exe. Для этого потребуется любой hex-редактор. Байты, которые нужно изменять для версий Lingvo 11 и 12 указаны соответственно в источниках знаний [1] и [3] ниже. После хака в окне Dsl compiler’а появляется недокументированная возможность конвертации словарей из формата *.lsd в кошерный *.dsl, что и нужно сделать для всех желаемых словарей.

Далее нужно воспользоваться еще одним конвертером, исходники которого можно взять отсюда в разделе Converter: many to many. Однако разрабов (или меня) чего-то проглючило и без бубна последняя стабильная на момент написания сих слов версия 0.3  не соберется. Необходимо добавить после пары строк, начинающихся с #ifndef …, #define с новой строки в файлы:

  • #include <memory> в src/parser.hpp
  • #include <string> в src/langs_2to3.hpp
  • #include <string.h> в src/normalize_tags.hpp

После этого ./configure && make && sudo make install сработало без проблем.

Далее makedict -i dsl -o stardict DictName.dsl, после чего в каталоге со словарем появится папка, содержащая три файла с расширениями *.dict, *.ifo и *.idx. Папку можно поместить в /usr/share/stardict/dic или в каталог своего пользователя ~/.stardict/dic, после чего перезапустить StarDict. Всё 🙂

Источники знаний в порядке обнаружения авторам которых большое спасибо:

  1. http://jack.kiev.ua/content/view/666/5/lang,ru/
  2. http://sovety.blogspot.com/2008/02/lingvo-11-linux.html
  3. http://brutalblog.wordpress.com/2007/12/20/1/
  4. http://xdxf.revdanica.com/forum/viewtopic.php?t=222&sid=15b306a156b5d60fa24ccffcd218ad76
Реклама