Dict Applications
Some tips about dictionary applications...
Infos
Sources of dictionaries
A good source of freeware Bilingual dictionaries based on French is FreeLang
But they work only under Windows.
Check e.g. on the French-English page, you'll find a link to a similar website based on English, same for Spanish.
- http://www.babylon.com/display.php?id=141&tree=5&level=2#1005
- http://xdxf.revdanica.com/down/
- http://stardict.sourceforge.net/Dictionaries_dictd-www.dict.org.php
- apt-get install babytrans-dic-engtofre
Others (to be checked)
Links for the relationship between languages and charsets
- esperanto: http://www.forst.tu-muenchen.de/EXT/AIS/scio/iso8859.html
- http://webkor.com/multilingual_domains.htm
Dictionaries programs under Linux
Dict & Freedict
dict: /usr/share/dictd
- apt-cache search dict-freedict
To use dictd I had to hack a bit in /etc/init.d/dictd:
OPTIONS="--locale fr_FR" start-stop-daemon --start --quiet -o -c dictd --exec $DAEMON -- $OPTIONS
Apparently dict & dictd don't support yet correctly UTF8
Stardict
Stardict (mirror here).
Stardict is an offline dictionary program running under Gnome, a Windows port exists as well.
Very good support of UTF-8, searches and on-the-fly scanning
- apt-get install stardict stardict-tools sdcv
Get some dicts at http://stardict.sourceforge.net/Dictionaries.php and move them to /usr/share/stardict/dic (most are already packaged for Debian, check first!)
For pronounciation database, you can take WyabdcRealPeopleTTS rpm on http://stardict.sourceforge.net/ and use alien.
Stardict needs esd daemon to run to play sounds.
Automatic American<>English<>Canadian "translators"
- VarCon
VarCon (Variant Conversion Info) contains tables to convert between American, British (both "ise" and "ize" spellings), and Canadian spellings and vocabulary as well as well as a table listing the equivalent forms of other variants. - Respell
A tool to convert English text from one spelling system to another. At present, there are spelling files for american, british, and canadian spellings.
Others
I used wordtrans but now I'm using Stardict
- apt-get install wordtrans-qt
Try maybe also "serpento"?
My own conversion scripts
dict(e.g. Freedict) to Stardict
Utility to convert installed dict (e.g. freedict) packages into stardict versions:
#!/bin/bash
# Converts dictd files to stardict files
# Usage: ./dict2stardict.sh dict1_basename dict2_basename2 ...
# Example: ./dict2stardict.sh freedict-hun-eng freedict-eng-hun
# Copyright Philippe Teuwen <phil à teuwen.org>
# License: GPLv3 or later
# Version 0.92
# Should we install dict files?
# Values are: local/deb/none
# local: install files in /usr/local/share
# deb: create a Debian package (to be installed)
# none: leave files here
INSTALL_STARDICT_DEFAULT=deb
INSTALL_STARDICT=${INSTALL_STARDICT:-$INSTALL_STARDICT_DEFAULT}
TEMP_DIR="./stardict-temp"
if [ "$*" == "" ];then
echo "Usage: $0 dict1_basename dict2_basename ..."
echo "Detected dict dictionaries:"
ls /usr/share/dictd/*.dict* 2>/dev/null|sed 's/^.*\///;s/\.dict.*$//'
ls ./*.dict* 2>/dev/null|sed 's/^.*\///;s/\.dict.*$//'
exit 1
fi
prefix="dictd_www.freedict.de_"
starprefix="dictd_"
###########################################################################
function dict_to_stardict {
local FILE="$1"
echo "Convert $FILE to stardict format..."
local word=`/usr/lib/stardict/dictd2dic $FILE 2>&1 | grep wordcount | cut -d " " -f 2`
if [ ! -e "$prefix$FILE.dict.dz" ]||[ ! -e "$prefix$FILE.idx.gz" ];then
echo "Error in conversion! ($word words)"
echo "Abort!"
exit 1
fi
mv "$prefix$FILE.dict.dz" "$starprefix$FILE.dict.dz"
mv "$prefix$FILE.idx.gz" "$starprefix$FILE.idx.gz"
echo " $word words"
local size=`zcat "$starprefix$FILE.idx.gz"| wc -c`
cat << EOF > "$starprefix$FILE.ifo"
StarDict's dict ifo file
version=2.4.2
wordcount=$word
date=$(date "+%Y.%m.%d")
author=$AUTHOR
email=$EMAIL
description=$DESCRIPTION
website=$WEBSITE
idxfilesize=$size
bookname=$starprefix$FILE
sametypesequence=m
EOF
}
###########################################################################
mkdir -p "$TEMP_DIR"
cd "$TEMP_DIR"
while [ "$1" != "" ]; do
FILE="$1"
if [ ! -e "../$FILE.dict.dz" ];then
if [ ! -e "/usr/share/dictd/$FILE.dict.dz" ];then
echo "File /usr/share/dictd/$FILE.dict.dz not found!"
echo "Did you install dict-$FILE package?"
exit 1
else
cp -L "/usr/share/dictd/$FILE.dict.dz" .
fi
else
cp "../$FILE.dict.dz" .
fi
if [ ! -e "../$FILE.index" ];then
if [ ! -e "/usr/share/dictd/$FILE.index" ];then
echo "File /usr/share/dictd/$FILE.index not found!"
echo "Did you install dict-$FILE package?"
exit 1
else
cp -L "/usr/share/dictd/$FILE.index" .
fi
else
cp "../$FILE.index" .
fi
echo "Uncompress..."
dictunzip "$FILE.dict.dz"
if [ ! -e "$FILE.dict" ];then
echo "Error uncompressing $FILE.dict.dz!"
echo "Abort!"
exit 1
fi
AUTHOR=
EMAIL=
DESCRIPTION="Converted from a dictd"
WEBSITE=
dict_to_stardict "$FILE"
rm "$FILE.dict" "$FILE.index"
case $INSTALL_STARDICT in
local)
echo "Install stardict files..."
sudo mkdir -p "/usr/local/share/stardict/dic/$starprefix$FILE-2.4.2"
sudo ln -s "/usr/local/share/stardict/dic/$starprefix$FILE-2.4.2" /usr/share/stardict/dic
for i in dict.dz idx.gz ifo ; do
sudo mv "$starprefix$FILE.$i" "/usr/local/share/stardict/dic/$starprefix$FILE-2.4.2"
done
;;
deb)
PKG="stardict-dictd-$(echo $FILE|unaccent UTF-8)"
PKG=${PKG//_/-}
VERSION="1.0-1"
ARCH="all"
FULLPKG="${PKG}_${VERSION}_${ARCH}"
DEST="/usr/share/stardict/dic/$starprefix$FILE-2.4.2"
mkdir -p "$FULLPKG$DEST"
mkdir -p "$FULLPKG/DEBIAN"
for i in dict.dz idx.gz ifo ; do
cp "$starprefix$FILE.$i" "$FULLPKG$DEST"
done
SIZE=$(du -ks "$FULLPKG"|sed 's/[^0-9].*$//')
cd "$FULLPKG"
find . -type f -not -path "DEBIAN"|xargs md5sum|sed 's/ \.\// /' > DEBIAN/md5sums
cat <<EOF > "DEBIAN/control"
Package: $PKG
Version: $VERSION
Section: text
Priority: extra
Architecture: $ARCH
Depends: stardict
Installed-Size: $SIZE
Maintainer: Anonymous <anonymous@web>
Description: Stardict version of a dictd dictionary
This package contains a Stardict formatted dictionary
converted from a dictd dictionary.
EOF
cd -
dpkg-deb -b "$FULLPKG"
if $DELETE_TEMP; then
rm -rf "$FULLPKG"
rm -f "$starprefix$FILE.dict.dz" \
"$starprefix$FILE.idx.gz" \
"$starprefix$FILE.ifo"
fi
echo "Debian package created and left in $TEMP_DIR"
;;
none)
echo "Files left in $TEMP_DIR"
;;
*)
echo "Error: unknown installation method $INSTALL_STARDICT"
echo "Assuming no install"
;;
esac
shift
done
dict (e.g. Freedict) to Wordtrans
(old scripts)
#!/bin/bash
# Exemple: dict2wt.sh freedict-eng-hun.dict.dz
if [ "$1" == "" ]; then
echo "Syntax: $0 dict-file.dict.dz"
exit
fi
FILE="$1"
FILEOUT="${FILE%%.dict.dz}.wt.gz"
zcat "$FILE" \
| gawk '
/^00-database/ {
do getline;
while ($0 !~ /^$/);
next;
}
/^ / {
gsub(/^ /,"");
print word " :: " $0;
next;
}
/^$/ {
word="!!!";
next;
}
{
word=$0;
}' \
| gzip > $FILEOUT
Put the converted dicts in /usr/local/share/wordtrans
For wordtrans: remove spaces in filenames!
For converted dicts: " :: " is the separator & files are UTF-8