Microsoftの翻訳サービスであるTranslator v3をPHP7.4 + cURLから使用する方法を紹介する。Translatorは無料プランの場合、月200万文字まで使える。
Translatorリソースの準備
Microsoft Azure (https://portal.azure.com/#home)にアクセスする。アカウントが必要。
リソースの作成を選択する
translatorを選択する
作成を選択する
初めての場合はリソースグループを新規作成する。ここではresource1と名付けて作成した。
リージョンと価格を選択する。ここではJapan East、Free F0 (無料プラン)を選択した。名前はTranslatorであることが分かる名称を適当に付ける。例) Translator123
他はデフォルトのまま作成ボタンを選択する。
これでTranslatorリソースの準備は完了
Translatorのキーとリージョンの確認
トップページからTranslatorリソースを選択し、下記の画面で「キーとエンドポイント」を選択し、キー1(キー2でもよい)と場所/地域の値を確認する。この情報でTranslatorリソースに接続する。
コマンドラインからの動作確認
公式ドキュメント(https://learn.microsoft.com/ja-jp/azure/cognitive-services/translator/reference/v3-0-translate)を参考にコマンドラインから動作確認をする。
下記コマンドの YOUR-KEY には キー1 もしくは キー2 の値を入力する。YOUR-REGION には 場所/地域 の値を入力する。
$ curl -X POST "https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&from=en&to=ja" -H "Ocp-Apim-Subscription-Key: YOUR-KEY" -H "Ocp-Apim-Subscription-Region: YOUR-REGION" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'Hello, what is your name?'}]"
次のように応答が返ってくれば成功。
[{"translations":[{"text":"こんにちは、あなたの名前は何ですか?","to":"ja"}]}]%
PHP7.4 + cURLからTranslator v3を使用する
基本的には上記のコマンドラインをcURLでの使い方に置き換えるだけ
// cURLの初期化
$ch = curl_init();
// キーとリージョンの指定
$key = "YOUR-KEY";
$region = "YOUR-REGION";
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"Ocp-Apim-Subscription-Key: " . $key,
"Ocp-Apim-Subscription-Region: " . $region,
"Content-Type: application/json; charset=UTF-8"
));
// URLと翻訳言語の指定
$from = 'en';
$to = 'ja';
$url = "https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&from=".$from."&to=".$to;
curl_setopt($ch, CURLOPT_URL, $url);
// 翻訳テキストの指定
// json_encodeには角カッコ2つのデータを渡してJSON配列を作る点に注意
$text = "Hello, what is your name?";
$json = json_encode([['Text' => $text]]);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 送信と応答
$result = curl_exec($ch);
// レスポンスをデコード
$decode = json_decode($result);
// エラーチェック
if (isset($decode->error)) {
throw new Exception("翻訳に失敗しました。code:". $decode->error->code . " message:" . $decode->error->message);
}
// 翻訳結果表示
echo $decode[0]->translations[0]->text;
次のように翻訳結果が表示される
こんにちは、あなたの名前は何ですか?
以上