Google-Translator Backend

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Chimerer
Beiträge: 514
Registriert: 28.01.2002 16:10:44

Google-Translator Backend

Beitrag von Chimerer » 01.03.2002 21:30:52

Ich hab hier mal ein Script gecodet, das den meiner Meinung nach akzeptablen Translator von Google in einer Xshell benutzbar macht. Eignet sich wenn man nur mal kurz ein Wort oder einen Satz übersetzt haben will und dafür nicht gleich X und einen grafischen Browser starten möchte. (Lynx muss installiert sein.)

Feature: Einmal abgefragte Ausdrücke werden in ~/google/translations abgespeichert und werden bei erneuter Abfrage aus der lokalen Datei gezogen.

Code: Alles auswählen

#!/bin/sh

test -d ~/google
if [ $? != 0 ]
 then
  mkdir ~/google > /dev/null
fi

touch ~/google/translations

if ( test -z "$1" ) || ( test -z "$2" )
 then
  echo -e "Usage: ./trans.sh \"expression to translate\" \"lang-lang\"\nPossible values for lang-lang are de-en (deutsch-englisch)"
  echo -e "\t\t\t\t  en-de (englisch-deutsch)"
  echo -e "\t\t\t\t  en-es (englisch-spanisch)"
  echo -e "\t\t\t\t  en-fr (englisch-französisch)"
  echo -e "\t\t\t\t  en-it (englisch-italienisch)"
  echo -e "\t\t\t\t  en-pt (englisch-portugiesisch)"
  echo -e "\t\t\t\t  de-en (deutsch-englisch)"
  echo -e "usw."  
else  
  lang=`echo $2 | tr '-' '|'`
  ausdruck=`echo $1 | tr " " "+"`
  
  clear
  echo "Google-Translator Backend by Chimerer"
  echo "-------------------------------------"
  echo -e "\nFolgender Ausdruck wurde übersetzt: "$1"\nMit diesem Sprachenparameter: "$2"\n\nÜbersetzt bedeutet der Ausdruck soviel wie:"
 
  grep "$ausdruck" ~/google/translations > /dev/null 
 if [ $? == 0 ]
  then
   grep "$ausdruck" ~/google/translations | cut -f2 
   echo
 else 
  translated="`lynx -source "http://translate.google.com/translate_t?text=$ausdruck&langpair=$lang" | cut -f 8 -d "<" | grep ^textarea | cut -c 46-`"
  echo -e "$translated\n"
 fi
fi

grep "$ausdruck" ~/google/translations > /dev/null
if [ $? != 0 ]
then
  test -z "$translated"
  if [ $? != 0 ]
   then
    echo -e "$ausdruck\t$translated" >> ~/google/translations  
  fi
fi

Benutzeravatar
xraver
Beiträge: 805
Registriert: 05.01.2002 19:42:11
Wohnort: Halberstadt

Beitrag von xraver » 04.03.2002 17:48:20

...also bei mir läuft es nicht.
Irgentwas in Zeile 31 will net so.
Aber die Idee ist gut. Aber schöner ware es noch wenn man einen ganzen Text durch die pipe zu deinen Script jagen könnte :).

Chimerer
Beiträge: 514
Registriert: 28.01.2002 16:10:44

Beitrag von Chimerer » 04.03.2002 21:18:45

Post mal den genauen Codeteil, der bei dir nicht funktioniert oder die Fehlermeldung.
Aber die Idee ist gut. Aber schöner ware es noch wenn man einen ganzen Text durch die pipe zu deinen Script jagen könnte
Ich werd mich bei Gelegenheit hinsetzen und das Script dementsprechend umschreiben.

Benutzeravatar
xraver
Beiträge: 805
Registriert: 05.01.2002 19:42:11
Wohnort: Halberstadt

Beitrag von xraver » 04.03.2002 22:24:45

xraver@raverbase:~$ ./translate
./translate: line 31: syntax error near unexpected token `else'
./translate: line 31: `else '
xraver@raverbase:~$

Vorher hatt er noch rumgemeckert das er die verzeichnisse nicht erstellen konnte, also habe ich sie selber erstellt.

Chimerer
Beiträge: 514
Registriert: 28.01.2002 16:10:44

Beitrag von Chimerer » 05.03.2002 21:44:51

Der if-Block sollte eigentlich funktionieren. Vielleicht hat er Probleme mit der Zeile, die mit

bedeutet der Ausdruck soviel wie:"

