--- ../../releases/translate-0.97a Sun Oct 13 05:28:29 2002 +++ translate Tue May 20 15:02:32 2003 @@ -1,9 +1,9 @@ #!/bin/bash APPNAME="EazyTranslator" -APPVER="0.97a" -APPFILENAME=`basename $0` -APPFILEDIR=`echo $0 | sed 's/'$APPFILENAME$'//'` +APPVER="0.98a.2003052014" +APPFILENAME=`basename "$0"` +APPFILEDIR=`dirname "$0"` # dictionary file DICT="$TRANSLATE_DIR" @@ -24,254 +24,272 @@ 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 + if [ $SINGLE_PAGE -eq 0 ]; then clear ; fi + echo " +$APPNAME $APPVER - Stream editor to use and to manage dictionary files +Requires 'basename', 'grep' and 'sed', optionally 'sort' and 'mktemp' in PATH + " } 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 + echo "\ +Copyright (C) 2001 Thomas Lahn (webmaster@PointedEars.de) +Be sure to have 'easyTrans' or similar in mail subject line for fast response. + " } function pause { - if [ "$1" == "c" ]; then - echo "Hit RETURN to continue..." - else - echo "Hit RETURN for the next page" - fi - read + 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 + title + copyright + echo "\ +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program (COPYING file); if not, write to the +Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + " } 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 '/')" + title + echo "\ +$APPFILENAME EXPRESSION DICTIONARY [OPTIONS] + +Tries to translate EXPRESSION looking up DICTIONARY and writes the result +to standard output (stdout) in a single line followed by a newline (\n). + +Environment: + 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 + 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" + echo "\ + If undefined, this is the program directory + (currently '"$APPFILEDIR"'). + TRANSLATE_OPTIONS Default options to overwrite command-line options" if [ -n "$TRANSLATE_OPTIONS" ]; then - echo " (currently '"$TRANSLATE_OPTIONS"')" + 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 + echo " +Arguments: + +EXPRESSION Word or (double-quoted) phrase to be translated +DICTIONARY Path of dictionary file relative to TRANSLATE_DIR + " + if [ $SINGLE_PAGE -eq 0 ]; then pause "c" ; fi + echo "\ +Translation OPTIONS: + -b, --brackets If not in DICTIONARY, writes given WORD or EXPRESSION + as [WORD] or [EXPRESSION]. + -m, --messages Return error messages instead of null-strings. + -p, --phrase Translate EXPRESSION as entire phrase. If not given, + each WORD of EXPRESSION is translated seperately. + -r, --reverse Perform reverse translation. Recommended only if + no appropriate dictionary file for vice-versa + translation is available and -p is also used. + -s, --sound Beep on fatal errors. + -v, --verbose Display flow of operation. Includes -m behavior. + -z, --zero Return not translatable tokens as null-strings. + Overwrites -b. + " + if [ $SINGLE_PAGE -eq 0 ]; then pause "c" ; fi + echo "\ +$APPFILENAME EXPRESSION DICTIONARY COMMAND TRANSLATION [INFO] [OPTIONS] +$APPFILENAME COMMAND DICTIONARY [INFO] [OPTIONS] + +Dictionary file COMMANDs: + -a, --add If not in DICTIONARY, add EXPRESSION with TRANSLATION + to DICTIONARY and write TRANSLATION. + If DICTIONARY does not exist, create the file with + INFO and add the entry; if INFO is a null-string, + default INFO is added, containing program version, + user name and timestamp. Requires 'sort'. + -ai, --addinfo Add information data INFO to DICTIONARY. + Must be used as first argument. + -c, --create Create new DICTIONARY with INFO (see -a). + Existing files are replaced. Must be used as first + argument. + -d, --delete If used with EXPRESSION and DICTIONARY, remove + EXPRESSION from DICTIONARY instead of translating. + If used as first argument, delete DICTIONARY. + -i, --info Display information about DICTIONARY. + Must be used as first argument. + " + if [ $SINGLE_PAGE -eq 0 ]; then pause "c" ; fi + echo "\ + -o, --overwrite Like -a but overwrite a contained translation of + EXPRESSION with TRANSLATION without question. + Additionally requires \`mktemp'. + -R, --repair Repair DICTIONARY instead of translating. + Requires \`mktemp'. + Info data is kept but invalid entries are removed. + USE WITH CAUTION! + -s, --sort Sort DICTIONARY instead of translating. Requires \`sort'. + Includes --sound when used with -v. + Must be used as first argument. + " + if [ $SINGLE_PAGE -eq 0 ]; then pause "c" ; fi + echo "\ +$APPFILENAME OPTION [OPTION] + +Help page OPTIONs: + --1 Display help on one page (without \`clear' and + user input). Useful with redirection + (try \`$APPFILENAME --1 --help > translate.doc.txt'). + Must be given before all other help page options. + --a, --about Display information about the program. + --c, --cmd Display this help page. + --d, --dict Display help about dictionary files. + --dev, --emp Display special information for developers and employers. + --x, --example Display example. + -h, --help Display all help pages. + " } 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 + title + echo "\ +EXAMPLE: If you would like to translate the English words 'a few' into German, + + $APPFILENAME 'a few' en-de + +should write the German words + + ein(e) wenig(e) + +(without indent) to stdout if the dictionary file 'en-de' contains +a correct entry for it (see next page). You may also translate it +as entire phrase (which seems to make more sense here): + + $APPFILENAME 'a few' en-de -p + +should instead write the German word \`einige'. + " } 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 + title + echo "\ +DICTIONARY FILES: +You may create/improve dictionary files to be used with $APPNAME +of your own. Translation data must match the following expression: + +#${DELIMITER}File description displayed when option -i is used\\n[#${DELIMITER}\ +File description\\n] +[Expression${DELIMITER}translation\\n[Next expression${DELIMITER}next \ +translation\\n]] +Last expression${DELIMITER}last translation\\z + +Parts enclosed in rectangle brackets are optional. The $DELIMITER_NAME \ +($DELIMITER) is to be used +as delimiter character between original and translated expression only. +Dictionary file names should contain common language identifiers separated +by a dash (such as \`en-de.dic' for an English-German dictionary file). + +Program updates and dictionaries can be obtained from +'http://pointedears.de/tools/languages/eazyrans/'. +Thank you for using a program by PointedEars. + " } 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 + title + copyright + echo "\ +INFORMATION FOR DEVELOPERS (KNOWN ISSUES)... + +- Sorting the dictionary unfortunately also sorts its info data by now. + +...AND FOR EMPLOYERS: + +BTW, if you have an idea for improving EasyTranslator or for another (field of) +application you want me to develop for you (BASIC, DOS batch, Windows INF, +Visual Basic, (ba)sh, Pascal, Delphi, C, (X)(HT)ML, CSS, JavaScript, PHP, Perl +and I am still learning other languages) feel free to mail me, too. THNX! + + -- PointedEars, 2003-05-20 + " } 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 + 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) + 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) +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) + 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) +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 @@ -307,349 +325,350 @@ 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 + # 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" + 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;; + 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 + 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' +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 + 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 + 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 [ -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 [ $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 + 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 + 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 + help fi