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)