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
また各処理の細かい内容は、こちらからご確認ください。
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;
次に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は本当に簡単ですね。
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 | ロシア語 |