<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无码一区二区三区人| 99在线在线视频免费视频观看| 亚洲成在人天堂在线| 国产精品白浆在线观看免费 | 免费人成在线观看网站品爱网日本| 中文字幕亚洲码在线| 搡女人免费视频大全| 亚洲色偷偷综合亚洲AV伊人蜜桃| 毛片免费观看网址| 亚洲啪AV永久无码精品放毛片| 国产精品免费_区二区三区观看 | 免费夜色污私人影院网站电影| 免费a级毛片网站| 一级片在线免费看| 亚洲精品少妇30p| 特级无码毛片免费视频尤物| 亚洲国产精品午夜电影| 女性无套免费网站在线看| 亚洲日韩精品无码AV海量| 免费jjzz在在线播放国产| 久久不见久久见免费影院www日本| 亚洲人成精品久久久久| 99热在线免费观看| 亚洲色成人网站WWW永久四虎| 四虎免费影院4hu永久免费| 久久一区二区三区免费| 亚洲理论精品午夜电影| 暖暖免费高清日本中文| 黄床大片免费30分钟国产精品| 亚洲AV成人片色在线观看| 性盈盈影院免费视频观看在线一区| 三年片在线观看免费观看大全中国| 久久亚洲AV午夜福利精品一区| 久久久久久久久免费看无码| 一本到卡二卡三卡免费高|