サイトでユーザーが入力したデータを翻訳する必要がある場合があります(サイトで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 ;
}
}
この投稿が、オンライン翻訳者を自分のアプリケーションに接続することに決めた人に役立つことを願っています。