URLで渡してJSONで取得できる翻訳APIが欲しくて、軽く探したけど見つからない気がしたので、自分で作った。
わかると思うけど、EJが英語→日本語、JEが日本語→英語です。
翻訳したい言葉を入力すると、翻訳されます。結果はRSS, JSON, JSONPのうちの好きな形式で取得できます。単語でも文章でもOKですが、QUERY_STRINGで渡すので、あまり極端に長い文章は多分途中で切れてしまうと思います。
ただ、こんな風にページを開いて言葉を入力して使うのではAPIとは言えません。
実際には、プログラムの中からAPIとして呼び出すわけです。
http://pipes.yahoo.com/poolmmjp/ej_translation_api?_render=rss&text=(翻訳したい言葉)
http://pipes.yahoo.com/poolmmjp/je_translation_api?_render=rss&text=(翻訳したい言葉)
翻訳結果をRSSで取得したいならば、こんなURLを作ってリクエストを投げます。前者が英→日、後者が日→英です。
返されるRSSは、itemを1つだけ持つRSS 2.0で、そのitemのtitleに翻訳前、descriptionに翻訳後の言葉が入っています。
http://pipes.yahoo.com/poolmmjp/ej_translation_api?_render=json&text=(翻訳したい言葉)
http://pipes.yahoo.com/poolmmjp/je_translation_api?_render=json&text=(翻訳したい言葉)
JSONで取得するには、こんなURLになります。返されるJSONは、日本語部分が\uエンコードされているので注意してください。
Yahoo! Pipesはかなり良くできていて、結果JSONPで取得することもできます。これで、cgi等のサーバ側のプログラムを使わずに翻訳機能を持ったWebページが作れるわけです。
JSONPで取得するには、JSONのときのURLに
_callback=hoge
を付け足すことで、hogeを呼び出すようなJSONPが返ります。
JSONPならすぐ作れるので、さっそくやってみた。以下はJavaScriptがそれなりに使える環境で動作します。テキストボックスに英語を入れて、「英→日」ボタンを押し、しばらく待つと翻訳された結果が表示されます。
どんなもんでしょうか。この翻訳アプリのソースはこの記事のhtmlソース見ればOK。
Yahoo! Pipesです。ソースは以下。
ただし、入力された言葉はあくまでテキストなので、これをRSSに変換する必要があります。そうじゃないとYahoo! Pipesで扱えない。
そこで、以下のようなAPIを作った。
http://api.muumoo.jp/texttorss/(好きな言葉)
好きな言葉を渡すと、ムリヤリRSSをでっち上げるAPIです。Yahoo! Pipesで作ったといいつつ自作のプログラムも中で使うなんて、ちょっと反則技?別に目的が達成できればいいよね。このAPI、今後もいろいろ役に立つかも知れない(既に誰か作ってるかも知れないけど)。
入力された言葉をいったんこのAPIに投げてRSSに変換し、そのRSSをBabelFishで翻訳します。
翻訳後、タイトルだけをRegexで翻訳前に戻してPipe Output。
単にサクラエディタの翻訳マクロを作りたかった。そのために、URLで投げてJSONで受け取れる翻訳APIが欲しかった。
今日はもう疲れたので翻訳マクロは作らなくていいや。本末転倒だけど。
新しいYahoo! Pipesの機能を使うように変更しました。上記の仕組みは旧仕様のものです。新しい仕組みについては2007年12月29日の日記を参照。