にちにちほんやくを作った! - Google AJAX Language APIを試してみた2
前に作ったサンプルを改造してみた。
日本語を入力していくと、英語に翻訳して、それを日本語に翻訳するだけ!
でも自動翻訳では楽しい文章が生成される。
例えば「お腹が減った。」と入力すると
- お腹が減った。
- Has dropped waistline.
- ウエストが減った。
ウエストは減ってほしい・・・。
例えば「お酒が飲みたい。」と入力すると
- お酒が飲みたい。
- If you would like to drink alcohol.
- 希望される場合はアルコールを飲んでいます。
飲まされる?
上とか下とか押しただけで、イベントが発生してしまうので、無駄なリクエストが飛びすぎる。
Google AJAX Language APIを試してみた - techlog
でも制御する方法がよくわからない・・・。Googleに怒られるかな。
ちゃんと動作させるのは結構大変そう。でもちょっと動かすのはとても簡単という感じ。こういう場合は、onkeydownのイベントに直接実行したい関数を紐付けるのではなく、以下のtimerTranslateの方を紐付けておくと良い感じになります。
onkeydown等のイベントで重ための関数を実行するときのテクニック (でぃべろっぱーず・さいど)
chrisさんがトラックバックで、前回作ったサンプルを添削してくださった。
clearTimeout( timer_id )は、どこかに書いてあったが、使い方がさっぱりわからなかった。
こんな時に使えるのか。JavaScriptは初心者なので、とても助かった。
chrisさんありがとうございます。
ソースはこちら。動作確認はこちらでも。
<html> <head> <meta http-equiv="content-type" content="text/html;charset=UTF-8"></meta> <title>にちにちほんやく - GoogleAjaxLanguageAPISample - techlog</title> <style type="text/css"> textarea { height: 100px; width: 400px } body { font-family:"MS ゴシック",Osaka,verdana,arial,sans-serif; font-size:90%; font-size-adjust:none; font-style:normal; font-variant:normal; font-weight:normal; line-height:1.2; } </style> <script type="text/javascript" src="http://www.google.com/jsapi"></script> <script type="text/javascript"> // setTimeoutでの戻り値を受け取る変数 var timer_id; function timerTranslate(){ try{ clearTimeout( timer_id ) }catch(e){} timer_id = setTimeout("translate()",2000); } google.load("language", "1"); function translate() { var source = document.getElementById("source").value; google.language.translate(source, "ja", "en", function(result) { if (result.error) { alert("Error:" + result.message); return; } document.getElementById("result").value = result.translation; translate2(result.translation); }); } function translate2(source) { google.language.translate(source, "en", "ja", function(result) { if (result.error) { alert("Error:" + result.message); return; } document.getElementById("result2").value = result.translation; }); } </script> </head> <body> <div><b>にちにちほんやく</b> - GoogleAjaxLanguageAPISample - <a href="http://d.hatena.ne.jp/j7400157/" target="_blank">techlog</a></div><br /> <textarea id="source" onkeydown="timerTranslate()"></textarea><br /> <textarea id="result"></textarea></br> <textarea id="result2"></textarea></br> </body> </html>
入力した内容の言語自動判定ははずした。にちにちほんやくだから。
日本語→英語の結果を、英語→日本語でリクエストしているだけ。
2秒間入力がなければ、Googleにリクエストを投げるようにした。
コピペすれば動くけど、注意点は文字コードをUTF-8にすること。
自動翻訳は楽しい!
参考URL
- onkeydown等のイベントで重ための関数を実行するときのテクニック (でぃべろっぱーず・さいど)
- 【レビュー】Googleからの贈り物 - Google AJAX Language APIでカンタンに翻訳サイトを (1) 超シンプルなAPIながらスゴイ実力 | エンタープライズ | マイコミジャーナル
- 404 Blog Not Found:javascript - Google AJAX Language APIを試してみた
- はてなダイアリーに任意のiframeを貼り付ける - daily gimite
- iGoogle ガジェットを可能な限りシンプルに「はてなダイアリー」に貼る方法 : Media Technology Labs (MTL) : メディアテクノロジーラボ ブログ