API REST

Este es un ejemplo de un API REST que se podría emplear para traducir documentos y textos desde aplicaciones. No se sigue la sintaxis empleada en Scale-MT debido a que provoca algunos errores con el módulo “Services” de Drupal, que se empleó para este desarrollo.

API REST

La API REST puede llamarse de este modo:
http://tradutor.cixug.es/cixug/api/translate/text.json?text="prueba de traducción"&languagePair=es-gl

Las operaciones admitidas son:

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

La URL es:

URL base
http://tradutor.cixug.es/cixug/api/translate/
Operaciones en JSON
operacion.json, p.e.:http://tradutor.cixug.es/cixug/api/translate/text.json
Operaciones en XML
operacion, p. e.http://tradutor.cixug.es/cixug/api/translate/text

Los parámetros empleados son:

text
Texto a traducir o documento en base64 en caso de traducción de documentos
fileName
El nombre del archivo en el caso de traducción de documentos
languagePair
Par de lenguas a traducir y sentido de la traducción (p.e., es-gl)
markUnknown
Marcar palabras desconocidas (yes | no)

La respuesta es:

responseStatus
Código de estado: 200 (OK), 500 (error)
responseDetails
Mensaje de error o explicación
translatedText
En caso de que la operación fuese correcta el texto traducido o el documento resultante en base64
fileName
En caso de traducción de documentos, el nombre del archivo resultante

Para obtener la salida en XML, basta llamar a:
http://tradutor.cixug.es/cixug/api/translate/text?text="prueba de traducción"&languagePair=es-gl

Traducir documentos

El siguiente ejemplo en PHP permite traducir un documento ODT, empleando las funciones 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 hacer

  • Añadir otras operaciones a esta API
  • Forzar autenticación por clave (para aplicaciones)