#!/bin/sh # May need to change if not wish8.4 \ exec wish8.4 "$0" "$@" package require http # may need to uncomment next line if using a proxy server #http::config -proxyhost proxy -proxyport 80 proc translate_query {query lang} { set url http://babelfish.altavista.com/babelfish/tr?doit=done&urltext=[string map {" " +} $query]&lp=$lang #puts "url = $url" set token [http::geturl $url] set data [http::data $token] http::cleanup $token #puts $token #puts $data set results "" #regexp {\n[0-9-]+ of ([0-9]+)} $data -> results regexp {input type=hidden name="q" value=[^>]+>} $data results regsub {^(input type=hidden name="q" value=")} $results {} results regsub {(">)$} $results {} results set results } proc go {w} { global query lang speak_choice original_output if {$original_output == "Yes"} { $w insert end "$query\n" } set answer [translate_query $query $lang] $w insert end "$answer \n" $w see end update idletasks # for the ViaVoice TTS speech synthesis system # adjust for the path to cmdlinespeak on your system if {$speak_choice == "TTS"} { exec /usr/lib/ViaVoiceOutloud/samples/cmdlinespeak/cmdlinespeak "$answer" } # for the Festival speech synthesis system # adjust path to the festival program on your system if {$speak_choice == "Festival"} { set f [open speech_test w] puts $f "$answer" close $f exec /hdc1/festival/bin/festival --tts speech_test } } set lang "en_es" frame .frame menubutton .frame.lang -text "English -> Spanish" -relief raised -indicatoron \ true -pady 0 -menu .frame.lang.menu menu .frame.lang.menu .frame.lang.menu add radiobutton -label "English -> Spanish" -variable lang \ -value "en_es" -command {.frame.lang configure -text "English -> Spanish"} .frame.lang.menu add radiobutton -label "English to Portuguese" -variable lang \ -value "en_pt" -command {.frame.lang configure -text "English -> Portuguese"} .frame.lang.menu add radiobutton -label "Spanish -> English" -variable lang \ -value "es_en" -command {.frame.lang configure -text "Spanish -> English"} .frame.lang.menu add radiobutton -label "Portuguese -> English" -variable lang \ -value "pt_en" -command {.frame.lang configure -text "Portuguese -> English"} set original_output No .frame.lang.menu add separator .frame.lang.menu add command -label "Output Original Text?" .frame.lang.menu add radiobutton -label "No " -variable original_output -value No .frame.lang.menu add radiobutton -label "Yes" -variable original_output -value Yes set speak_choice "None" menubutton .frame.speak -text "Text -> Speech?" -relief raised -pady 0 -indicatoron true -menu .frame.speak.menu menu .frame.speak.menu .frame.speak.menu add radiobutton -label "None " -variable speak_choice -value None .frame.speak.menu add radiobutton -label "Festival " -variable speak_choice -value "Festival" .frame.speak.menu add radiobutton -label "ViaVoice TTS" -variable speak_choice -value "TTS" button .frame.print -text "Print" -pady 0 -command { set print_data [.frame2.t get 1.0 end] set f [open ./print_data.txt w] puts $f "\n\n\n\n$print_data" close $f exec lpr ./print_data.txt } entry .e -textvar query -bg white bind .e { go .frame2.t lappend history_list $query set history_index [expr [llength $history_list] -1] } bind .e {set query ""} bind .e { if {$history_index >= 1} { incr history_index -1 set query [lindex $history_list $history_index] } } bind .e { if {$history_index <= "[expr [llength $history_list] - 1]" } { incr history_index set query [lindex $history_list $history_index] } } frame .frame2 text .frame2.t -bg white -yscrollcommand {.frame2.scroll set} scrollbar .frame2.scroll -command {.frame2.t yview} pack .frame -fill x -expand 1 pack .frame.lang .frame.speak .frame.print -side left -fill x -expand 1 pack .e -fill x -expand 1 pack .frame2 -fill x -expand 1 pack .frame2.t -side left -fill x -expand 1 pack .frame2.scroll -side left -fill y -expand 1