アプリケーションでMicrosoft Bing Translator APIを使用する

こんにちは



サイトでユーザーが入力したデータを翻訳する必要がある場合があります(サイトでCNCを生成するため、多言語コンテンツなどを使用するため)。 現在、Google Translate APIは金銭のみで利用できるため、Bing Translator APIを使用して問題を解決できます。



公式のMicrosoft Webサイトには、使用方法が記載されています( http://msdn.microsoft.com/en-us/library/dd576287.aspx、http://www.microsoft.com/web/post/using-the-free-bing -translation-apis )、しかし、私の意見では、それらは非常に混乱し、冗長であるため、サービスを接続して使用するための簡単なアルゴリズムを説明します。



Microsoftサービスを使用するには、通常、Windows Live IDが必要です。 以前は、Bing Translator APIを使用するには、アプリケーションのBingアプリIDをhttps://ssl.bing.com/webmaster/developers/appids.aspxに登録して取得するだけで十分でした。 現在、このメカニズムは廃止されたと見なされ、サポートされなくなりました



現時点では、アプリケーションでトランスレーターAPIを使用するには、以下を実行します



1. Windows Live IDを取得します( https://accountservices.passport.net/reg.srfに登録することにより)



2. datamarket.azure.comでライブIDにログインして登録し、[データ]セクションで[Microsoft Translator]を選択します。 右側に、関税のリストがあります。最低料金の関税が必要です。それを購読します(サインアップ)。



3. 「アプリケーション」セクションに移動して、新しいアプリケーションを登録します。 クライアントIDは任意に入力します。クライアントシークレットは既に生成されています。 リダイレクトURIはanyを指定しますが、使用されません。



4.これで使用を開始できます。 APIを使用する一般的な概念は次のとおりです。 クライアントはhttpsを使用してMicrosoft OAuthサービスにアクセスし、そのclient_idとclient_secretをPOSTリクエストで渡します。 応答は、access_tokenフィールドがあるjsonシリアル化されたオブジェクトを返します。 トークンは10分間有効であるため、再度要求する必要があります。

access_tokenを受信した後、トークンで署名することにより、翻訳者にGETリクエストを送信できます。 署名する1つの方法は、getItパラメーターappId = Bearer TOKEN_VALUEを(スペースとともに)渡すことです。 同じgetリクエストで、転送する必要があるデータが送信されます。 成功した場合、応答は翻訳された文字列です。



テキストを翻訳するphpクラスの例を挙げます。



<?php

クラス Translate {



保護された$ msData $ accessToken ;



public function __construct $ msData { // client_idとclient_secretはmsdata配列に保存されます

$ this- > msData = $ msData ;

$ this- > initAccessToken ;

}



保護された関数 initAccessToken { // accessTokenを取得

$ curl = curl_init " datamarket.accesscontrol.windows.net/v2/OAuth2-13/" ;

curl_setopt_array $ curl 配列

CURLOPT_POST => true //トークンを受信するためのPOSTリクエストを生成します

CURLOPT_POSTFIELDS => http_build_query array

'client_id' => $ this- > msData [ 'clientid' ]

'client_secret' => $ this- > msData [ 'clientsecret' ]

'scope' => 'http://api.microsofttranslator.com'、// この値はドキュメントで指定されています

'grant_type' => "client_credentials" //この値はドキュメントで指定されています



CURLOPT_SSL_VERIFYPEER => false

CURLOPT_RETURNTRANSFER => true

;

$応答 = curl_exec $カール ;

$ err = curl_errno $ curl ;

if $ err

新しい例外をスロー "curl err $ err " ;

$ r_obj = json_decode $ response ;

if isset $ r_obj

新しい例外をスロー 「不正な応答: $応答 ;

$ this- > accessToken = $ r_obj- > access_token ;

}



public function translate $ text $ lang_to $ lang_from {

$ query_arr = array

'appId' => 'ベアラー' $ this- > accessToken

'text' => $ text

'from' => $ lang_from

'to' => $ lang_to

'contentType' => 'text / plain'

;

$ query = http_build_query $ query_arr ;

$ url = 'http://api.microsofttranslator.com/V2/Http.svc/Translate? $クエリ ;

$ curl = curl_init $ url ;

curl_setopt $ curl CURLOPT_RETURNTRANSFER 1 ;

$応答 = curl_exec $カール ;

$ err = curl_errno $ curl ;

if $ err

新しい例外をスロー "curl err $ err " ;

$ xml = new SimpleXMLElement $ response ; // xml応答から翻訳文字列を取得します

return string $ xml ;

}

}




この投稿が、オンライン翻訳者を自分のアプリケーションに接続することに決めた人に役立つことを願っています。



All Articles