/** * @param $rawValue * * @return array */ protected function _decode($rawValue) { $all_args = func_get_args(); if (is_string($rawValue)) { $all_args[0] = json_decode($all_args[0], true); $decoded = json_decode($rawValue, true); if ($all_args[2] == 'ping_url') { if (!isset($decoded['status']) && !isset($decoded['error'])) { $decoded = array('error' => array("message" => "Connection Failed. Please contact IPTranslator support", 'code' => -1)); } elseif (isset($decoded['error'])) { $decoded = array('error' => array("message" => $decoded['description'], 'code' => -2)); } else { return array(); //All right } } else { preg_match('#<source>(.*)</source>#', $decoded['xliff'][0], $translated_text); $decoded = array('data' => array("translations" => array(array('translatedText' => $this->_resetSpecialStrings($translated_text[1]))))); } } else { $decoded = $rawValue; // already decoded in case of error } $mt_result = new Engines_Results_MT($decoded); if ($mt_result->error->code < 0) { $mt_result = $mt_result->get_as_array(); $mt_result['error'] = (array) $mt_result['error']; return $mt_result; } preg_match('#<source>(.*)</source>#', $all_args[1]['input'][0], $original_text); $mt_match_res = new Engines_Results_MyMemory_Matches($this->_resetSpecialStrings($original_text[1]), $mt_result->translatedText, 100 - $this->getPenalty() . "%", "MT-" . $this->getName(), date("Y-m-d")); $mt_res = $mt_match_res->get_as_array(); return $mt_res; }
/** * @param $rawValue * * @return array */ protected function _decode($rawValue) { $all_args = func_get_args(); if (is_string($rawValue)) { $original = json_decode($all_args[1]["data"], true); $decoded = json_decode($rawValue, true); $decoded = array('data' => array("translations" => array(array('translatedText' => $this->_resetSpecialStrings($decoded["text"]))))); } else { $decoded = $rawValue; // already decoded in case of error } $mt_result = new Engines_Results_MT($decoded); if ($mt_result->error->code < 0) { $mt_result = $mt_result->get_as_array(); $mt_result['error'] = (array) $mt_result['error']; return $mt_result; } $mt_match_res = new Engines_Results_MyMemory_Matches($this->_preserveSpecialStrings($original["text"]), $mt_result->translatedText, 100 - $this->getPenalty() . "%", "MT-" . $this->getName(), date("Y-m-d")); $mt_res = $mt_match_res->get_as_array(); return $mt_res; }
/** * @param $rawValue * * @return array */ protected function _decode($rawValue) { $all_args = func_get_args(); if (is_string($rawValue)) { $decoded = json_decode($rawValue, true); $decoded['data']['translations'][0]['translatedText'] = $this->_resetSpecialStrings($decoded['data']['translations'][0]['translatedText']); } else { $decoded = $rawValue; // already decoded in case of error } $mt_result = new Engines_Results_MT($decoded); if ($mt_result->error->code < 0) { $mt_result = $mt_result->get_as_array(); $mt_result['error'] = (array) $mt_result['error']; return $mt_result; } $mt_match_res = new Engines_Results_MyMemory_Matches($this->_resetSpecialStrings($all_args[1]['q']), $mt_result->translatedText, 100 - $this->getPenalty() . "%", "MT-" . $this->getName(), date("Y-m-d")); $mt_res = $mt_match_res->get_as_array(); $mt_res['sentence_confidence'] = $mt_result->sentence_confidence; //can be null return $mt_res; }
protected function _decode($rawValue) { $all_args = func_get_args(); $xmlObj = simplexml_load_string($rawValue, 'SimpleXMLElement', LIBXML_NOENT); foreach ((array) $xmlObj[0] as $key => $val) { if ($key === 'body') { //WHY IN THIS STUPID LANGUAGE EVERY STRING EQUALS TO ZERO???...... $error = (array) $val; $decoded = array('error' => array("message" => $error['h1'] . ": " . $error['p'][2], 'code' => -1)); break; } else { $decoded = array('data' => array("translations" => array(array('translatedText' => $this->_resetSpecialStrings(html_entity_decode($val, ENT_QUOTES | 16)))))); } } $mt_result = new Engines_Results_MT($decoded); if ($mt_result->error->code < 0) { $mt_result = $mt_result->get_as_array(); $mt_result['error'] = (array) $mt_result['error']; return $mt_result; } $mt_match_res = new Engines_Results_MyMemory_Matches($this->_resetSpecialStrings($all_args[1]['text']), $mt_result->translatedText, 100 - $this->getPenalty() . "%", "MT-" . $this->getName(), date("Y-m-d")); return $mt_match_res->get_as_array(); }
/** * @param $rawValue * * @return array */ protected function _decode($rawValue) { $all_args = func_get_args(); if (is_string($rawValue)) { $parsed = json_decode($rawValue, true); if (!empty($parsed['translation'])) { // this is a response from a translate request if ($this->use_qe && floatval($parsed['qualityEstimate']) < $this->minimum_qe) { $mt_result = array('error' => array('code' => -3001, 'message' => 'Translation QE score below treshold')); return $mt_result; } $decoded = array('data' => array("translations" => array(array('translatedText' => $this->_resetSpecialStrings($parsed['translation']))))); $mt_result = new Engines_Results_MT($decoded); if ($mt_result->error->code < 0) { $mt_result = $mt_result->get_as_array(); $mt_result['error'] = (array) $mt_result['error']; return $mt_result; } $mt_match_res = new Engines_Results_MyMemory_Matches($this->_resetSpecialStrings($all_args[1]['text']), $mt_result->translatedText, 100 - $this->getPenalty() . "%", "MT-" . $this->getName(), date("Y-m-d")); $mt_res = $mt_match_res->get_as_array(); $mt_res['sentence_confidence'] = $mt_result->sentence_confidence; //can be null return $mt_res; } elseif (!empty($parsed['System'])) { // this is a response from a getSystemList request $decoded = array(); foreach ($parsed['System'] as $systemData) { $statusName = ""; $status = ""; foreach ($systemData['Metadata'] as $value) { if ($value['Key'] === 'status') { $status = $value['Value']; switch ($status) { case "running": $statusName = "Running"; break; case "queuingtransl": $statusName = "Queuing"; break; case "notstarted": $statusName = "Not Started"; break; case "nottrained": $statusName = "Not Trained"; break; case "error": $statusName = "Not Trained"; break; case "training": $statusName = "Training"; break; case "standby": $statusName = "Standby"; break; default: $statusName = $value['Value']; break; } break; } } $systemName = sprintf('%s (%s)', $systemData['Title']['Text'], $statusName); $systemMetadata = array('source-language-code' => $systemData['SourceLanguage']['Code'], 'target-language-code' => $systemData['TargetLanguage']['Code'], 'source-language-name' => $systemData['SourceLanguage']['Name']['Text'], 'target-language-name' => $systemData['TargetLanguage']['Name']['Text'], 'status' => $status); $decoded[$systemData['ID']] = array('name' => $systemName, 'metadata' => $systemMetadata); } asort($decoded); return $decoded; } elseif (!empty($parsed[0]) && !empty($parsed[0]['CorpusId'])) { // this is a response from getSystemTermCorpora request $decoded = array(); foreach ($parsed as $termData) { if ($termData['Status'] == 'Ready') { $decoded[$termData['CorpusId']] = $termData['Title']; } } } } else { // get the response body for the error message $parsed = json_decode($rawValue['error']['response'], true); if (!empty($parsed['ErrorMessage'])) { $mt_code = intval($parsed['ErrorCode']); $code = $mt_code == 21 ? '-2002' : '-2001'; // if engine is waking up render message as a warning (code -2002) else as error (code -2001). $message = sprintf("(%s) %s", $parsed['ErrorCode'], $parsed['ErrorMessage']); $decoded = array('error' => array('code' => $code, 'message' => $message, 'created_by' => "MT-" . $this->getName())); } elseif (is_array($rawValue['error'])) { //Curl Error also ( Timeout/DNS/Socket ) $decoded = new Engines_Results_MT($rawValue); if ($decoded->error->code < 0) { $decoded = $decoded->get_as_array(); $decoded['error'] = (array) $decoded['error']; } } else { $decoded = array('error' => $rawValue['error']); if (strpos($decoded['error'], 'Server Not Available (http status 401)') !== false) { $decoded['error']['message'] = 'Invalid Client ID.'; } } } return $decoded; }