Словари для переводчика Android ColorDict


Warning: Trying to access array offset on value of type bool in /var/www/sandalov.org/blog/wp-content/themes/mantra/includes/theme-loop.php on line 249

Статья рассказывает, как сделать словари для переводчика Android ColorDict.

ColorDict

ColorDict

В целом, необходимо:

  1. Получить словарь в декомпилированном виде (DSL)
  2. Преобразовать DSL в формат Stardict
  3. Положить его на SD-карту в папку /sdcard/dictdata/

DSL словарь можно получить, скачав его прямо в таком виде, либо конвертировать из LSD. Под Windows можно воспользоваться программой DslComp (уже пропатчена как надо); под Linux существует makedict в составе проекта XDXF. (Идём на сайт XDXF – XML Dictionary Exchange Format, скачиваем makedict-***.tar.bz2, распаковываем, configure, make и в подкаталоге src получаем исполняемый файл makedict. Предварительно потребуется установить компилятор gcc-c++ со всеми необходимыми зависимостями). В репозиториях Ubuntu makedict найти не удалось, исходники компилятся с кучей ошибок. Намучавшись с ошибками скачал нашёл пакет в RPM и с помощью alien сконвертировал его в deb. Запускаем makedict:

Windows: Запускаем DslComp, выбираем LSD, и ставим переключатель в “DSL (Исходные тексты)”.

Linux:

makedict -i dsl -o stardict *.dsl
for f in ./*/*; do mv $f ./; done

На выходе получаем три файла:
dictionary_name.dict – собственно, словарь.
dictionary_name.idx – индекс.
dictionary_name.ifo – описание.

Словарь можно сжать утилитой dictzip, чтобы уменьшить размер словаря. В результате получим файл с расширением .dict.dz.
Индекс тоже можно сжать обычным gzip’ом.

В просторах Инета можно найти и такой bash-script:

#!/bin/bash
PATH_DSL=$1
PATH_CUR=`pwd`
mkdir $PATH_CUR/stardict
mkdir -p $PATH_CUR/tmp/tmp
for i in $(ls $PATH_DSL | grep dsl$); do \
cp $1/*.ann ./tmp && \
iconv -f utf16 -t utf8 $PATH_DSL/$i | sed -r 's/\[s\].+\.wav\[\/s\]//' >$PATH_CUR/tmp/$i.utf8 && \
iconv -f utf8 -t utf16 $PATH_CUR/tmp/$i.utf8 > $PATH_CUR/tmp/$i && \
rm -f $PATH_CUR/tmp/$i.utf8 && \
makedict -i dsl -o stardict $PATH_CUR/tmp/$i -d ./tmp/tmp; done
find $PATH_CUR/tmp/tmp -iname "*.*" \! -type d -exec mv \{\} $PATH_CUR/stardict/ \;
for i in $(ls $PATH_CUR/stardict | grep dict$); do dictzip $PATH_CUR/stardict/$i; done
for i in $(ls $PATH_CUR/stardict | grep idx$); do gzip -9  $PATH_CUR/stardict/$i; done
rm -R $PATH_CUR/tmp
echo "Done"

Если у нас файл от лингво, то срезаем начальные строки служебной инфы. Должно начинаться с тела самого словаря.

Выкладываю сюда Русско-Финские (FiRuFi) словари для ColorDict преобразованные из DSL в формат StarDict:
Маленький, но хороший – тут [878K]
Большой, но корявый – тут [21M]