/**
  * Imports the data in the xliff string into an array representation
  * that fits to the given target translation id.
  *
  * @param string $xliff_string
  * @param int    $target_translation_id
  *
  * @return WP_Error|array
  */
 public function import($xliff_string, $target_translation_id)
 {
     $xliff_reader = $this->xliff_reader_factory->general_xliff_reader();
     $job_data = $xliff_reader->get_data($xliff_string);
     if (is_wp_error($job_data)) {
         $job = $this->job_factory->job_by_translation_id($target_translation_id);
         if ($job && ($id_string = $xliff_reader->get_xliff_job_identifier($xliff_string)) !== false) {
             $job_data = $xliff_reader->get_data(str_replace($id_string, $job->get_id() . '-' . md5($job->get_id() . $job->get_original_element_id()), $xliff_string));
         }
     }
     return $job_data;
 }
 private function process_translated_string($translation_proxy_job_id, $language)
 {
     $project = TranslationProxy::get_current_project();
     $translation = $project->fetch_translation($translation_proxy_job_id);
     $translation = apply_filters('icl_data_from_pro_translation', $translation);
     $ret = false;
     $translation = $this->xliff_reader_factory->string_xliff_reader()->get_data($translation);
     if ($translation) {
         $ret = icl_translation_add_string_translation($translation_proxy_job_id, $translation, $language);
         if ($ret) {
             $project->update_job($translation_proxy_job_id);
         }
     }
     return $ret;
 }