Старт
This commit is contained in:
229
monitoring/translation_api.php
Normal file
229
monitoring/translation_api.php
Normal file
@ -0,0 +1,229 @@
|
||||
<!DOCTYPE html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Key</title>
|
||||
<script>
|
||||
|
||||
/*if (location.protocol != 'https:')
|
||||
{
|
||||
location.href = 'https:' + window.location.href.substring(window.location.protocol.length);
|
||||
}*/
|
||||
|
||||
function getXmlHttp()
|
||||
{
|
||||
try {
|
||||
return new ActiveXObject("Msxml2.XMLHTTP");
|
||||
} catch (e) {
|
||||
try {
|
||||
return new ActiveXObject("Microsoft.XMLHTTP");
|
||||
} catch (ee) {
|
||||
}
|
||||
}
|
||||
if (typeof XMLHttpRequest!='undefined') {
|
||||
return new XMLHttpRequest();
|
||||
}
|
||||
}
|
||||
|
||||
function Request()
|
||||
{
|
||||
let data={
|
||||
sourceLanguageCode: "ru",
|
||||
targetLanguageCode: "en",
|
||||
texts: ["Книга"]
|
||||
};
|
||||
|
||||
let xmlhttp = getXmlHttp();
|
||||
xmlhttp.onreadystatechange = function(xmlhttp)
|
||||
{
|
||||
return function()
|
||||
{
|
||||
if (xmlhttp.readyState == 4)
|
||||
{
|
||||
alert(xmlhttp.responseText);
|
||||
}
|
||||
}
|
||||
}(xmlhttp);
|
||||
xmlhttp.open("POST",'https://translate.api.cloud.yandex.net/translate/v2/translate',true);
|
||||
|
||||
alert(JSON.stringify(data));
|
||||
xmlhttp.send(JSON.stringify(data));
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
Перевожу:<br>
|
||||
<?php
|
||||
//Пытаюсь перевести недостающие слова с русского на английски если перевода нет (к слову приписываю признак автоматического перевода)
|
||||
|
||||
require_once("./config.php");
|
||||
require_once("../resources/metadata/include/tools.php");
|
||||
/*
|
||||
//Для того чтобы отсылать в ГУГЕЛ нужно авторизоваться! Делаю это по инструкции из: https://usefulangle.com/post/9/google-login-api-with-php-curl
|
||||
$clientId = "232776754177";
|
||||
$clientSecret = "AIzaSyAOtc8E9Yg0O1uuZ_0EMYgqFP7W3p_0LGI";
|
||||
$clientRedirectURL = "http://127.0.0.1";
|
||||
$login_url = 'https://accounts.google.com/o/oauth2/v2/auth?scope=' . urlencode('https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/cloud-translation') . '&redirect_uri=' . urlencode($clientRedirectURL) . '&response_type=code&client_id=' . $clientId . '&access_type=online';
|
||||
|
||||
if (!isset($_GET['code'])){
|
||||
header("location: $login_url");
|
||||
} else {
|
||||
$code = filter_var($_GET['code'], FILTER_SANITIZE_STRING);
|
||||
$curlGet = '?client_id=' . $clientId . '&redirect_uri=' . $clientRedirectURL . '&client_secret=' . $clientSecret . '&code='. $code . '&grant_type=authorization_code';
|
||||
$url = 'https://www.googleapis.com/oauth2/v4/token' . $curlGet;
|
||||
|
||||
$ch = curl_init($url);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||||
curl_setopt($ch, CURLOPT_POST, 1);
|
||||
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
|
||||
$data = curl_exec($ch);
|
||||
$data = json_decode($data, true);
|
||||
curl_close($ch);
|
||||
|
||||
$accessToken = $data['access_token'];
|
||||
$apiKey = "AIzaSyAOtc8E9Yg0O1uuZ_0EMYgqFP7W3p_0LGI";
|
||||
$projectID = "232776754177";
|
||||
|
||||
$target = "https://translation.googleapis.com/v3/projects/$projectID:translateText?key=$apiKey";
|
||||
|
||||
$headers = array(
|
||||
"Content-Type: application/json; charset=utf-8",
|
||||
"Authorization: Bearer " . $accessToken,
|
||||
"x-goog-encode-response-if-executable: base64",
|
||||
"Accept-language: en-US,en;q=0.9,es;q=0.8"
|
||||
);
|
||||
|
||||
$requestBody = array();
|
||||
$requestBody['sourceLanguageCode'] = "en";
|
||||
$requestBody['targetLanguageCode'] = "pt";
|
||||
$requestBody['contents'] = array("So, I guess this thing works?");
|
||||
$requestBody['mimeType'] = "text/plain";
|
||||
|
||||
$ch = curl_init($target);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($ch, CURLOPT_POST, true);
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($requestBody));
|
||||
$data = curl_exec($ch);
|
||||
|
||||
curl_close($ch);
|
||||
echo $data;
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
$db=connectToDB();
|
||||
$db->exec("SET NAMES 'UTF8';");
|
||||
|
||||
$sql="select identifier from main._translations where del=false group by identifier";
|
||||
|
||||
$res = NULL;
|
||||
try
|
||||
{
|
||||
$res = $db->query($sql);
|
||||
}catch (Exception $e)
|
||||
{
|
||||
echo $e->getMessage();
|
||||
}
|
||||
if($res!=NULL && $res->rowCount()>0) {
|
||||
while ($row = $res->fetch(PDO::FETCH_NUM)) {
|
||||
//Выбираю перевод на русском
|
||||
$type="NULL";
|
||||
$translate="";
|
||||
$sql="select translation,type from main._translations where identifier='".$row[0]."' and language_id=(select id from main._languages where short_name='ru');";
|
||||
$res2 = NULL;
|
||||
try
|
||||
{
|
||||
$res2 = $db->query($sql);
|
||||
}catch (Exception $e)
|
||||
{
|
||||
echo $e->getMessage();
|
||||
}
|
||||
if($res2!=NULL && $res2->rowCount()>0) {
|
||||
while ($row2 = $res2->fetch(PDO::FETCH_NUM)) {
|
||||
$translate=$row2[0];
|
||||
if($row2[1]===true) $type='true';
|
||||
if($row2[1]===false) $type='false';
|
||||
}
|
||||
}
|
||||
if($translate!=''){
|
||||
$sql="select l.*,(select translation from main._translations t where t.del=false and t.language_id=l.id and identifier='".$row[0]."' limit 1) as translation from main._languages l where l.del=false;";
|
||||
$res3 = NULL;
|
||||
try
|
||||
{
|
||||
$res3 = $db->query($sql);
|
||||
}catch (Exception $e)
|
||||
{
|
||||
echo $e->getMessage();
|
||||
}
|
||||
if($res3!=NULL && $res3->rowCount()>0) {
|
||||
while ($row3 = $res3->fetch(PDO::FETCH_ASSOC)) {
|
||||
//$translate=$row3[0];
|
||||
if($row3['translation']==''){ //Если не переведён то пытаюсь перевести
|
||||
|
||||
echo 'short_name='.$row3['short_name'].' identifier='.$row[0].' text='.$translate.'<br>';
|
||||
|
||||
$myObj = new stdClass();
|
||||
$myObj->target = $row3['short_name'];
|
||||
$myObj->q = array($translate);
|
||||
$json=json_encode($myObj);
|
||||
//$json='{"q": ["Hello world", "My name is Jeff"], "target": "de"}';
|
||||
echo $json."<br>";
|
||||
$json=getURLText("https://translation.googleapis.com/language/translate/v2?key=AIzaSyAOtc8E9Yg0O1uuZ_0EMYgqFP7W3p_0LGI",$json);
|
||||
echo $json;
|
||||
echo "<br>";
|
||||
/*
|
||||
$myObj = new stdClass();
|
||||
$myObj->sourceLanguageCode = "ru";
|
||||
$myObj->targetLanguageCode = $row3['short_name'];
|
||||
$myObj->contents = array($translate);
|
||||
$json=json_encode($myObj);
|
||||
$json='{"sourceLanguageCode": "en","targetLanguageCode": "ru","contents": ["Dr. Watson, come here!", "Bring me some coffee!"]}';
|
||||
echo getURLText("https://translation.googleapis.com/v3/projects/AIzaSyAOtc8E9Yg0O1uuZ_0EMYgqFP7W3p_0LGI:translateText",$json);
|
||||
*/
|
||||
|
||||
$myObj=json_decode($json); //{ "data": { "translations": [ { "translatedText": "km / h", "detectedSourceLanguage": "bg" } ] } }
|
||||
|
||||
if(!property_exists($myObj,'error')) {
|
||||
echo '<br>';
|
||||
|
||||
$sql = "insert into main._translations(language_id,identifier,translation,type,auto)values(" . $row3['id'] . ",'" . $row[0] . "','" . addslashes($myObj->data->translations[0]->translatedText) . "',$type,true);";
|
||||
echo $sql . '<br>';
|
||||
try
|
||||
{
|
||||
$db->query($sql);
|
||||
}catch (Exception $e)
|
||||
{
|
||||
echo $e->getMessage();
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
//http://translate.google.com/translate_a/t?client=x&text=hello&sl=en&tl=ru
|
||||
//Если есть перевод с Русского то переводим с него если нет то с Английского
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
?>
|
||||
|
||||
<h2>Генерация</h2>
|
||||
<table>
|
||||
<tr><td>Параметр</td><td><input id="data" type="text" size="30" value="012345678912"></td></tr>
|
||||
<tr><td></td><td style="text-align: right;"><button onclick="Request();">Отправить</button></td></tr>
|
||||
</table>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user