google 翻訳をrubyで行う。

google翻訳rubyで行う。

英語→日本語は簡単にできるが、
日本語→英語が文字化けしてしまう。

どうもnet/httpなどが、utf-8の文章をsjis
で解釈してしまっているのが問題なのかもしれないが
よくわからない。

とりあえず、今のところmechanaize(ブラウザのような
イメージでwebを操れるクラス)を利用して、ブラウザを
IEに偽装したらうまくいくようになった。


使いすぎるとどうなるかは予想がつかない。
結構無理やり。本家のAPIでないので。




mechanizeは

gem install mechanize

でインストール可能です。

hapricot

gem install hpricot

ruby gems はここから入手
http://rubyforge.org/frs/?group_id=126
こいつを参照。
http://blog.himika.com/2010/05/cygwinruby-gem.html


cygwinの場合は、libxmlで詰まることがあるので、
setup.exeの中の、libsの下にある
それらしいものをインストールする。
→develの中のそれらしいやつも必要 libxml2
あと、gccもmakeも必要。
libの中の
libxml2-dvel
libxslt-dvel
みたいのが必要。


 require 'rubygems'
 require 'hpricot'
 require 'mechanize'
 require 'kconv'
 require 'uri'
 $KCODE="u"


 text="そのネコが好きです。"
 puts text;

#検索文字列のURLエンコード
 str2=URI.encode(text.toutf8)
 str3= "/translate_t?hl=ja&tl=en&text="+str2

#Mechanize(ブラウザ)の初期化
 agent = WWW::Mechanize.new
#新しいバージョンでは、 
# agent=Mechanize.net

#ブラウザをIEに偽装
 agent.user_agent_alias='Windows IE 7'

#URLをget
response= agent.get('http://translate.google.com'+str3).body

#getしたtextのxml解析
doc = Hpricot(response)
puts (doc/"#result_box").inner_text.toutf8

今回の翻訳は。
http://jugyo.org/blog/2650
を参照。これを日本語→英語に対応させた。


Javascriptで本当のAPIからちゃんと作ったものは、
http://d.hatena.ne.jp/unageanu/20090829/1251530725
だそうです。先輩よりきく。

mechanizeについては、
http://d.hatena.ne.jp/kitamomonga/20081209/kaisetsu_for_ver_0_9_ruby_www_mechanize