enden sollte, das aber nicht tut da die Formatierung durch die zu kleine Tablebreite verloren gegangen ist.

Also der Teil

bedeutet der Ausdruck soviel wie:"

gehört noch in die vorherige Zeile. Genauso gehört

f 8 -d "<" | grep ^textarea | cut -c 46-`"

auch noch in seine vorherige Zeile.

caba
Beiträge: 8
Registriert: 10.07.2002 09:42:28
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Offenburg
Kontaktdaten:

Mein erster Post....

Beitrag von caba » 10.07.2002 10:07:15

also bei mir funzt das script, aber nur wenn ich nicht mehr als ein Wort zum übersetzen eingebe
z.B
Wenn ich 'I Love You' eingebe bekomm ich eine leere ausgabe
Wenn ich "Love" eingebe bekomm ich Liebe zurück....

aber trotzdem super sache....

mfg manuel

Benutzeravatar
Porschecity
Beiträge: 33
Registriert: 04.08.2002 18:25:56
Kontaktdaten:

Beitrag von Porschecity » 05.08.2002 22:42:26

bei funktioniert's auch!
YaST - Yet another Sucking Tool

Chimerer
Beiträge: 514
Registriert: 28.01.2002 16:10:44

Beitrag von Chimerer » 11.08.2002 19:37:52

So, mein erster Beitrag seit langem.

@tucer: Hast du den zu übersetzenden Begriff auch mit " eingerahmt?

Also so:

./trans.sh "I love you" en-de

Benutzeravatar
josef
Beiträge: 82
Registriert: 27.07.2002 21:57:09
Wohnort: Dresden
Kontaktdaten:

Beitrag von josef » 13.08.2002 07:42:54

Wenn ich mal was beisteuern darf...

Code: Alles auswählen

   echo "-------------------------------------"
   echo -e "\nFolgender Ausdruck wurde übersetzt: "$1"\nMit diesem Sprachenparameter: "$2"\n\nÜbersetzt bedeutet der Ausdruck soviel wie:"

-  grep "$ausdruck" ~/google/translations > /dev/null
+  grep "$lang  $ausdruck" ~/google/translations > /dev/null
 if [ $? == 0 ]
   then
-   grep "$ausdruck" ~/google/translations | cut -f2
+   grep "$lang $ausdruck" ~/google/translations | cut -f3
    echo
 else
   translated="`lynx -source "http://translate.google.com/translate_t?text=$ausdruck&langpair=$lang" | cut -f 8 -d "<" | grep ^textarea | cut -c 46-`"
@@ -38,13 +38,13 @@
 fi
 fi

-grep "$ausdruck" ~/google/translations > /dev/null
+grep "$lang    $ausdruck" ~/google/translations > /dev/null
 if [ $? != 0 ]
 then
   test -z "$translated"
   if [ $? != 0 ]
    then
-    echo -e "$ausdruck\t$translated" >> ~/google/translations
+    echo -e "$lang\t$ausdruck\t$translated" >> ~/google/translations
   fi
 fi
Der Cache ist nämlich nur gültig, wenn die Sprachkombination dieselbe ist :)

Bitte beachten, daß das bei den grep's Tabulatoren und keine Leerzeichen sind. Normalerweise sollte man \t dafür nehmen können, aber das geht nicht - Bug in grep?

Unser chatbot (das ist das Viech was mein Logo ziert) verwendet jetzt eine leicht modifizierte Version davon.
Ich gehe mal von einem Public Domain- oder GPL-Status aus :P

Chimerer
Beiträge: 514
Registriert: 28.01.2002 16:10:44

Beitrag von Chimerer » 14.08.2002 17:02:49

Wenn ich mal was beisteuern darf...
Klar.
Ich gehe mal von einem Public Domain- oder GPL-Status aus
;)

Wo läuft denn der Chatbot?

Benutzeravatar
josef
Beiträge: 82
Registriert: 27.07.2002 21:57:09
Wohnort: Dresden
Kontaktdaten:

Beitrag von josef » 17.08.2002 09:55:36

Chimerer hat geschrieben: Wo läuft denn der Chatbot?
Siehe
http://ggz.sourceforge.net/docs/grubby/user-manual.html.
Es ist auch ein IRC-Gateway geplant.
Das nächste Release sollte eigentlich jetzt (zu Beginn der Semesterferien) erscheinen,
wird sich allerdings etwas verzögern, nicht zuletzt wegen des Wasserpegels hier...

Antworten