-
Notifications
You must be signed in to change notification settings - Fork 0
/
translate.class.php
84 lines (44 loc) · 2.15 KB
/
translate.class.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<?php
class BingTranslator {
private $_client_id = '';
private $_client_secret = '';
private $_grant_type = 'client_credentials';
private $_scope_url = 'http://api.microsofttranslator.com';
public function __construct($clientID, $clientSecret) {
$this->_client_id = $clientID;
$this->_client_secret = $clientSecret;
}
public function getResponse($url) {
$curlHandler = curl_init();
curl_setopt($curlHandler, CURLOPT_URL, $url);
curl_setopt($curlHandler, CURLOPT_HTTPHEADER, array('Authorization: Bearer '.$this->getToken(), 'Content-Type: text/xml'));
curl_setopt($curlHandler, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curlHandler, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($curlHandler);
curl_close($curlHandler);
return $response;
}
public function getToken($clientID = '', $clientSecret = '') {
$clientID = (trim($clientID) === '') ? $this->_client_id : $clientID;
$clientSecret = (trim($clientSecret) === '') ? $this->_client_secret : $clientSecret;
$curlHandler = curl_init();
$request = 'grant_type='.urlencode($this->_grant_type).'&scope='.urlencode($this->_scope_url).'&client_id='.urlencode($clientID).'&client_secret='.urlencode($clientSecret);
curl_setopt($curlHandler, CURLOPT_URL, 'https://datamarket.accesscontrol.windows.net/v2/OAuth2-13/');
curl_setopt($curlHandler, CURLOPT_POST, true);
curl_setopt($curlHandler, CURLOPT_POSTFIELDS, $request);
curl_setopt($curlHandler, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curlHandler, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($curlHandler);
curl_close($curlHandler);
$responseObject = json_decode($response);
return $responseObject->access_token;
}
public function getTranslation($fromLanguage, $toLanguage, $text) {
$response = $this->getResponse($this->getURL($fromLanguage, $toLanguage, $text));
return strip_tags($response);
}
public function getURL($fromLanguage, $toLanguage, $text) {
return 'http://api.microsofttranslator.com/v2/Http.svc/Translate?text='.urlencode($text).'&to='.$toLanguage.'&from='.$fromLanguage;
}
}
?>