莊周夢(mèng)蝶

          生活、程序、未來(lái)
             :: 首頁(yè) ::  ::  :: 聚合  :: 管理
              過(guò)去寫(xiě)的那個(gè)調(diào)用google翻譯的翻譯腳本,一直在用。那個(gè)版本只能處理單個(gè)單詞,如果要翻譯一行或者一段語(yǔ)句,盡管稍微修改下就可以,但失去了我想要的便利性。今天看了看TK,順手寫(xiě)了個(gè)GUI版本的,采用一次請(qǐng)求一個(gè)線程,倒是便捷不少。在windows上,你需要到這里下載安裝ActiveTcl才可以運(yùn)行。
          代碼如下:
          require 'net/http'
          require 
          'tk'
          require 
          'logger'
          #設(shè)置代理
          $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'
              
          #開(kāi)一個(gè)新線程處理
              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


          主站蜘蛛池模板: 上思县| 香河县| 顺昌县| 东辽县| 永和县| 宿松县| 岳池县| 临西县| 扬州市| 札达县| 平潭县| 上高县| 垣曲县| 孝义市| 台安县| 林州市| 资兴市| 咸丰县| 汕尾市| 昭通市| 慈利县| 九江市| 河北区| 会东县| 罗田县| 闽侯县| 大港区| 大悟县| 沙湾县| 普兰县| 霍林郭勒市| 平顶山市| 土默特左旗| 安龙县| 图们市| 渝北区| 措勤县| 宽城| 石景山区| 昌图县| 铁力市|