英→日、日→英を自動的に判断して翻訳してくれるYahoo!Pipesとブックマークレット

ブログのネタを探したり、仕事で調べものをしているとちょっと英日/日英の翻訳したいって事があります。そんな時にブックマークレットかなんかで簡単に変換できると便利です。

単語だけであれば、英辞郎の結果を表示するブックマークレットなんかを使っていて、英日/日英の判断を自動的にしてくれてかなり便利です。ですが、別ウィンドウで開いてしまうし、文章には対応していません。

で、API経由で翻訳結果を受け取ってそのまま表示みたいな事はできないかな?と思って調べてみると例のごとくYahoo!PipesのTranslate機能が便利そうで、英日/日英それぞれをAPI化したものもありました。
英語←→日本語の翻訳APIとして使えるYahoo Pipesを作った(管理人日記) - むぅもぉ.jp

で、このPipesを使えばよさそうなんだけど、英辞郎みたいに日本語か英語か勝手に判断して翻訳結果を出してくれるとすさまじく便利だなー、と思ったのでPipes側で対応してみたのがコレ。

Translate EN/JA
Pipes: Transrate EN/JA

strパラメータに調べたい文字列を渡してやると、英→日、日→英を自動的に判断して翻訳結果を返してくれます。

Pipesの解説

ちょっとだけ解説します。

Pipes 条件分岐
strパラメータを受け取った後、「item Builder」でデータを作ります。
そして、1つ目のポイントですが、「split」関数で2つに分岐させています。
これは、英語の場合と、日本語の場合を別々に処理するための布石です。

Pipes 英語の場合と日本語の場合
英語と日本語用に2つに分かれたデータにそれぞれ処理をします。
まず、英日翻訳用の左側データには「Filter」で「ASCII文字意外があったら拒否」という条件を付けました。これは、マルチバイト文字を英日翻訳しても正しい結果が出ないためです。
逆に、日英翻訳用の右側データには「Filter」で「ASCII文字意外があったら許可」という条件を付けました。これは、マルチバイト文字が含まれている場合のみ日英翻訳させるためです。

正反対の条件を付けているため、左側のデータと右側のデータが両方ヒットする事はありません(多分)。ですので、左右のデータをUnionしてやれば完成です。

マルチバイトが含まれているかどうかの判断は下記の正規表現([\x8E\xA1-\xFE])を参考にさせてもらいました。
Perlメモ

翻訳API(Yahoo!Pipes)を使ったBookmarklet

サンプル代わりに簡単なブックマークレットを作ってみました。

Translate

上記リンクをブックマークに登録して下さい。
調べたい文字列を選択した状態で、ブックマークレットを実行すると翻訳結果がAlertで表示されます。英語を選択した場合は日本語訳が、日本語を選択した場合は英語訳が表示されます。

まとめ

APIとして使えますので、ご自由にどうぞ。

同じカテゴリーの記事

このページの一番上に戻る
  • Facebook
  • Twitter
  • Tumblr
  • Instagram
  • miil