Dict Applications

From YobiWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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.

Others (to be checked)

Links for the relationship between languages and charsets

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