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
目录
相关文章
|
7月前
|
Web App开发 Ubuntu 安全
【已解决】ubuntu 16.04安装最新版本google chrome出错, 旧版本chrome浏览器安装流程
【已解决】ubuntu 16.04安装最新版本google chrome出错, 旧版本chrome浏览器安装流程
469 0
|
5月前
|
Web App开发
Google Chrome 浏览器 119.0.6045.106 版本提示 STATUS_INVALID_IMAGE_HASH 崩溃
Google Chrome 浏览器 119.0.6045.106 版本提示 STATUS_INVALID_IMAGE_HASH 崩溃
68 0
【错误记录】Google Play 上架报错 ( 此版本不符合 Google Play 关于提供 64 位版本应用的要求。| 如果提供 x86 架构动态库则必须提供 x86_64 架构的动态库 )
【错误记录】Google Play 上架报错 ( 此版本不符合 Google Play 关于提供 64 位版本应用的要求。| 如果提供 x86 架构动态库则必须提供 x86_64 架构的动态库 )
274 0
【错误记录】Google Play 上架报错 ( 此版本不符合 Google Play 关于提供 64 位版本应用的要求。| 如果提供 x86 架构动态库则必须提供 x86_64 架构的动态库 )
|
11月前
|
Android开发 开发者
Google公布Android 各版本最新市场份额
Google公布Android 各版本最新市场份额
212 0
|
12月前
|
Web App开发 安全
Google Chrom版本升级后站内下载http链接的资源弹窗一闪不下载的问题
Google Chrom版本升级后站内下载http链接的资源弹窗一闪不下载的问题
181 0
【Google Play】创建和管理内部测试版本 ( 创建内部测试版本 | 检查并发布内部测试版本 )(一)
【Google Play】创建和管理内部测试版本 ( 创建内部测试版本 | 检查并发布内部测试版本 )(一)
513 0
【Google Play】创建和管理内部测试版本 ( 创建内部测试版本 | 检查并发布内部测试版本 )(一)
Google Earth Engine——2017简化版本美国地理学家办公室提供大尺度国际边界(LSIB)数据集
Google Earth Engine——2017简化版本美国地理学家办公室提供大尺度国际边界(LSIB)数据集
172 0
Google Earth Engine——2017简化版本美国地理学家办公室提供大尺度国际边界(LSIB)数据集
Google Earth Engine——2017细节版本美国地理学家办公室提供大尺度国际边界(LSIB)数据集。
Google Earth Engine——2017细节版本美国地理学家办公室提供大尺度国际边界(LSIB)数据集。
124 0
Google Earth Engine——2017细节版本美国地理学家办公室提供大尺度国际边界(LSIB)数据集。
【Google Play】正式版上架流程 ( 创建版本 | 设置国家地区 | 发布正式版 )(三)
【Google Play】正式版上架流程 ( 创建版本 | 设置国家地区 | 发布正式版 )(三)
299 0
【Google Play】正式版上架流程 ( 创建版本 | 设置国家地区 | 发布正式版 )(三)
【Google Play】正式版上架流程 ( 创建版本 | 设置国家地区 | 发布正式版 )(二)
【Google Play】正式版上架流程 ( 创建版本 | 设置国家地区 | 发布正式版 )(二)
314 0
【Google Play】正式版上架流程 ( 创建版本 | 设置国家地区 | 发布正式版 )(二)