欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

利用google在线翻译制作自己的翻译程序之ruby版 GoogleRuby.netHTML 

程序员文章站 2022-03-11 09:39:16
...
刚学ruby时写的工具,我自己一直在用,放在桌面上,遇到不懂单词就得问它。发在railscn上,ranchgirl修改的更为ruby way。

 受blogjava上的帖子启发,实在是个有趣的主意,写了个ruby版本的,对俺这等英语一般的同学来说,google在线翻译经常使用呐,原贴之java版
http://www.blogjava.net/ekinglong/archive/2006/11/12/80704.html?Pending=true#Post

利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML require 'net/http'
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML def translate
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML   txt
=STDIN.gets
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML   break 
if txt.strip=='e' or txt.strip=='exit'
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML   temp
=txt.split(' ')
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML   
if temp[1]=='1' or temp.size==1
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML     langpair
='en|zh-CN'
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML   
else
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML     langpair
='zh-CN|en'
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML   end
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML  
#使用代理  
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML 
  $proxy_addr = '127.0.0.1'
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML   
$proxy_port = 80
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML 
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML   response 
= Net::HTTP.Proxy($proxy_addr, $proxy_port).post_form(URI.parse("http://translate.google.com/translate_t"),{'text'=>temp[0],'langpair'=>langpair})

利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML   response
.body =~ /<div id=result_box dir=ltr>(.*)<\/div>/
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML   result 
= $1 
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML   puts '翻译内容:'+temp[0]
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML   puts 
'google返回:'+result
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML   puts 
'-------------------退出请打e或者exit---------------'
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML   translate
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML end
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML translate
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML 


ranchgirl修改的版本,没有使用递归:
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML require 'net/http'
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML def usage
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML   
"usage: word [lang2 [lang1]]\n" +
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML   
"Translate word from lang1 (default en, English) to lang2 (default es, Spanish)\n" +
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML   
"ISO language code: http://www.unicode.org/unicode/onlinedat/languages.html" 
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML end
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML def translate
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML   arr 
= ARGV
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML   
if !arr[0] then puts usage; return end
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML   arr[
1= "es" unless arr[1]
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML   arr[
2= "en" unless arr[2
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML   langpair 
= "#{arr[2]}|#{arr[1]}"   
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML   response 
= Net::HTTP.post_form(URI.parse("http://translate.google.com/translate_t"),
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML                                  {
:text => arr[0], :langpair => langpair})
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML   response
.body =~ /<div id=result_box dir=ltr>(.*)<\/div>/
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML   result 
= $1 
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML   result 
= "No #{langpair} translation available for #{arr[0]}" if result.size == 0
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML   puts result
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML end
利用google在线翻译制作自己的翻译程序之ruby版
            
    
    
        GoogleRuby.netHTML translate