API - corpus de Mancomun.org


Que é o corpus de Mancomun.org?

O corpus nace como unha ferramenta para facilitar o mantemento da coherencia terminolóxica nas traducións de distintas aplicacións libres, cuestión fundamental para a calidade final dos produtos.

Trátase dun corpus paralelo que permite procurar palabras en inglés ou en galego nalgún dos distintos proxectos almacenados e devolve parellas de frases inglés-galego nas que se atopa a palabra procurada e a frase traducida correspondente. É importante salientar que toda esta terminoloxía foi aprobada polo TERMIGAL, órgano avaliador e sancionador de toda a terminoloxía galega.

Este corpus naceu coa tradución ao galego do OpenOffice.org 2.0 contendo máis de 650.000 palabras traducidas (interface e axuda do paquete ofimático) incluída terminoloxía do campo da ofimática. Actualmente inclúe memorias de tradución doutras aplicacións e posteriormente irase actualizando a medida que se traduza novo software.



API

O corpus de Mancomun.org era un servizo que ata o de agora só se podía traballar con él facendo uso dun navegador. Agora é posible integrar o servizo dentro doutras aplicacións facilitando o traballo e realizar procuras sen ter que abrir o navegador.


Para a integración co corpus de Mancomun.org (http://corpus.mancomun.org) implementáronse dúas interfaces: unha vía XML e outra empregando XML-RPC. Deste xeito é posible facer procuras no Corpus de Mancomun.org dende outras aplicacións que fagan uso do servizo web e non terse que limitar á aplicación web.






XML


Exemplo dunha URL para facer a petición ao servidor e que devolva o resultado en XML:

http://corpus.mancomun.org/cgi-bin/xes_termos_xml.pl?q=<procura>&l=1&p=<proxecto>


Parámetro

Descrición

q

O parámetro “q” (query) é o que leva o termo da procura.

l

O parámetro “l” (language) é o encargado de indicar a dirección da tradución. Se ten valor “l=0” entón indica a dirección inglés a galego. En caso de que sexa “l=1” a dirección é galego a inglés.

0 en-gl

1 gl-en

p

É un parámetro opcional (project) que permite seleccionar unha carpeta/proxecto no servidor para procurar nun determinado proxecto.


Exemplo do resultado en formato XML dunha consulta feita directamente ao CGI (xes_termos_xml.pl) facendo a seguinte petición:


http://corpus.mancomun.org/cgi-bin/xes_termos_xml.pl?q=resource&l=1&p=tinyerp


<?xml version="1.0" ?>
<corpus>
<term>recursos</term>
<direction>gl-en</direction>
<items>
<item path="tinyerp/saida.po">
<original>Non foi posible cambiar o recurso... </original>
<translated>Unable to chroot a resource... </translated>
</item>
<item path="tinyerp/saida.po">
<original>Buscar recursos</original>
<translated>Find a resource</translated>
</item>
... </items>
<matches>12</matches>
</corpus>



OLLO: Se temos unha instalación propia do corpus é preciso ter instalado/configurado o script de Perl “xes_termos_xml.pl” nunha ruta no servidor web apache que permita a súa execución como cgi.

XML-RPC


Para facer peticións vía XML-RPC hai que especificar o enderezo do servidor. Dependendo da máquina na que esté configurada o servidor haberá que especificar o nome do servidor e a ruta.


http://corpus.mancomun.org/xmlrpc/server.php



Método

Descrición

corpus_service(q, l, p)

Método encargado de realizar a procura no corpus. Os parámetros correspóndense cos empregados no caso da petición XML tendo en conta que é necesario gardar o orde.

  • “q” (query) termo da procura.

  • “l” (language) indica a dirección da tradución:

0 en-gl

1 gl-en

  • “p” (project) selecciona unha carpeta/proxecto.


Devolve:

O valor de retorno é un array con obxectos coas seguintes propiedades:

  • original: cadea orixinal.

  • path: ruta ao ficheiro no que se atopa a cadea.

  • translated: cadea traducida.


corpus_projects()

Método para recuperar os proxectos que están no corpus. Posteriormente pódese empregar un nome de proxecto na chamada a “corpus_service” para realizar buscas nun só proxecto.


Devolve:

O valor de retorno é un array de cadeas que se corresponden cos nomes dos proxectos.



Exemplo implementado na linguaxe de programación Python que recupera o listado dos proxectos e fai unha procura no corpus pola palabra “recurso”:


from xmlrpclib import ServerProxy, Error
import pprint

server = ServerProxy("
http://corpus.mancomun.org/xmlrpc/server.php")
pp = pprint.PrettyPrinter(indent=4)

try:
result = server.corpus_search('
recurso', 1, '')
except Error, v:
print "ERROR", v

print "\nPrimer resultado: "
pp.pprint(result['
items'][0])

print "\nProxectos: "
pp.pprint(server.corpus_projects())





Pantallazo da execución do script Python



Exemplo de uso na linguaxe de programación PHP que recupera todos os proxectos no corpus:


<?php
// Exemplo de petición XML-RPC ao Corpus
$request = xmlrpc_encode_request("corpus_projects", array());
$context = stream_context_create(array('http' => array(
'
method' => "POST",
'
header' => "Content-Type: text/xml",
'
content' => $request
)));

$file = file_get_contents("http://corpus.mancomun.org/xmlrpc/server.php", false, $context);
$response = xmlrpc_decode($file);
if (xmlrpc_is_fault($response)) {
trigger_error("xmlrpc: $response[faultString] ($response[faultCode])");
} else {
print_r($response);
}
?>