Microsoft Translate APIを使ってPHPで自動翻訳

2013/07/19

PHPで自動翻訳する方法の紹介

概要

Microsoft Translate APIを使用して、PHPで自動翻訳する方法を紹介します。
文字列を翻訳したい時って、結構ありますよね。
いや、そんなにないですかね?(汗)

私は多言語対応のCMSを作った時に、この自動翻訳処理を実装しました。
自分で翻訳機能が作れたらよいのですが、そうもいかないですよね。
こんな大量の翻訳データなど、一個人じゃそう簡単につくれるものではありません。

そういったときにこの Microsoft Translator APIを活用します。
Microsoft Translator APIを使うことでとても簡単に自動翻訳ができるのです。

Microsoft Translator API v2では、AJAX・HTTP・SOAPの3種類のサービスがあります。
今回はこの中の、HTTPとSOAPのサービスを用いた2パターンを紹介します。

では実際に翻訳処理を作成します。

初めにこれらのAPIを使用する場合には、BingのApplication ID(AppID)を取得する必要があります。
AppIDは以下より取得できます。
Developer Center

また各処理の細かい内容は、こちらからご確認ください。

HTTPによる通信

Microsoft Translator APIのHTTPによる通信では、URLにAppID・翻訳するテキスト・翻訳元の言語・翻訳後の言語をGETで渡して接続するだけです。
Microsoft Translator APIのドキュメントをみると、なにやら難しいことが書いてあり複雑に思うかもしれませんが、実際はこんなに簡単なのです。

以下は、「てすと」という文字列を日本語から英語に翻訳するサンプルコードです。


$url = 'http://api.microsofttranslator.com/V2/soap.svc';
$appid = '[取得したApplicationID]';

$query = array(
	'appId' => $appid,
	'text' => 'てすと',
	'from' => 'ja',
	'to' => 'en'
);
$url = 'http://api.microsofttranslator.com/V2/Http.svc/Translate';

$queryStr = http_build_query($query, '&');

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url . "?" . $queryStr);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
	'X-Http-Method-Override: GET',
));

$response = curl_exec($ch);
echo $response;

SOAPによる通信

次にMicrosoft Translator APIのSOAPによる通信で翻訳を行います。
SOAPはHTTPに比べて、もっと簡単に記述できます。
また、一度に翻訳できる文字数も多くなります。

以下はHTTPサービスのサンプルコードと同様で、「てすと」という文字列を日本語から英語に翻訳するサンプルコードです。


$url = 'http://api.microsofttranslator.com/V2/soap.svc';
$appid = '[取得したApplicationID]';

$query = array(
	'appId' => $appid,
	'text' => 'てすと',
	'from' => 'ja',
	'to' => 'en'
);

$client = new SoapClient($url);
$result = $client->Translate($query); 

echo $result->TranslateResult;

たったこれだけのソースコードを書くだけで翻訳できるんです。
Microsoft Translator APIは本当に簡単ですね。

to及びfromで使用する言語コード一覧

Microsoft Translator APIではISO 639-1の言語コードが使用できます。
ISO 639-1とは、ISO 639言語コードの2文字コードです。

この言語コードは以下となります。

コード言語
isアイスランド語
ayアイマラ語
gaアイルランド語
azアゼルバイジェン語
asアッサム語
aaアファル語
abアプハジア語
afアフリカーンス語
amアムハラ語
arアラビア語
sqアルバニア語
hyアルメニア語
itイタリア語
yiイディッシュ語
iuイヌクティトット語
ikイヌピア語
iaインターリングア (国際語)
ieインターリング語
idインドネシア語
ugウイグル語
cyウェールズ語
voヴォラピュック語
woウォロフ語
ukウクライナ語
uzウズベク語
urウルドゥー語
en英語
etエストニア語
eoエスペラント語
orオーリア語
ocオキタン語
nlオランダ語
omオロモ語 (ガラ語)
kkカザフ語
ksカシミール語
caカタラン語
glガリシア語
ko韓国語
knカンナダ語
kmカンボジア語
rwキヤーワンダ語 (ルアンダ語)
elギリシャ語
kyキルギス語
rnキルンディ語 (ルンディ語)
gnグアラニー語
quクエチュア語
guグジャラト語
klグリーンランド語
kuクルド語
hrクロアチア語
gdゲーリック語 (スコットランド語)
gvゲーリック語 (マン島語)
xhコーサ語
coコルシカ語
smサモア語
sgサングホ語
saサンスクリット語
ssシスワティ語
jvジャワ語
kaジョージア語
snショナ語
sdシンド語
siシンハラ語
svスウェーデン語
suスーダン語
zuズールー語
esスペイン語
skスロヴァキア語
slスロヴェニア語
swスワヒリ語 (キスワヒリ語)
tnセツワナ語
stセト語
srセルビア語
shセルボクロアチア語
soソマリ語
thタイ語
tlタガログ語
tgタジク語
ttタタール語
taタミル語
csチェコ語
tiチグリニャ語
boチベット語
zh-cn中国語 (簡体)
zh-hk中国語 (繁体)
tsヅォンガ語
teテルグ語
daデンマーク語
deドイツ語
twトウィ語
tkトルクメン語
trトルコ語
toトンガ語
naナウル語
ja日本語
neネパール語
noノルウェー語
haハウサ語
be白ロシア語 (ベラルーシ語)
baバシキール語
psパシト語 (パシュトー語)
euバスク語
huハンガリー語
paパンジャビ語
biビスラマ語
bhビハール語
myビルマ語
hiヒンディー語
fjフィジー語
fiフィンランド語
dzブータン語
foフェロー語
frフランス語
fyフリジア語
bgブルガリア語
brブルターニュ語
viベトナム語
heヘブライ語
faペルシャ語
bnベンガル語
plポーランド語
ptポルトガル語
miマオリ語
mkマカドニア語
mgマダガスカル語
mrマラッタ語
mlマラヤーラム語
mtマルタ語
msマレー語
moモルダビア語
mnモンゴル語
yoヨルバ語
loラオタ語
laラテン語
lvラトビア語 (レット語)
ltリトアニア語
lnリンガラ語
liリンブルク語
roルーマニア語
rmレートロマンス語
ruロシア語
Related

Vagrant+Docker+PHP環境で「session.save_path」指定時に、セッションファイルが空になるエラー

ファイル共有でのフォルダの所有者を設定 結論 PHP5.4.28 からセッションファイルのownerはrootもしくはWebサーバのユーザに限るという制限が...

LINEと連携したテイクアウト事前注文システム徹底比較!

目次 テイクアウト予約・注文受付システムのトレンド LINEと連携したテイクアウト事前注文システムの価格表 L.B.B.Cloud テイクイーツ ...

PHPで動画の撮影日を取得

PHPで動画の撮影日を取得 概要 PHPからffprobeコマンドを実行し、動画の撮影日時を取得します。 コード $posted_at = ...

FullCalendarでGoogleカレンダーのようなUIを実装

jQueryプラグインFullCalendarのサンプル 概要 FullCalendarを使用して、GoogleカレンダーのようなUIを実装する使用例を...

PHP Laravel5.2でmulti-auth(複数テーブルでの認証)を実装

Laravel5.2でマルチ認証 概要 LaravelとはPHPの中で今最も伸びているフレームワークです。 処理速度が遅いなどありますが、かなり使い安く拡...

PHP 正規表現でIPアドレス形式の文字列か判定

正規表現でIPアドレスの入力チェック 概要 フォームで入力されたIPアドレスが正当な文字列か判定するためのバリデーション処理を実装します。 基本的...
トップへ戻る