<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    莊周夢蝶

    生活、程序、未來
       :: 首頁 ::  ::  :: 聚合  :: 管理

    ruby TK版本的google翻譯機

    Posted on 2007-09-04 15:55 dennis 閱讀(695) 評論(0)  編輯  收藏 所屬分類: 動態語言my open-source
        過去寫的那個調用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


    主站蜘蛛池模板: 久久亚洲国产伦理| 久久久久亚洲av无码专区| 亚洲综合色丁香麻豆| 亚洲色精品VR一区区三区| 国产成人精品免费大全| 亚洲三级高清免费| 亚洲人成国产精品无码| 亚洲一区二区三区亚瑟| 成人av片无码免费天天看| a毛片基地免费全部视频| a级亚洲片精品久久久久久久 | 成人亚洲国产va天堂| 国产精品一区二区三区免费 | 国产小视频在线观看免费| 亚洲国产成人久久精品影视| 国产精品亚洲AV三区| 最近免费视频中文字幕大全| 亚洲国产天堂久久久久久| 亚洲一级毛片免费观看| 一个人看的www免费高清| 在线观看av永久免费| 国产亚洲人成网站在线观看不卡| 亚洲国产一区二区三区在线观看| 久久久精品免费视频| 亚洲成A人片77777国产| 亚洲专区一路线二| 国产成年无码久久久免费| 免费国产人做人视频在线观看| 亚洲精品电影天堂网| 中文字幕av免费专区| 国产精品久免费的黄网站| 亚洲国产av美女网站| 在线看片免费人成视频福利| 亚洲阿v天堂在线2017免费| 狠狠色伊人亚洲综合网站色| 久久久久久久99精品免费| 亚洲自偷自偷偷色无码中文| 日本亚洲高清乱码中文在线观看| 日韩毛片免费无码无毒视频观看 | 成人免费一区二区三区| 免费又黄又爽的视频|