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.
В целом, необходимо:
- Получить словарь в декомпилированном виде (DSL)
- Преобразовать DSL в формат Stardict
- Положить его на 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]