ruby Tk版本的google翻译机

过去写的那个调用google翻译的翻译脚本,一直在用。那个版本只能处理单个单词,如果要翻译一行或者一段语句,尽管稍微修改下就可以,但失去了我想要 的便利性。今天看了看TK,顺手写了个GUI版本的,采用一次请求一个线程,倒是便捷不少。在windows上,你需要到 这里下载安装ActiveTcl才可以运行。
代码如下:
ruby 代码
 
  1. require 'net/http'  
  2. require 'tk'  
  3. require 'logger'  
  4. #设置代理  
  5. $proxy_addr='x.xx.x'  
  6. $proxy_port='80'  
  7. class GoogleTranslate  
  8.   def initialize(url)  
  9.     @log = Logger.new("translate.log")  
  10.     @log.level = Logger::WARN  
  11.     @url=url  
  12.     ph={'padx'=>50,'pady'=>10}  
  13.     root=TkRoot.new{ title 'google 翻译程序'}  
  14.     top=TkFrame.new(root) {background "white"}  
  15.       
  16.     #checkbutton,用于选择翻译类别  
  17.     checked=TkVariable.new  
  18.     TkCheckButton.new(top) do  
  19.       text 'cn-en'  
  20.       variable checked  
  21.       pack({'padx'=>8,'pady'=>10})  
  22.     end    
  23.     TkLabel.new(top){ text 'Enter text:';pack(ph)}  
  24.       
  25.     @text=TkVariable.new  
  26.     @result=TkVariable.new  
  27.     TkEntry.new(top,'textvariable'=>@text,'width'=>40).pack(ph)  
  28.     pig_b=TkButton.new(top){text '翻译';pack ph}  
  29.     #翻译按钮事件  
  30.     pig_b.command{ translate(checked.value) }  
  31.       
  32.     TkLabel.new(top){ text 'Translate Result:';pack(ph)}  
  33.     TkEntry.new(top,'textvariable'=>@result,'width'=>40).pack(ph)  
  34.     pig_a=TkButton.new(top) do  
  35.       text 'Exit'  
  36.       pack ph  
  37.       command {exit}  
  38.     end  
  39.     top.pack('fill'=>'both','side'=>'top')  
  40.   end  
  41.   def translate(checked)  
  42.     langpair='en|zh-CN'   
  43.     langpair='zh-CN|enif checked=='1'  
  44.     #开一个新线程处理  
  45.     Thread.new do  
  46.       begin  
  47.           #使用了代理,如果没有,将Proxy方法去掉        response=Net::HTTP.Proxy($proxy_addr,$proxy_port).post_form(URI.parse(@url),
  48.               {'text'=>@text.value,'langpair'=>langpair})  
  49.         response.body =~ /
  50.         @result.value=$1  
  51.         rescue Exception=>e  
  52.         @log.error(e)  
  53.       end  
  54.     end  
  55.       
  56.   end  
  57. end  
  58. GoogleTranslate.new("http://translate.google.com/translate_t")  
  59. Tk.mainloop  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值