Fonction php de traduction et page voila

Nouveau WRInaute
Bonjour, je me demandais si certains d'entre vous avez deja essayé de transmettre un mot a traduire a la page de voila traduction et a recuperer sa traduction par l'intermediaire d'un scripte php.

Je souhaiterais utiliser cela sur mon site pour traduire automatiquement des commentaires.

Je vais essayer de trouver les fonctions qui vont bien.

Si quelqu'un a une idée ou un commentaire n' hésitez pas.
 
WRInaute occasionnel
vit0 a dit:
Je doute beaucoup que ca soit autorisé..
+1

Ecrit leur...:p

Comme moi qui voulait etre malin en mettant 1px*1px sur le logo xiti...je leur ait ecrit est...il m'en poliment dis: Tu fais sa, t'es grillé
 
Nouveau WRInaute
Je viens de tester un petit morceau de script qui fonctionne pour le momeent. Sa utilise curl, faut que ce soit installé et infomaniak l'a justement.

voici le morceau:

j'ai recupere les valeur du formulaire qui sont envoyés par la methode POST. (voir le code source de la page)

systran_lp pour le sens de traduction

systran_text pour le mot a traduire'

Le formulaire lui pointe versla page http://trans.voila.fr/voila




<?php

$ch = curl_init("http://trans.voila.fr/voila");
$fp = fopen("curl.txt", "w");

curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'systran_id=Voila-fr&systran_lp=fr_en&systran_text=mot a traduire');

curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);

curl_exec($ch);
curl_close($ch);
fclose($fp);
?>


Sa copie le contenu de la page voila traduction dans le fichier curl.txt (mettre en 777 avant)

Sa fonctionne, il rest plus qu'a explorer le dom de la page pour trouver la traduction.


Je rencontre un probleme car l'inspector dom de firefox ne trouve pas le mot traduit , j'ai l'impression qu'il est inseré dans la page par l'intermediaire du dom et non pas directement visible en clair. Est ce fait expre? Pour augmenter la difficulté?

Je poursuis mes tests, si vous savez comment recuperer le mot traduit dite le.

Je laisse un lien pour montrer ce que ça donne:

http://www.loc-europe.com/curl.php
 
Nouveau WRInaute
Il semblerait que la fonction a utiliser pour parser le fichier soit loadHTMLFile qui est dispo uniquement sur php5, elle ne fonctionne pas chez moi, je vais donc migrer en esperant que ça pose pas de probleme aux scripts existants.

youpi
 
Nouveau WRInaute
Je viens finallement de parvenir a faire une fonction pour traduire un texte grace a voila:



function traduction_voila($systran_lp,$mot_a_traduire)
{
//envoyer les infos post et enregistre la page dans curl.txt
$ch = curl_init("http://trans.voila.fr/voila");
$fp = fopen("curl.txt", "w");
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'systran_id=Voila-fr&systran_lp='.$systran_lp.'&systran_text='.$mot_a_traduire);
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);
//recup du mot traduit dans le fichier curl.txt par l'intermediaire du dom (31 ieme balise td , 2 ieme balise br et noeud suivant)
$doc =@DOMDocument::loadHTMLFile("curl.txt");
$liste_td = $doc->getElementsBytagname('td')->item(31);
$mot_traduit=$liste_td->getElementsBytagname('br')->item(2)->nextSibling->nodeValue;
if ($mot_traduit!==""){return $mot_traduit;}else{return FALSE;}
}




Il est évident que pour eviter de faire du tort au service voila il ne faut pas utiliser la fonction dans chaque page d'un site mais plutot enregistrer la traduction dans votre propre bd.
 
Nouveau WRInaute
Et voici la version qui n'utilise pas de fichier intermediaire:



function traduction_voila_v2($systran_lp,$mot_a_traduire)
{


$ch = curl_init();
curl_setopt ($ch,CURLOPT_FRESH_CONNECT, 1);
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'systran_id=Voila-fr&systran_lp='.$systran_lp.'&systran_text='.$mot_a_traduire);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
//curl_setopt ($ch, CURLOPT_REFERER, "http://www.loc-europe.com/");
//curl_setopt ($ch, CURLOPT_USERAGENT, "Curl");
curl_setopt($ch, CURLOPT_URL, "http://trans.voila.fr/voila");
$contenu=curl_exec($ch);
curl_close($ch);
//recup du mot traduit dans la variable $contenu par l'intermediaire du dom (31 ieme balise td , 2 ieme balise br et noeud suivant)
$doc = @DOMDocument::loadHTML($contenu);
$liste_td = $doc->getElementsBytagname('td')->item(31);
$mot_traduit=$liste_td->getElementsBytagname('br')->item(2)->nextSibling->nodeValue;
if ($mot_traduit!==""){return $mot_traduit;}else{return FALSE;}
}
 
Discussions similaires
Haut