Microsoftから、テキストをさまざまな言語に翻訳するAPIが公開されています。
このAPIは2017年4月から大きく仕様が変わり、トークンの取得までが以前と全く違う方法になりました。ここでは、できるだけ細かく、PHPでのトークン取得方法~プログラム作成まで解説していきます。
スポンサーリンクMicrosoft Azure へのサインアップ
https://azure.microsoft.com/ja-jp/
最初に、ここからAzureに登録してください。クレジットカードが必要となるかもしれませんが、無料サービスのみを使っていれば、お金がかかることはありません。(間違って課金されてしまっても責任は負いません。)
2017年7月の段階では、初めてAzureにサインアップしたときに、試用のために、2万円ほどのポイントがもらえますが、私は1円分も使わず、試用期間が終わってしまいました(泣)。無料の翻訳サービスを使うだけなのに、試用期間を溶かしてしまいましたが、他に利用したいサービスがあれば、試用してみてもいいんじゃないかと思います。
APIキーの取得
から、ポータルに入ります。
そうすると、左上に+ボタンがあるので、それを押し、「trans」まで入力します。候補にTranslator Text APIが出てくるので、それを押し、作成します。
このような画面になるので、お好きなように入力してください。価格レベルは、ここでは無料の「F0」を選んでおきます。これで、課金されることはないと思います。
作成が完了しましたら、
左側からKeysを選択します。
そうすると、キーが得られます。
スポンサーリンクPHPでの翻訳プログラム
あとは、アクセストークンを取得して、翻訳するだけです。アクセストークンの取得方法は、英語の文献にいろいろ書いてあったので、詳しく知りたい方は見てみてください。
http://docs.microsofttranslator.com/text-translate.html
すぐに動かせるサンプルを作成したので、参考にどうぞ。「APIキーを入力」のところは、自分で取得したキーで置き換えてください。
<!DOCTYPE html>
<?php
$japanese = "";
$english = "";
if(isset($_POST["japanese"])){
$japanese = $_POST["japanese"];
$url = 'https://api.cognitive.microsoft.com/sts/v1.0/issueToken';
$header = array(
"Content-Type: application/x-www-form-urlencoded",
"Accept: application/jwt",
"Content-Length: 0",
'Ocp-Apim-Subscription-Key: APIキーを入力'//Microsoft AzureのTranslator Text APIにて取得したキーを入力してください。Microsoftに月額を払わずに運営したい場合、月に最大200万文字だけ翻訳することができます。(2017年7月時点)
);
$context = array(
"http" => array(
"method" => "POST",
"header" => implode("rn", $header)
));
$token = file_get_contents($url, false, stream_context_create($context));//アクセストークンを取得します。10分間のみ有効です。
$key = "Bearer%20". $token;
$text = $_POST["japanese"];
$url = "https://api.microsofttranslator.com/v2/http.svc/Translate";
$data = "?appid=".$key."&text=".$text."&to=en";
$english = file_get_contents($url.$data);//翻訳を実行します。
$english = preg_replace('/<("[^"]*"|'[^']*'|[^'">])*>/','',$english);//タグの除去を正規表現により行います。
};
?>
<html>
<head>
</head>
<body>
<form action="" method="post">
<p>日本語を入力してください。</p>
<textarea name="japanese" rows="5" cols="50"><?php echo $japanese; ?></textarea>
<p>翻訳結果</p>
<textarea rows="5" cols="50"><?php echo $english; ?></textarea>
<input type="submit" value="翻訳">
</form>
</body>
</html>
これを自分のサーバーの適当なところに、phpファイルとして保存します。それから、このphpファイルにアクセスしてみてください。
念のため、APIサンプルの実演を公開しておきます。月に最大200万文字までしか無料では使えないため、それを超えると、その月は公開終了とさせていただきます。
http://exe.tanidaiz.com/microsofttrans/
https://github.com/MicrosoftTranslator
このMicrosoftのサイトにも、多くのサンプルがあるので、参考にするといいかもしれません。
ご健闘を祈ります。