Welcome, guest | Sign In | My Account | Store | Cart
# 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 <Return> {
    go .frame2.t
    lappend history_list $query
    set history_index [expr [llength $history_list] -1]
bind .e <Control-k> {set query ""}
bind .e <Key-Up> {
    if {$history_index >= 1} {
        incr history_index -1
        set query [lindex $history_list $history_index]
bind .e <Key-Down> {
    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


  • revision 3 (20 years ago)
  • previous revisions are not available