IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

curl traduction google translate


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 338
    Points : 192
    Points
    192
    Par défaut curl traduction google translate
    Bonjour,

    J'utilise une fonction pour traduire du texte via google translate. Elle marchait très bien avant mais la elle ne fonctionne plus et je n'arrive pas l'améliorer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    function traduction($lg_lg,$mot_a_traduire)
    	{
    		echo $mot_a_traduire;
    		$ch = curl_init();
    		curl_setopt ($ch,CURLOPT_FRESH_CONNECT, 1);
    		curl_setopt ($ch, CURLOPT_POST, 1);
    		curl_setopt ($ch, CURLOPT_POSTFIELDS, 'text='.$mot_a_traduire.'&h1=en&ie=UTF8');
    		curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    		curl_setopt ($ch, CURLOPT_REFERER, "http://www.google.fr");
    		//curl_setopt ($ch, CURLOPT_USERAGENT, "Curl");
    		curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.001 (windows; U; NT4.0; en-us) Gecko/25250101");
    		curl_setopt($ch, CURLOPT_URL, "http://translate.google.com/translate_t?langpair=$lg_lg");
    		$contenu=curl_exec($ch);
    		curl_close($ch);
    		echo $contenu;
    		//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);
     
    //$i=0;
    //while($i<50)
    //{
    //echo"Div numero--->".$i;
    //$liste_td = $doc -> getElementsByTagName('div') ->  item($i)->  nodeValue;
    //echo($liste_td);
    //echo"<br><br>";
    //$i++;
    //}
     
     
    		$mot_traduit = $doc -> getElementsByTagName('span') ->  item('31')->  nodeValue;
     
    		if ($mot_traduit!=="")
    		{
    			return $mot_traduit;
    		}else
    		{ 	
    			$mot_traduit ="FALSE"; 
    			return $mot_traduit;
    		}
     
    	}
    Au début je pensais que que mon item n'etait pas le bon mais je ne peux pas faire la boucle :Elle bloque au niveau du
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $doc = @DOMDocument::loadHTML($contenu);
    Si j'affiche de $contenu j'ai bien la page google.
    Si je met $contenu en dessou de DOMDocument::loadHTML comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $doc = @DOMDocument::loadHTML($contenu);
    echo $contenu;
    J'ai une page blanche
    Images attachées Images attachées  

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 338
    Points : 192
    Points
    192
    Par défaut
    Je crois avoir trouvé le problème.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @DOMDocument::loadHTML($contenu)
    Ne fonctionne pas car le html n'a pas une bonne structure.
    Donc je cherche un moyen de récupérer le contenu entre 2 span mais sans sucés.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $contenu=curl_exec($ch);
    $pattern = "#^<span.*>(.*)</span>$#";
    preg_match( $pattern, $contenu, $matches );
    echo $matches;
    Exemple balise span :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <span title="lecture ecriture" onmouseover="this.style.backgroundColor='#ebeff9'" onmouseout="this.style.backgroundColor='#fff'">read write</span>

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    L'API Google est la pour ça

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 338
    Points : 192
    Points
    192
    Par défaut
    L'API de google est maintenant payante non ? http://www.devandseo.fr/2012/03/api-de-traduction/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    $langTo = 'fr';
    		$langFrom ='en';
     
    		echo $mot_a_traduire."<br/>";
    			$data = file_get_contents ( "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=" . urlencode($mot_a_traduire) . "&langpair=" . $langFrom . "%7C" . $langTo );
     
    			$data = json_decode ( $data );
    			echo $data->responseStatus;
    			if ( $data->responseStatus == 200 )
    			{
    				echo $data->responseData->translatedText;
    				//return $data->responseData->translatedText;
    			}
    			else
    			{
     
    				//return "Server down.";
    			}

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Autres] Google renonce à mettre fin à l’API Google Translate
    Par Hinault Romaric dans le forum APIs Google
    Réponses: 21
    Dernier message: 01/08/2011, 02h09
  2. [Autres] Google Translate amélioration
    Par temperature dans le forum APIs Google
    Réponses: 0
    Dernier message: 20/04/2011, 16h19
  3. Utiliser Google Translate
    Par rambc dans le forum Général Python
    Réponses: 0
    Dernier message: 11/10/2010, 23h56
  4. Problème encodage avec google translator
    Par ddove53 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 11/09/2009, 19h22
  5. Problème de charset avec traduction Google
    Par Booster2ooo dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 08/02/2009, 23h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo