API REST

Este é un exemplo dun API REST que se podería empregar para traducir documentos e textos dende aplicacións. Non se segue a sintaxe empregada en Scale-MT debido a que provoca algúns problemas co módulo "Services" de Drupal, que se empregou para este desenvolvemento.

API REST

A API REST pode chamarse do xeito:
http://tradutor.cixug.es/cixug/api/translate/text.json?text="prueba de traducción"&languagePair=es-gl

As operacións admitidas son:

text
Tradución de texto (GET, POST - JSON ou XML-)
document
Tradución de documentos (POST -JSON ou XML-)

A URL é:

URL base
http://tradutor.cixug.es/cixug/api/translate/
Operacións en JSON
operacion.json, p.ex.:http://tradutor.cixug.es/cixug/api/translate/text.json
Operacións en XML
operacion, p. ex.http://tradutor.cixug.es/cixug/api/translate/text

Os parámetros empregados son:

text
Texto a traducir ou documento en base64 en caso de tradución de documentos
fileName
O nome do arquivo en caso de tradución de documentos
languagePair
Par de línguas a traducir e sentido da tradución (p.ex., es-gl)
markUnknown
Marcar palabras descoñecidas (yes | no)

A resposta é:

responseStatus
Código de estado: 200 (OK), 500 (erro)
responseDetails
Mesaxe de erro ou explicación
translatedText
En caso de que a operación fose correcta o texto traducido ou o documento resultante en base64
fileName
En caso de tradución de documentos, o nome do arquivo resultante

Para obter a saída en XML, basta chamar a:
http://tradutor.cixug.es/cixug/api/translate/text?text="prueba de traducción"&languagePair=es-gl

Traducir documentos

O seguinte exemplo en PHP permite traducir un documento en formato ODT, empregando as funcións de curl.

  $sentido = 'es-gl' ;
  $filename = 'documento-proba.odt' ;
  $url = "http://tradutor.cixug.es/cixug/api/translate/document.json" ;
  $ch  = curl_init ( $url ) ;
  $jsonData = array(
     'fileName' => $filename,
     'languagePair' => $sentido,
     'text'     => base64_encode(file_get_contents($filename))) ;
  $json     = json_encode($jsonData);
  curl_setopt_array($ch, array(
    CURLOPT_URL => $url,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_POSTFIELDS => $json,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_VERBOSE => true,
    CURLOPT_HTTPHEADER => array('Content-Type: application/json',
                                'Content-Length: ' . strlen($json)))) ;
  $result = curl_exec($ch) ;
  curl_close($ch);
  $res = (array) json_decode($result);
  if ( $res['responseStatus'] == '200' ) {
    file_put_contents($res['filename'], base64_decode($res['translatedText'])) ;
  }

Por facer

  • Engadir outras operacións a esta API
  • Forzar autentificación por clave (para aplicacións)