ruby TK版本的google翻译机

简介:
过去写的那个调用google翻译的翻译脚本,一直在用。那个版本只能处理单个单词,如果要翻译一行或者一段语句,尽管稍微修改下就可以,但失去了我想要的便利性。今天看了看TK,顺手写了个GUI版本的,采用一次请求一个线程,倒是便捷不少。在windows上,你需要到 这里下载安装ActiveTcl才可以运行。
代码如下:
require  ' net/http '
require 
' tk '
require 
' logger '
# 设置代理
$proxy_addr = ' x.x.x.x '
$proxy_port
= ' 80 '
class  GoogleTranslate
 
def  initialize(url)
    @log 
=  Logger.new( " translate.log " )
    @log.level 
=  Logger::WARN
    @url
= url
    ph
= { ' padx ' => 50 , ' pady ' => 10 }
    root
= TkRoot.new{ title  ' google 翻译程序 ' }
    top
= TkFrame.new(root) {background  " white " }
    
    
# checkbutton,用于选择翻译类别
    checked = TkVariable.new
    TkCheckButton.new(top) do
      text 
' cn-en '
      variable checked
      pack({
' padx ' => 8 , ' pady ' => 10 })
    end  
    TkLabel.new(top){ text 
' Enter text: ' ;pack(ph)}
    
    @text
= TkVariable.new
    @result
= TkVariable.new
    TkEntry.new(top,
' textvariable ' => @text, ' width ' => 40 ).pack(ph)
    pig_b
= TkButton.new(top){text  ' 翻译 ' ;pack ph}
    
# 翻译按钮事件
    pig_b.command{ translate(checked.value) }
    
    TkLabel.new(top){ text 
' Translate Result: ' ;pack(ph)}
    TkEntry.new(top,
' textvariable ' => @result, ' width ' => 40 ).pack(ph)
    pig_a
= TkButton.new(top) do
      text 
' Exit '
      pack ph
      command {exit}
    end
    top.pack(
' fill ' => ' both ' , ' side ' => ' top ' )
  end
  
def  translate(checked)
    langpair
= ' en|zh-CN '  
    langpair
= ' zh-CN|en '   if  checked == ' 1 '
    
# 开一个新线程处理
    Thread.new do
      begin
        response
= Net::HTTP.Proxy($proxy_addr,$proxy_port).post_form(URI.parse(@url),
            {
' text ' => @text.value, ' langpair ' => langpair})
        response.body 
=~   /< div id = result_box dir = ltr > (. * ?) < \ / div >/
        @result.value
= $ 1
        rescue Exception
=> e
        @log.error(e)
      end
    end
    
  end
end
GoogleTranslate.new(
" http://translate.google.com/translate_t " )
Tk.mainloop
文章转自庄周梦蝶  ,原文发布时间 2007-09-04
目录
相关文章
|
1天前
|
Ruby
|
1天前
|
Ruby
|
1天前
|
数据采集 Web App开发 数据处理
Ruby网络爬虫教程:从入门到精通下载图片
Ruby网络爬虫教程:从入门到精通下载图片
|
1天前
|
JSON 数据格式 Ruby
|
1天前
|
JSON Ubuntu Linux
|
1天前
|
存储 JSON 数据格式
|
1天前
|
安全 Ruby
|
1天前
|
调度 Ruby
|
1天前
|
人工智能 BI 计算机视觉