I've registered with Azure Marketplace, I have a client ID and a client "secret", but everything I've tried so far nonetheless results in a "400 Bad Request" error. Thanks very much!
Here is a rather basic sample of the code I've been trying (I've redacted the Client ID and Secret Value). I'm operating with the understanding that the post variables can be passed through the URL request... I hope that's 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);
LibreTranslate - Free and Open Source Machine Translation API.
Open an English language article, and then right-click anywhere in the text of the article. Click Translate with Bing or Translate with Live Search. You receive a page that resembles the following in the Bing Translator. You may select another language by clicking Translate on the Language menu.
Text Translation. Translator, part of Azure Cognitive Services, is a cloud-based machine translation service that can be used to build applications, websites, tools, or any solution requiring multi-language support.
Bing is better to translate, but you don't have these functions from Google Translate. Bing is better in between popular language, like french-english, french-spanish, english-spanish. It works better to translate question. Google and Bing need to add a function to say that the phrase is wrong.
I have createde little PHP class that is easy to use and easy to integrate to any PHP project. You can find it here. This is 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;
}
}
?>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With