Rev 16 |
Go to most recent revision |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
1
#!/bin/bash
APPNAME="EazyTranslator"
APPVER="0.97a"
APPFILENAME=`basename $0`
APPFILEDIR=`echo $0 | sed 's/'$APPFILENAME$'//'`
# dictionary file
DICT="$TRANSLATE_DIR"
if [ -z "$DICT" ]; then DICT=$APPFILEDIR ; fi
# delimiter name (for help page only) and character (string) for separating original expression
# and translation in dictionary file
DELIMITER_NAME="colon"
DELIMITER=":"
# all help on a single page
SINGLE_PAGE=0
# bell character
CH_SOUND=""
CH_SOUND_ON=$'\a'
RESULT=""
function title {
if [ $SINGLE_PAGE -eq 0 ]; then clear ; fi
echo
echo $APPNAME" "$APPVER" - Stream editor to use and to manage dictionary files"
echo "Requires 'basename', 'grep' and 'sed', optionally 'sort' and 'mktemp' in PATH"
echo
}
function copyright {
echo "Copyright (C) 2001 Thomas Lahn (webmaster@PointedEars.de)"
echo "Be sure to have 'easyTrans' or similar in mail subject line for fast response."
echo
}
function pause {
if [ "$1" == "c" ]; then
echo "Hit RETURN to continue..."
else
echo "Hit RETURN for the next page"
fi
read
}
function copying {
title
copyright
echo "This program is free software; you can redistribute it and/or modify"
echo "it under the terms of the GNU General Public License as published by"
echo "the Free Software Foundation; either version 2 of the License, or"
echo "(at your option) any later version."
echo
echo "This program is distributed in the hope that it will be useful,"
echo "but WITHOUT ANY WARRANTY; without even the implied warranty of"
echo "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the"
echo "GNU General Public License for more details."
echo
echo "You should have received a copy of the GNU General Public License"
echo "along with this program (COPYING file); if not, write to the"
echo "Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA."
echo
}
function cmdHelp {
title
echo $APPFILENAME" EXPRESSION DICTIONARY [OPTIONS]"
echo
echo "Tries to translate EXPRESSION looking up DICTIONARY and writes the result"
echo "to standard output (stdout) in a single line followed by a newline (\n)."
echo
echo "Environment:"
echo
echo "TRANSLATE_DIR Dictionary folder root (absolute path '/')"
if [ -n "$TRANSLATE_DIR" ]; then
local INVALID_PATH=" -- INVALID PATH!"
local INVALID_FORMAT=" -- INVALID FORMAT!"
# : AutoCorrect performed!
local INVALID_MSG=""
if [ ! -e $TRANSLATE_DIR ]; then
INVALID_MSG=$INVALID_PATH
else
local GREPRES=`echo $TRANSLATE_DIR | grep -e "\/$"`
if [ -z "$GREPRES" ]; then INVALID_MSG=$INVALID_FORMAT ; fi
fi
echo " (currently '"$TRANSLATE_DIR"'"$INVALID_MSG")"
#if [ "$INVALID_MSG" == "$INVALID_FORMAT" ]; then
#export TRANSLATE_DIR=$TRANSLATE_DIR"/"
#set -a
#fi
fi
echo " If undefined, this is the program directory"
echo " (currently '"$APPFILEDIR"')."
echo "TRANSLATE_OPTIONS Default options to overwrite command-line options"
if [ -n "$TRANSLATE_OPTIONS" ]; then
echo " (currently '"$TRANSLATE_OPTIONS"')"
fi
echo
echo "Arguments:"
echo
echo "EXPRESSION Word or (double-quoted) phrase to be translated"
echo "DICTIONARY Path of dictionary file relative to TRANSLATE_DIR"
echo
if [ $SINGLE_PAGE -eq 0 ]; then pause "c" ; fi
echo "Translation OPTIONS:"
echo " -b, --brackets If not in DICTIONARY, writes given WORD or EXPRESSION"
echo " as [WORD] or [EXPRESSION]."
echo " -m, --messages Return error messages instead of null-strings."
echo " -p, --phrase Translate EXPRESSION as entire phrase. If not given,"
echo " each WORD of EXPRESSION is translated seperately."
echo " -r, --reverse Perform reverse translation. Recommended only if"
echo " no appropriate dictionary file for vice-versa translation is"
echo " available and -p is also used."
echo " -s, --sound Beep on fatal errors."
echo " -v, --verbose Display flow of operation. Includes -m behavior."
echo " -z, --zero Return not translatable tokens as null-strings."
echo " Overwrites -b."
echo
if [ $SINGLE_PAGE -eq 0 ]; then pause "c" ; fi
echo $APPFILENAME" EXPRESSION DICTIONARY COMMAND TRANSLATION [INFO] [OPTIONS]"
echo $APPFILENAME" COMMAND DICTIONARY [INFO] [OPTIONS]"
echo
echo "Dictionary file COMMANDs:"
echo " -a, --add If not in DICTIONARY, add EXPRESSION with TRANSLATION"
echo " to DICTIONARY and write TRANSLATION."
echo " If DICTIONARY not exists, create the file with INFO"
echo " and add the entry; if INFO is a null-string,"
echo " default INFO is added, containing program version,"
echo " user name and timestamp. Requires 'sort'."
echo " -ai, --addinfo Add information data INFO to DICTIONARY."
echo " Must be used as first argument."
echo " -c, --create Create new DICTIONARY with INFO (see -a)."
echo " Existing files are replaced. Must be used as first argument."
echo " -d, --delete If used with EXPRESSION and DICTIONARY, remove EXPRESSION"
echo " from DICTIONARY instead of translating."
echo " If used as first argument, delete DICTIONARY."
echo " -i, --info Display information about DICTIONARY."
echo " Must be used as first argument."
echo
if [ $SINGLE_PAGE -eq 0 ]; then pause "c" ; fi
echo " -o, --overwrite Like -a but overwrite a contained translation of"
echo " EXPRESSION with TRANSLATION without question."
echo " Additionally requires 'mktemp'."
echo " -R, --repair Repair DICTIONARY instead of translating. Requires 'mktemp'."
echo " Info data is be kept but invalid entries are removed."
echo " USE WITH CAUTION!"
echo " -s, --sort Sort DICTIONARY instead of translating. Requires 'sort'."
echo " Includes --sound when used with -v."
echo " Must be used as first argument."
echo
if [ $SINGLE_PAGE -eq 0 ]; then pause "c" ; fi
echo $APPFILENAME" OPTION [OPTION]"
echo
echo "Help page OPTIONs:"
echo " --1 Display help on one page (without 'clear' and user input)."
echo " Useful with redirection "
echo " (try '"$APPFILENAME" --1 --? > translate.doc.txt')."
echo " Must be given before all other help page options."
echo " --a, --about Display information about the program."
echo " --c, --cmd Display this help page."
echo " --d, --dict Display help about dictionary files."
echo " --dev, --emp Display special information for developers and employers."
echo " --x, --example Display example."
echo " --?, --help Display all help pages."
echo
}
function example {
title
echo "EXAMPLE: If you would like to translate the English words 'a few' into German,"
echo
echo " "$APPFILENAME" ''a few'' en-de"
echo
echo "should write the German words"
echo
echo " ein(e) wenig(e)\n"
echo
echo "(without indent) to stdout if the echo dictionary file 'en-de' contains"
echo "a correct entry for it (see next page). You may also translate it as"
echo "entire phrase (which seems to make more sense here):"
echo
echo " "$APPFILENAME" ''a few'' en-de -p"
echo
echo "should instead write the German word 'einige\n'"
echo "(replace '' in input with the double-quote character)."
echo
}
function dictHelp {
title
echo "DICTIONARY FILES:"
echo "You may create/improve dictionary files to be used with "$APPNAME
echo "of your own. Translation data must match the following expression:"
echo
echo "#"$DELIMITER"File description displayed when option -i is used\n[#"$DELIMITER"File description\n]"
echo "[Expression"$DELIMITER"translation\n[Next expression"$DELIMITER"next translation\n]]"
echo "Last expression"$DELIMITER"last translation\z"
echo
echo "Parts enclosed in rectangle brackets are optional. The "$DELIMITER_NAME" ("$DELIMITER") is to be used"
echo "as delimiter character between original and translated expression only."
echo "Dictionary file names should contain common language identifiers separated"
echo "by a dash (such as 'en-de.dic' for an English-German dictionary file)."
echo
echo "Program updates and dictionaries can be obtained from"
echo "'http://pointedears.de/dev/unix/translate/'."
echo "Thank you for using a program by PointedEars."
echo
}
function devInfo {
title
copyright
echo "INFORMATION FOR DEVELOPERS (KNOWN ISSUES)..."
echo
echo "- Sorting the dictionary unfortunately also sorts its info data by now."
echo
echo "...AND FOR EMPLOYERS:"
echo
echo "BTW, if you have an idea for improving EasyTranslator or for another (field of)"
echo "application you want me to develop for you (BASIC, DOS batch, Windows INF,"
echo "Visual Basic, bash, Pascal, Delphi, C, HTML/JavaScript, and I am still learning"
echo "other languages) feel free to mail me, too. THNX! -- PointedEars, 2001-03-28"
echo
}
function help {
copying
if [ $SINGLE_PAGE -eq 0 ]; then pause ; fi
cmdHelp
if [ $SINGLE_PAGE -eq 0 ]; then pause ; fi
example
if [ $SINGLE_PAGE -eq 0 ]; then pause ; fi
dictHelp
if [ $SINGLE_PAGE -eq 0 ]; then pause ; fi
devInfo
}
function translateReverse {
local EXPR="$1"
if [ $VERBOSE -eq 1 ]; then echo "Executing: grep -i -e '"$DELIMITER$EXPR"$' '"$DICT"'" ; fi
RESULT=`grep -i -e "$DELIMITER$EXPR$" "$DICT"`
if [ $VERBOSE -eq 1 ]; then echo "grep returned: '"$RESULT"'" ; fi
if [ -n "$RESULT" ]; then
if [ $VERBOSE -eq 1 ]; then
echo "Reading expression from recordset (with sed requires only 1 step! :o)" ;
echo "Executing: echo $RESULT | sed 's/$DELIMITER[ ]*[^$DELIMITER]*//'"
fi
RESULT=`echo $RESULT | sed 's/'$DELIMITER'[ ]*[^'$DELIMITER']*//'`
if [ $VERBOSE -eq 1 ]; then echo "sed returned: '"$RESULT"'" ; fi
fi
# Should return only characters before the delimiter until BOL (expression)
}
function translate {
local EXPR="$1"
if [ $REVERSE -eq 1 ]; then translateReverse "$1" ; return ; fi
if [ $VERBOSE -eq 1 ]; then echo "Executing: grep -i -e '^"$EXPR$DELIMITER"' '"$DICT"'" ; fi
RESULT=`grep -i -e "^$EXPR$DELIMITER" "$DICT"`
if [ $VERBOSE -eq 1 ]; then echo "grep returned: '"$RESULT"'" ; fi
if [ -n "$RESULT" ]; then
if [ $VERBOSE -eq 1 ]; then
echo "Reading translation from recordset (with sed requires only 1 step! :o)" ;
echo "Executing: echo $RESULT | sed 's/[^$DELIMITER]*$DELIMITER[ ]*//'"
fi
RESULT=`echo $RESULT | sed 's/[^'$DELIMITER']*'$DELIMITER'[ ]*//'`
if [ $VERBOSE -eq 1 ]; then echo "sed returned: '"$RESULT"'" ; fi
fi
# Should return only characters after the separation character until EOL
# (translation)
}
# exit codes
ESUCCESS=0
ENO_DICT=1
EDICT_DIR_NOT_FOUND=2
EDICT_NOT_FOUND=3
EDICT_WRONG_FORMAT=4
EDICT_EXPR_CONTAINED=5
EDICT_TEMP_ERROR=6
EDICT_CREATE_ERROR=7
EDICT_DELETE_EXPR_NOT_FOUND=8
EDICT_REMOVE=9
# argument flags
DICTIONARY=0 # if 1, -d refers to the dictionary file instead of an entry
# option flags - may be replaced by declare -i FLAG
ADD=0
ADDINFO=0
BRACKETS=0
CREATE=0
DELETE=0
INFO=0
MESSAGES=0
OVERWRITE=0
PHRASE=0
REPAIR=0
REVERSE=0
SORT=0
SOUND=0
VERBOSE=0
ZERO=0
if [ -n "$1" ]; then
# retrieve arguments and use default settings from environment variable
ARGUMENTS=$* ; if [ -n "$TRANSLATE_OPTIONS" ]; then ARGUMENTS=$ARGUMENTS" "$TRANSLATE_OPTIONS ; fi
# check options
for argument in $ARGUMENTS; do
case "$argument" in
"-b" | "--brackets") BRACKETS=1;;
"-m" | "--messages") MESSAGES=1;;
"-p" | "--phrase") PHRASE=1;;
"-r" | "--reverse") REVERSE=1;;
"-s" | "--sound") SOUND=1;;
"-v" | "--verbose") VERBOSE=1 ; title ; copyright;;
"-z" | "--zero") ZERO=1;;
"--a" | "--about") copying ; exit $ESUCCESS;;
"--c" | "--cmd") cmdHelp ; exit $ESUCCESS;;
"--d" | "--dict") dictHelp ; exit $ESUCCESS;;
"--dev" | "--emp") devInfo ; exit $ESUCCESS;;
"--1") SINGLE_PAGE=1;;
"--x" | "--example") example ; exit $ESUCCESS;;
"--?" | "--help") help ; exit $ESUCCESS;;
esac
done
if [ $SOUND -eq 1 ]; then CH_SOUND=$CH_SOUND_ON ; fi
if [ -n "$2" ]; then
# concatenate dictionary root and given dictionary file
DICT="$DICT$2"
# check for dictionary commands
case "$1" in
"-d" | "--delete") DELETE=1 ; DICTIONARY=1 ;;
"-c" | "--create") CREATE=1;;
"-i" | "--info") INFO=1;;
"-s" | "--sort") SORT=1;;
"-R" | "--repair") REPAIR=1;;
esac
case "$3" in
"-a" | "--add") ADD=1;;
"-ai" | "--addinfo") ADDINFO=1;;
"-d" | "--delete") DELETE=1;;
"-o" | "--overwrite") OVERWRITE=1;;
esac
if [ $VERBOSE -eq 1 ]; then
if [ -z "$TRANSLATE_DIR" ]; then
echo "Dictionary root (program directory): '"$APPFILEDIR"'"
else
echo "Dictionary root (TRANSLATE_DIR): '"$TRANSLATE_DIR"'"
fi
echo "Dictionary file: '"$2"'"
echo "Dictionary file path: '"$DICT"'"
fi
DEFAULT_INFO=$APPNAME" "$APPVER" dictionary file created by '"`whoami`"' on "`date`
if [ $CREATE -eq 1 ]; then
if [ $VERBOSE -eq 1 ]; then
echo $DICT": Creating dictionary"
fi
if [ -z "$3" ]; then
if [ $VERBOSE -eq 1 ]; then echo $DICT": Adding information: '"$DEFAULT_INFO ; fi
echo "#"$DELIMITER$EFAULT_INFO &>$DICT
else
if [ $VERBOSE -eq 1 ]; then echo $DICT": Adding information: '"$3"'" ; fi
echo "#"$DELIMITER$3 &>$DICT
fi
if [ $VERBOSE -eq 1 ]; then echo ; fi
exit $?
fi
if [ -e "$DICT" ]; then # if dictionary file exists
# check if dictionary file (contains at least '#$DELIMITER')
if [ $VERBOSE -eq 1 ]; then echo "Executing: grep -e '."$DELIMITER".' '"$DICT"'" ; fi
RESULT=`grep -e "#$DELIMITER." "$DICT"`
if [ -z "$RESULT" ]; then
if [ $VERBOSE -eq 1 ]; then echo "grep returned: ''" ; fi
echo $DICT": Not a (valid) dictionary file (type '"$APPFILENAME" --d' for details)."
if [ $VERBOSE -eq 1 ]; then echo ; fi
exit $EDICT_WRONG_FORMAT
else
if [ $VERBOSE -eq 1 ]; then
echo "grep returned not a null-string: '$DICT' seems to be a dictionary file"
fi
fi
RESULT=""
if [ $ADDINFO -eq 1 ]; then
if [ -z "$3" ]; then
if [ $VERBOSE -eq 1 ]; then echo $DICT": Adding information: '"$DEFAULT_INFO"'" ; fi
echo "#"$DELIMITER$DEFAULT_INFO >>$DICT
else
if [ $VERBOSE -eq 1 ]; then echo $DICT": Adding information: '"$3"'" ; fi
echo "#"$DELIMITER$3 >>$DICT
fi
if [ $VERBOSE -eq 1 ]; then echo ; fi
exit $?
fi
if [ $INFO -eq 1 ]; then
if [ $VERBOSE -eq 1 ]; then
echo "Obtaining information..."
echo
fi
grep "^#$DELIMITER" "$DICT" | sed 's/^#'$DELIMITER'//'
RESULT=`grep -e "^#$DELIMITER" "$DICT"`
if [ -z "$RESULT" ]; then echo $CH_SOUND$DICT": No information available" ; fi
if [ $VERBOSE -eq 1 ]; then echo ; fi
exit $ESUCCESS
fi
if [ $ADD -eq 1 ]; then
if [ $VERBOSE -eq 1 ]; then echo ; fi
RESULT=`grep -i -e "^$1$DELIMITER" "$DICT"`
if [ -z "$RESULT" ]; then
echo $DICT": Adding expression: '"$1"'"
echo $DICT": Adding translation: '"$4"'"
if [ -n "$4" ]; then
echo $1$DELIMITER$4 >>$DICT
else
if [ $MESSAGES -eq 1 ] || [ $VERBOSE -eq 1 ]; then echo $CH_SOUND$APPFILENAME": No translation given for '"$1"'" ; fi
fi
SORT=1
else
translate "$1"
echo $CH_SOUND$DICT": Expression already contained: '"$1"':"$RESULT
if [ $VERBOSE -eq 1 ]; then echo ; fi
exit $EDICT_EXPR_CONTAINED
fi
fi
if [ $OVERWRITE -eq 1 ]; then
if [ $VERBOSE -eq 1 ]; then echo ; fi
echo $DICT": Replacing expression: '"$1"'"
echo $DICT": Replacing translation: '"$4"'"
TMPFILE=`mktemp -q /tmp/$APPFILENAME.XXXXXX`
if [ $? -ne 0 ]; then
if [ $VERBOSE -eq 1 ]; then echo $APPFILENAME": Can't create temp file, exiting..." ; fi
exit EDICT_TEMP_ERROR
else
if [ -n "$4" ]; then
grep -iv -e "^$1$DELIMITER" "$DICT" &>$TMPFILE
if [ $? -eq 0 ]; then echo $1$DELIMITER$4 >>$TMPFILE ; fi
if [ $? -eq 0 ]; then mv $TMPFILE $DICT &>/dev/null ; fi
if [ $? -ne 0 ]; then
if [ $VERBOSE -eq 1 ]; then echo $APPFILENAME": Unable to replace dictionary file: '"$DICT"'" ; fi
exit EDICT_REPLACE_ERROR
else
SORT=1
fi
else
if [ $MESSAGES -eq 1 ] || [ $VERBOSE -eq 1 ]; then echo $CH_SOUND$APPFILENAME": No translation given for '"$1"'" ; fi
fi
fi
fi
if [ $DELETE -eq 1 ]; then
if [ $DICTIONARY -eq 0 ]; then
# delete entry
if [ $VERBOSE -eq 1 ]; then echo $DICT": Removing expression: "$1 ; fi
RESULT=`grep -i -e "^$1$DELIMITER" "$DICT"`
if [ -z "$RESULT" ]; then
if [ $MESSAGES -eq 1 ] || [ $VERBOSE -eq 1 ]; then echo $DICT": Expression not contained in dictionary: '"$1"'" ; fi
exit $EDICT_DELETE_EXPR_NOT_FOUND
fi
TMPFILE=`mktemp -q /tmp/$APPFILENAME.XXXXXX`
if [ $? -ne 0 ]; then
if [ $VERBOSE -eq 1 ]; then echo $APPFILENAME": Can't create temp file, exiting..." ; fi
exit EDICT_TEMP_ERROR
else
grep -iv -e "$1$DELIMITER" "$DICT" &>$TMPFILE
if [ $? -eq 0 ]; then mv $TMPFILE $DICT &>/dev/null ; fi
if [ $? -ne 0 ]; then
if [ $VERBOSE -eq 1 ]; then echo $DICT": Unable to modify dictionary (cannot replace file)" ; fi
exit EDICT_REPLACE_ERROR
else
if [ $VERBOSE -eq 1 ]; then echo $DICT": Modification successful" ; fi
exit $ESUCCESS
fi
fi
else
# delete dictionary
if [ $VERBOSE -eq 1 ]; then
echo $APPFILENAME": Deleting dictionary: '"$DICT"'"
echo $APPFILENAME": Executing: rm '"$DICT"' &>/dev/null"
fi
rm $DICT &>/dev/null
if [ $? -ne 0 ]; then
if [ $MESSAGES -eq 1 ] || [ $VERBOSE -eq 1 ]; then echo $DICT": Unable to remove dictionary" ; fi
exit $EDICT_REMOVE
else
if [ $VERBOSE -eq 1 ]; then
echo $DICT": Dictionary successfully removed"
echo
fi
exit $ESUCCESS
fi
fi
fi
if [ $SORT -eq 1 ]; then
if [ $VERBOSE -eq 1 ]; then
echo "Sorting vocabulary: '"$DICT"'"
echo "Executing: sort -d -f -o "$DICT" -t "$DELIMITER" "$DICT
fi
RESULT=`sort -d -f -o "$DICT" -t $DELIMITER "$DICT"`
SORT_EXIT=$?
if [ $VERBOSE -eq 1 ]; then
echo "sort returned exit code "$SORT_EXIT
if [ $SORT_EXIT -eq 0 ]; then
echo "Sorting successful: '"$DICT"'"
else
echo "Sorting failed: '"$DICT"'"
fi
echo
fi
exit $SORT_EXIT
fi
if [ $REPAIR -eq 1 ]; then
if [ $VERBOSE -eq 1 ]; then echo $DICT": Repairing dictionary" ; fi
TMPFILE=`mktemp -q /tmp/$APPFILENAME.XXXXXX`
if [ $? -ne 0 ]; then
if [ $VERBOSE -eq 1 ]; then echo $APPFILENAME": Can't create temp file, exiting..." ; fi
exit EDICT_TEMP_ERROR
else
grep -e "^#$DELIMITER" "$DICT" &>$TMPFILE
grep -e ".$DELIMITER." "$DICT" >>$TMPFILE
if [ $? -eq 0 ]; then mv $TMPFILE $DICT &>/dev/null ; fi
if [ $? -ne 0 ]; then
if [ $VERBOSE -eq 1 ]; then echo $DICT": Unable to repair dictionary (cannot replace file)" ; fi
exit EDICT_REPLACE_ERROR
else
$DICT": Repair successful"
fi
fi
fi
TRANSL=""
REVERSE_TRANSL=""
REVERSE_TRANSL_CAPT="T"
REVERSE_TRANSL_ON=" (reverse)"
REVERSE_TRANSL_CAPT_ON="Reverse t"
if [ $REVERSE -eq 1 ]; then
REVERSE_TRANSL=$REVERSE_TRANSL_ON
REVERSE_TRANSL_CAPT=$REVERSE_TRANSL_CAPT_ON
fi
if [ $PHRASE -eq 1 ] ; then
if [ $VERBOSE -eq 1 ]; then echo "Looking up phrase"$REVERSE_TRANSL": '"$1"'" ; fi
if [ $ZERO -eq 0 ]; then
TRANSL="$1" ; if [ $BRACKETS -eq 1 ]; then TRANSL="["$TRANSL"]" ; fi
fi
translate "$1"
if [ -n "$RESULT" ]; then
TRANSL=$RESULT
if [ $VERBOSE -eq 1 ]; then echo $REVERSE_TRANSL_CAPT"ranslation: '"$TRANSL"'" ; fi
else
if [ $VERBOSE -eq 1 ]; then
if [ $ZERO -eq 1 ]; then
echo $REVERSE_TRANSL_CAPT"ranslation failed (return not translatable tokens as null-string): '"$1"'"
else
if [ $BRACKETS -eq 1 ]; then
echo $CH_SOUND$REVERSE_TRANSL_CAPT"ranslation failed (enclosing phrase in brackets): '"$1"'"
else
echo $CH_SOUND$REVERSE_TRANSL_CAPT"ranslation failed (leave 'as is'): '"$1"'"
fi
fi
fi
fi
else
for word in $1; do
if [ $ZERO -eq 0 ]; then TRANSLWORD="$word" ; else TRANSLWORD="" ; fi
if [ $VERBOSE -eq 1 ]; then echo "Looking up word"$REVERSE_TRANSL": "$word ; fi
translate "$word"
if [ -n "$RESULT" ]; then
TRANSLWORD=$RESULT
if [ -n "$RESULT" ] && [ $VERBOSE -eq 1 ]; then echo $REVERSE_TRANSL_CAPT"ranslation: '"$TRANSLWORD"'" ; fi
else
if [ $ZERO -eq 0 ] && [ $BRACKETS -eq 1 ]; then TRANSLWORD="["$TRANSLWORD"]" ; fi
if [ $VERBOSE -eq 1 ]; then
if [ $ZERO -eq 1 ]; then
echo $REVERSE_TRANSL_CAPT"ranslation failed (return not translatable tokens as null-string): "$word
else
if [ $BRACKETS -eq 1 ]; then
echo $REVERSE_TRANSL_CAPT"ranslation failed (enclosing word in brackets): "$word
else
echo $REVERSE_TRANSL_CAPT"ranslation failed (leave 'as is'): "$word
fi
fi
fi
fi
TRANSL=$TRANSL" "$TRANSLWORD
done
fi
if [ $VERBOSE -eq 1 ]; then echo "Overall translation:" ; fi
if [ -n "$TRANSL" ]; then echo $TRANSL ; fi
if [ $VERBOSE -eq 1 ]; then echo ; fi
else
# send errmsg to stderr
if [ -n "$TRANSLATE_DIR" ] && [ ! -e "$TRANSLATE_DIR" ]; then
if [ $MESSAGES -eq 1 ] || [ $VERBOSE -eq 1 ]; then echo $CH_SOUND"$APPFILENAME: Unable to locate dictionary root: '"$TRANSLATE_DIR"'" 1>&2 ; fi
else
if [ $INFO -eq 0 ] && [ $ADD -eq 1 ] || [ $OVERWRITE -eq 1 ]; then
if [ $VERBOSE -eq 1 ]; then
echo
echo $DICT": Creating dictionary"
fi
if [ -n "$4" ]; then
if [ -z "$5" ]; then
if [ $VERBOSE -eq 1 ]; then echo $DICT": Adding information: '"$APPNAME" "$APPVER" dictionary file created by '"`whoami`"' on "`date`"'" ; fi
echo "#"$DELIMITER$APPNAME" "$APPVER" dictionary file created by '"`whoami`"' on "`date` &>$DICT
else
if [ $VERBOSE -eq 1 ]; then echo $DICT": Adding information: '"$5"'" ; fi
echo "#"$DELIMITER$5 &>$DICT
fi
if [ $? -eq 0 ]; then
if [ $VERBOSE -eq 1 ]; then
echo $DICT": Adding expression: '"$1"'"
echo $DICT": Adding translation: '"$4"'"
fi
echo $1$DELIMITER$4 >>$DICT
else
if [ $MESSAGES -eq 1 ] || [ $VERBOSE -eq 1 ]; then echo $CH_SOUND$APPFILENAME": Unable to create dictionary file: '"$DICT"'" ; fi
exit EDICT_CREATE_ERROR
fi
else
if [ $MESSAGES -eq 1 ] || [ $VERBOSE -eq 1 ]; then echo $CH_SOUND$APPFILENAME": No translation given for '"$1"'" ; fi
fi
else
if [ $MESSAGES -eq 1 ] || [ $VERBOSE -eq 1 ]; then echo $CH_SOUND$APPFILENAME": Unable to locate dictionary file: '"$DICT"' (please double-quote phrases)" 1>&2 ; fi
fi
fi
if [ $VERBOSE -eq 1 ]; then echo ; fi
if [ -n "$TRANSLATE_DIR" ] && [ ! -e "$TRANSLATE_DIR" ]; then
exit $EDICT_DIR_NOT_FOUND
else
exit $EDICT_NOT_FOUND
fi
fi
else
if [ $MESSAGES -eq 1 ] || [ $VERBOSE -eq 1 ]; then
# send errmsg to stderr
echo $CH_SOUND$APPFILENAME": No dictionary file given" 1>&2
fi
if [ $VERBOSE -eq 1 ]; then echo ; fi
exit $ENO_DICT
fi
else
help
fi