Microsoft Translator Text API の使い方 @ PHP


Microsoftから、テキストをさまざまな言語に翻訳するAPIが公開されています。

このAPIは2017年4月から大きく仕様が変わり、トークンの取得までが以前と全く違う方法になりました。ここでは、できるだけ細かく、PHPでのトークン取得方法~プログラム作成まで解説していきます。

スポンサーリンク

Microsoft Azure へのサインアップ

https://azure.microsoft.com/ja-jp/

最初に、ここからAzureに登録してください。クレジットカードが必要となるかもしれませんが、無料サービスのみを使っていれば、お金がかかることはありません。(間違って課金されてしまっても責任は負いません。)

2017年7月の段階では、初めてAzureにサインアップしたときに、試用のために、2万円ほどのポイントがもらえますが、私は1円分も使わず、試用期間が終わってしまいました(泣)。無料の翻訳サービスを使うだけなのに、試用期間を溶かしてしまいましたが、他に利用したいサービスがあれば、試用してみてもいいんじゃないかと思います。

APIキーの取得

https://portal.azure.com/

から、ポータルに入ります。

そうすると、左上に+ボタンがあるので、それを押し、「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("\r\n", $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のサイトにも、多くのサンプルがあるので、参考にするといいかもしれません。

ご健闘を祈ります。