Ejemplo n.º 1
0
 /**
  * @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;
 }
Ejemplo n.º 2
0
 /**
  * @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;
 }
Ejemplo n.º 3
0
 /**
  * @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;
 }
Ejemplo n.º 4
0
 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();
 }
Ejemplo n.º 5
0
 /**
  * @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;
 }