#! /usr/bin/perl use SOAP::Lite; use Getopt::Long; use Win32::ODBC; my $soap = SOAP::Lite -> uri('http://193.145.55.187/MTservice') -> proxy('http://193.145.55.187/cgi-bin/MT-service.cgi'); GetOptions( "m=s" => \$memo, "p=s" => \$parell, "help" => \$help); if ($help) { print "Ajuda;\n"; print "Programa FDTA (Traducció automàtica d'una memòria de ForeignDesk):\n"; print "--m (string): Memòria per traduir (amb l'extensió). Obligatori\n"; print "--p (string): Parell de llengües. Obligatori\n"; print $soap ->info ->result; print "\n", print "--help: mostra aquesta ajuda (també es mostra fent --h)\n"; print "Final de l'ajuda";exit; } unless ($memo){print "S'ha d'especificar una memòria de FD\n";exit;} unless ($parell){print "S'ha d'especificar un parell de llengües";exit;} #1 Obrim i llegim la memòria de traducció @campsido=split(/\//,$memo); $nommemoria=pop(@campsido); $directorimemoria=join("\\",@campsido); print "NOM MEMORIA: $nommemoria\n"; print "DIRECTORI MEMORIA: $directorimemoria\n"; $Dir=$directorimemoria; $DBase=$nommemoria; $DriverType = "Microsoft Access Driver (*.mdb)"; $DSN = "Win32 ODBC --MAOmaoMAOmaoMAO--"; Win32::ODBC::ConfigDSN(ODBC_ADD_DSN, $DriverType,("DSN=$DSN", "Description=MAO Win32 ODBC Test DSN for Perl", "DBQ=$Dir\\$DBase", "DEFAULTDIR=$Dir", "UID=", "PWD=")) or die "ConfigDSN(): Could not add temporary DSN" . Win32::ODBC::Error(); $db=new Win32::ODBC($DSN) or die "couldn't ODBC $DSN because ", Win32::ODBC::Error(), "\n"; $query = "select SourceText from Fuzzy"; !$db->Sql($query) or die "couldn't do $query because ", $db->Error(), "\n"; $cont=1; while($db->FetchRow()) { %Data = $db->DataHash(); ($res,$orig)=%Data; $trad= $soap -> translate_segment("demo",$orig,$parell,"","",,) -> result; print "ORIGINAL: $orig\nTRADUCCIO: $trad\n\n"; $s{$cont}="'".$trad."'"; ++$cont; } foreach $key (keys(%s)) { $db->Sql("UPDATE Fuzzy SET TargetText=$s{$key} WHERE ID=$key"); } #my ($class, $userid, $segment, $languagepair, $encodeSS, $encodelTS, $memo) = @_; #les altres direccions són "spa2cat" i "cat2eng" (aquesta darrera no fa la tarducció, simplement retorna un missatge)