アプリケーションで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 ;
}
}


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

Source: https://habr.com/ru/post/J143323/


All Articles