コードを書いていて行き詰まった時の解決法やデザインのトレンドなど、Webに関する多くの情報は英語で発信されています。
そのような海外のニュース・ブログなどを定期的に読むような習慣を持てばもうちょっと賢くなれるのではないかと思い、翻訳APIの使い方を調べてみました。
翻訳APIは有料のものが多く(Googleですら有料・・・)、今のところ無料で簡単に使うとすればMicrosoft Translatorが最有力候補になるのではないかと思います。
1ヶ月あたり2,000,000文字までなら無料で使えて精度もまぁまぁ高いです。
普通に使うとちょっとややこしいのとドキュメントが読みづらいので大変なのですが、PHP Wrapper for Microsoft translateというPHPクラスライブラリを使えば簡単に実装することができます。
DEMO(キャッシュなど考慮していないので長い文章だと重い)
ADs
単にGETで翻訳したいテキストを渡すだけです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<div class="module"> <div class="item"> <form action="" method="get"> <h2>テキスト(英語を入れてね)</h2> <textarea name="basetext" id="basetext" cols="30" rows="10"><?php if(isset($_GET['basetext'])){ echo htmlspecialchars($_POST['basetext']); } ?></textarea> <input type="submit" name="submit" value="英文を日本語に翻訳" /> </form> </div> <div class="item"> <h2>翻訳後</h2> <textarea name="transtext" id="transtext" cols="30" rows="10"><?php if(isset($result)){ echo $result; } ?></textarea> </div> </div> |
以下のコードを行頭に書きます。
翻訳結果が$resultという変数に入るので、上記のHTMLのようにechoで出力したりデータベースに保存するなどして使います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
require_once('class/MicrosoftTranslator.class.php'); if(isset($_GET['submit'])){ $text = htmlspecialchars($_GET['basetext']); //文字数長すぎると通らないので分割 $textArr = str_split(strip_tags($text), 100); $result = ''; foreach($textArr as $val){ $translator = new MicrosoftTranslator('Windows Azure MarketPlaceのアプリケーションキー'); $translator->translate('en','ja',$val); //英語を日本語に翻訳する //JSONで結果とレスポンスが取得できる $response = json_decode($translator->response->jsonResponse); //stringというタグでマークアップされているので削除 $result .= str_replace(array('<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">','</string>'),'',$response->translation); } } |
実質5行程度で翻訳サービスができました!
機械翻訳ではどうがんばっても自然な日本語にはなりませんが、概要を把握する助けにはなると思います。
たとえば気になる海外のニュースサイトのRSSを取得して翻訳してからRSSのフォーマットで出力するようなスクリプトを書けば、英文のニュースでも概要を把握できて情報通になれる・・・かもしれません。
ADs
このデザインかっこいーです