fonction php de traduction et page voila

turbo
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 30
Inscription: 25 Fév 2004

fonction php de traduction et page voila

Message le Ven Jan 19, 2007 1:12

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.

vit0
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 44
Inscription: 11 Avr 2006

Message le Ven Jan 19, 2007 6:05

Je doute beaucoup que ca soit autorisé..


Hoho
WRInaute impliqué
WRInaute impliqué
 
Messages: 515
Inscription: 10 Jan 2006

Message le Ven Jan 19, 2007 6:17

vit0 a écrit: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é


biddybulle
WRInaute passionné
WRInaute passionné
 
Messages: 1619
Inscription: 30 Mai 2005

Message le Ven Jan 19, 2007 9:46

Angsuman l'a fait pour wordpress en se basant sur babylon ou google ou choix via un plug vendu autour de 30$.

turbo
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 30
Inscription: 25 Fév 2004

Message le Ven Jan 19, 2007 10:50

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

turbo
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 30
Inscription: 25 Fév 2004

Message le Ven Jan 19, 2007 15:14

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

turbo
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 30
Inscription: 25 Fév 2004

Message le Dim Jan 21, 2007 17:29

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.

turbo
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 30
Inscription: 25 Fév 2004

Message le Dim Fév 18, 2007 1:36

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;}
}


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités