Traduction via google (ou autre...)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 23 134 fois - Téléchargée 32 fois

Contenu du snippet

Le titre à l'avantage d'être explicite:
- comme pour la correction d'orthographe, on va extraire la source de la page chez Google et y récupérer le résultat.
La suite est plutôt simple, étant donné que le résultat est toujours au même endroit dans la source (entre les mêmes balises)

Source / Exemple :


###########   traduction.php   ###########
<?php

$form_select="
<OPTION value=en|de>Anglais >> Allemand</OPTION>
<OPTION value=en|es>Anglais >> Espagnol</OPTION>
<OPTION value=en|fr>Anglais >> Français</OPTION>
<OPTION value=en|it>Anglais >> Italien</OPTION>
<OPTION value=en|pt>Anglais >> Portugais</OPTION>
<OPTION value=en|ja>Anglais >> Japonais</OPTION>
<OPTION value=en|ko>Anglais >> Coréen</OPTION>
<OPTION value=en|zh-CN>Anglais >> Chinois</OPTION>
<OPTION value=de|en>Allemand >> Anglais</OPTION>
<OPTION value=de|fr>Allemand >> Français</OPTION>
<OPTION value=es|en>Espagnol >> Anglais</OPTION>
<OPTION value=fr|en>Français >> Anglais</OPTION>
<OPTION value=fr|de>Français >> Allemand</OPTION>
<OPTION value=it|en>Italien >> Anglais</OPTION>
<OPTION value=pt|en>Portugais >> Anglais</OPTION>
<OPTION value=ja|en>Japonais >> Anglais</OPTION>
<OPTION value=ko|en>Coréen >> Anglais</OPTION>
<OPTION value=zh-CN|en>Chinois >> Anglais</OPTION>";

### on verifie la présence des variables 
if(isset($_GET['q'])){ $q = $_GET['q']; }else{ $q =""; }
if(isset($_GET['lang'])){ $lang = $_GET['lang'];  
### on met un petit selected dans le formulaire pour la langue   
$form_select = str_replace("$lang", "$lang selected", $form_select); 
}else{ $lang=""; }

echo'<html>

<head>
<title>Traduction Via Google</title>
<style>
.texte1{ font-family: Arial; font-size: 14px; color: #cc0000;}
.texte2{ font-family: Arial; font-size: 16px; color: #000080;}
.test{ font-family: Arial; font-size: 11px; color: #000000;}
</style>
</head>

<body>
<center><a class="texte2"><b>Traduction Via Google</b>
<form method="GET" action="traduction.php">
<input type="hidden" name="a" value="traduction">
<textarea rows="4" name="q" cols="46">'.$q.'</textarea><BR><BR>De
<SELECT name=lang>
'.$form_select.'
</SELECT>
<INPUT type=submit value=Traduire onClick="this.value=\'Patientez...\';this.blur();">
</form>
<BR><BR>';

if(isset($_GET['a'])){
$q = urlencode($q);
### recherche la source chez google avec le mot à traduire: $q 
$source = implode ('', file ("http://translate.google.com/translate_t?text=$q&langpair=$lang&hl=fr&ie=UTF-8&oe=UTF-8")); 
### decoupage de $source au debut
$source = strstr($source, '<div id=result_box dir=ltr>'); 
### decoupage de $source à la fin
$fin_source = strstr($source, '</div>'); 
### supprimer $fin_source de la chaine $source 
$proposition = str_replace("$fin_source","", $source); 
$proposition = str_replace("<div id=result_box dir=ltr>","", $proposition);   
### affichage du resultat 
echo'<a class="texte1">Traduction:<BR><textarea rows="4" name="a" cols="46">'.$proposition.'</textarea></center>';
### décommentez cette ligne pour tester l'url
#echo'<br><br><a href="'.$url.'" target="_Blank" class="texte1">'.$url.'</a><br><br><a class="test">'.htmlentities($source).'</a>'; 
}
?>
</body>

</html>

Conclusion :


Maintenant, il est asse simple de proposer une traduction avec correction d'orthographe (dans la langue de recherche) si aucune traduction n'est trouvée.

A voir également

Ajouter un commentaire

Commentaires

Messages postés
2
Date d'inscription
vendredi 6 avril 2012
Statut
Membre
Dernière intervention
26 avril 2012

bonjour ,j'ai un code en php qui calcule le débit de la bande passnate et je veut le traduire en c# ,si vous pouvez m'aider à ce mail bensalem.wafa@yahoo.fr

<?PHP
// ********************************************
// Nom du script : test-mesure-debit-bande-passante.php
// Auteur : sebastien.fontaine@frameIP.com.pas.de.spam
// Date de création : 14 Septembre 2006
// version : 1.1
// Licence : Ce script est libre de toute utilisation.
// La seule condition existante est de faire référence au site http://www.frameip.com afin de respecter le travail d'autrui.
// ********************************************
// ********************************************
// Initiation des variables
// ********************************************
$duree_du_test=4;
// ********************************************
// Affichage de l'entête
// ********************************************
echo
'

Mesure du débit de votre accès Internet

http://www.frameip.com/test-mesure-debit-bande-passante/

';
// ********************************************
// Echo de la chaine désactivant l'affichage
// ********************************************
echo "<!--";
// ********************************************
// Qualibrage de la taille
// ********************************************
$taille=($duree_du_test/envoi_des_donnnes(100000))*100000;
// ********************************************
// Test réel
// ********************************************
$debit=round(8*$taille/1000/envoi_des_donnnes($taille),0);
// ********************************************
// Echo de la chaine réactivant l'affichage
// ********************************************
echo "-->";
// ********************************************
// Affichage des résultats
// ********************************************
echo
'

Votre débit à l\'instant T est de :

'.$debit.' Kbps

[test-mesure-debit-bande-passante.php
Cliquez ici pour effectuer un nouveau test
]
';
function envoi_des_donnnes($taille)
{
// ********************************************
// Initiation des variables
// ********************************************
$donnee="www.frameip.com ";
// ********************************************
// Récupération du temps avant envoi
// ********************************************
$temps_avant_envoi=microtime();
// ********************************************
// Envoi des données
// ********************************************
for ($i=0;$i<$taille/16;$i++)
echo $donnee;
// ********************************************
// Récupération du temps apres envoi
// ********************************************
$temps_apres_envoi=microtime();
// ********************************************
// Convertion des temps
// ********************************************
$tampon=explode(" ",$temps_avant_envoi);
$temps_avant_envoi=((float)$tampon[0]+(float)$tampon[1]);
$tampon=explode(" ",$temps_apres_envoi);
$temps_apres_envoi=((float)$tampon[0]+(float)$tampon[1]);
// ********************************************
// Retourne le temps découlé
// ********************************************
return($temps_apres_envoi-$temps_avant_envoi);
}
?>
Messages postés
17
Date d'inscription
samedi 10 avril 2010
Statut
Membre
Dernière intervention
9 août 2010

bonjour,
je veux savoir si possible à quoi sert la dernière ligne
pour tester l'url

merci
Messages postés
24
Date d'inscription
samedi 10 janvier 2009
Statut
Membre
Dernière intervention
7 juin 2014

on a le droit de faire ça ?
je veut dire, google traduction est sous licence GNU ou quelque chose comme ça ?
personnelement j'aurais tendance à dire : tout le monde peut y aller dessus, alors pourquoi pas nos machine !
mais bon, je demande votre avis vue que personne n'a omnis la question
Messages postés
496
Date d'inscription
mercredi 30 juin 2004
Statut
Membre
Dernière intervention
29 juillet 2009
1
Pourquoi reprendre le code HTML, l'épurer et le réintégrer dans notre site?
Je vous propose plus simplement, de récupérer le contenu (JSON) prévu par google:
<?php
$url = "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=Le%20texte%20qui%20doit%20%EAtre%20traduit&langpair=fr|en";
$table=json_decode(file_get_contents($url));
echo $table->{'responseData'}->{'translatedText'};
?>
Messages postés
2
Date d'inscription
vendredi 14 avril 2006
Statut
Membre
Dernière intervention
6 mars 2009

Salut,

Pour que le code refonctionne il faut remplacer :

$source = strstr($source, '
');

par :

$source = strstr($source, '
');

et :

$proposition = str_replace("
","", $proposition);

par :

$proposition = str_replace('
',"", $proposition);

Merci pour ce code !!!
Je vais pouvoir l'insérer sur mon intranet.

Amicalement.
Afficher les 14 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (askmove)