PHP and Bing Translation APIs

Does anyone have a sample PHP code on how to use the Microsoft Bing Translation API with their new token request system? I registered at the Azure Marketplace, I have a client identifier and a client "secret", but everything that I have tried so far, nonetheless, leads to the error "400 Bad Request". Many thanks!

Here is a fairly simple example of the code I tried (I edited the client ID and secret value). I work with the understanding that mail variables can be passed through a URL request ... I hope this is correct.

$authURL = 'http://datamarket.accesscontrol.windows.net/v2/OAuth2-13&grant_type=client_credentials&client_id={CLIENT_ID VALUE HERE}&client_secret={CLIENT_SECRET VALUE HERE}&scope=http://api.microsofttranslator.com'; $chpre = curl_init(); curl_setopt($chpre, CURLOPT_URL, $authURL ); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); $xpre = curl_exec($chpre); $texttobetranslated = "الذي تقدمه"; $BingURL = "http://api.microsofttranslator.com/v2/Http.svc/Translate?text=" . $texttobetranslated . "&from=ar&to=en"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $BingURL ); $x = curl_exec($ch); 
+6
source share
4 answers

Why aren't you trying to implement the implementation https://code.google.com/p/micrsoft-translator-php-wrapper/

Demo is at http://renjith.co.in/translate/

+8
source

I created a small PHP class that is easy to use and easily integrates into any PHP project. You can find it here . This is the code:

  <?php class BingTranslation { public $clientID; public $clientSecret; public function __construct($cid, $secret) { $this->clientID = $cid; $this->clientSecret = $secret; } public function get_access_token() { //if access token is not expired and is stored in COOKIE if(isset($_COOKIE['bing_access_token'])) return $_COOKIE['bing_access_token']; // Get a 10-minute access token for Microsoft Translator API. $url = 'https://datamarket.accesscontrol.windows.net/v2/OAuth2-13'; $postParams = 'grant_type=client_credentials&client_id='.urlencode($this->clientID). '&client_secret='.urlencode($this->clientSecret).'&scope=http://api.microsofttranslator.com'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POSTFIELDS, $postParams); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); $rsp = curl_exec($ch); $rsp = json_decode($rsp); $access_token = $rsp->access_token; setcookie('bing_access_token', $access_token, $rsp->expires_in); return $access_token; } public function translate($word, $from, $to) { $access_token = $this->get_access_token(); $url = 'http://api.microsofttranslator.com/V2/Http.svc/Translate?text='.$word.'&from='.$from.'&to='.$to; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization:bearer '.$access_token)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); $rsp = curl_exec($ch); preg_match_all('/<string (.*?)>(.*?)<\/string>/s', $rsp, $matches); return $matches[2][0]; } public function translate2($word, $from, $tos) { //translates 1 word to several languages //$tos is array of languages to translate to //returns array of translations as $result['en']=>'Hello' $access_token = $this->get_access_token(); $result[$from] = $word; foreach($tos as $to) { $url = 'http://api.microsofttranslator.com/V2/Http.svc/Translate?text=hello&from='.$from.'&to='.$to; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization:bearer '.$access_token)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); $rsp = curl_exec($ch); preg_match_all('/<string (.*?)>(.*?)<\/string>/s', $rsp, $matches); $result[$to] = $matches[2][0]; } return $result; } } ?> 
+6
source

this solution worked pretty well for me:

Using BING Translator (version 2) from PHP

The message says that CURL must be installed and run on the server.

Cheers, Sven

+1
source

Please put this code in your header part. It works perfect for me .. enjoy it

 <div id='MicrosoftTranslatorWidget' class='Light' style='color:white;background-color:#555555'></div> <script type='text/javascript'> setTimeout(function(){{ var s=document.createElement('script'); s.type='text/javascript'; s.charset='UTF-8'; s.src=((location && location.href && location.href.indexOf('https') == 0)?'https://ssl.microsofttranslator.com':'http://www.microsofttranslator.com')+'/ajax/v3/WidgetV3.ashx?siteData=ueOIGRSKkd965FeEGM5JtQ**&ctf=False&ui=true&settings=Manual&from='; var p=document.getElementsByTagName('head')[0]||document.documentElement; p.insertBefore(s,p.firstChild); }},0); </script> 
0
source

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


All Articles