Google 翻訳に問い合わせて英語を日本語に翻訳するプログラムを Ruby で作ってみました。
これを使って自分専用の英語学習用のツールを作りたいんです。
require 'rubygems'
require 'hpricot'
require 'net/http'
require 'kconv'
$KCODE = 'u'
def en_ja(text)
Net::HTTP.version_1_2
Net::HTTP.start('translate.google.com', 80) {|http|
response = http.post('/translate_t', "langpair=en|ja&text=#{text}")
doc = Hpricot(response.body)
return (doc/"#result_box").inner_text.toutf8
}
end
puts en_ja("I love Ruby.") #=> 私はルビーを愛する。
コマンドラインから使えるようにしたりすると便利かもしれません。
こんな感じ。
#!/usr/bin/ruby
require 'rubygems'
require 'hpricot'
require 'net/http'
require 'kconv'
$KCODE = 'u'
Net::HTTP.version_1_2
Net::HTTP.start('translate.google.com', 80) {|http|
response = http.post('/translate_t', "langpair=en|ja&text=#{ARGV[0]}")
doc = Hpricot(response.body)
puts (doc/"#result_box").inner_text.toutf8
}
以下のように実行。
$ ./en_ja.rb "I love Ruby."
…
そんなに便利でもないか。
追記:
CGI にした。
#!/usr/bin/ruby
require 'cgi'
require 'net/http'
require 'kconv'
$KCODE = 'u'
def en_ja(text)
Net::HTTP.version_1_2
Net::HTTP.start('translate.google.com', 80) {|http|
response = http.post('/translate_t', "langpair=en|ja&text=#{text}")
if response.body =~ /id=result_box[^>]+>([^<]+)
デモ: http://jugyoo.org/util/en_ja.cgi?text=I love Ruby
追記:
簡単な Web インターフェイスを作成。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>translate_test</title>
<script type="text/javascript" src="./jquery.js"></script>
<script type="text/javascript" charset="utf-8">
function on_load() {
$('#translate_button').click(
function() {
$.post("/util/en_ja.cgi", { text: $('#input_text')[0].value },
function(data){
$('#output_text').html(data);
}
);
}
);
}
</script>
<style type="text/css" media="screen">
textarea {
display: block;
width: 100%;
}
#main {
width: 80%;
margin: 0 auto;
}
#input {
text-align: right;
}
</style>
</head>
<body onLoad="on_load();">
<div id="main">
<div id="input">
<textarea id="input_text" name="text" rows="8" cols="80">The only thing we have to fear is fear itself.</textarea>
<input type="button" name="translate" value="translate" id="translate_button"></input>
</div>
<div id="output">
<div id="output_text" />
</div>
</div>
</body>
</html>
jQuery を使ってみた。
