Classe de traduction qui utilise le traducteur de google

Soyez le premier à donner votre avis sur cette source.

Vue 22 973 fois - Téléchargée 834 fois

Description

Ce petit bout de code prend en paramètres un texte à traduire et un code de traduction (par exemple "fr|en" pour traduire du français à l'anglais.
La fonction envoie une requête http sur google est analyse le flux de retour pour en sortir la traduction.
C'est pas très beau, mais maintenant que babelfish ne propose plus son webservice gratuit, je n'ai rien d'autre

Source / Exemple :


Public Shared Function translate(ByVal psText As String, ByVal psCode As String) As String

        Try

            Dim voRequest As System.Net.HttpWebRequest = CType(System.Net.HttpWebRequest.Create("http://translate.google.com/translate_t"), System.Net.HttpWebRequest)

            Dim vsPostData As String
            vsPostData = "text=" & System.Web.HttpUtility.UrlEncode(psText)
            vsPostData = vsPostData & "&langpair=" & psCode
            vsPostData = vsPostData & "&hl=en"
            vsPostData = vsPostData & "&ie=UTF8"

            voRequest.ContentLength = vsPostData.Length
            voRequest.Method = "POST"
            voRequest.ContentType = "application/x-www-form-urlencoded"

            Dim voStreamRequest As System.IO.Stream = voRequest.GetRequestStream()
            Dim voStreamWriter As System.IO.StreamWriter = New System.IO.StreamWriter(voStreamRequest)
            voStreamWriter.Write(vsPostData)
            voStreamWriter.Flush()

            Dim voResponse As System.Net.HttpWebResponse = CType(voRequest.GetResponse, System.Net.HttpWebResponse)
            Dim voStream As System.IO.Stream = voResponse.GetResponseStream
            Dim voStreamReader As System.IO.StreamReader = New System.IO.StreamReader(voStream, System.Text.Encoding.ASCII)

            Dim vsResult As String
            Dim viPosition As Integer

            vsResult = voStreamReader.ReadToEnd()
            viPosition = vsResult.IndexOf("<textarea name=q ")
            If viPosition > 0 Then
                vsResult = vsResult.Remove(0, viPosition)
                vsResult = vsResult.Remove(0, vsResult.IndexOf(">") + 1)
                vsResult = Mid(vsResult, 1, vsResult.IndexOf("<"))
            End If

            vsResult = System.Web.HttpUtility.HtmlDecode(vsResult)
            voStreamReader.Close()
            voStream.Close()
            voStreamWriter.Close()
            voStreamRequest.Close()
            voResponse.Close()

            Return vsResult

        Catch ex As Exception

            Return "Erreur lors de la traduction de : " & psText

        End Try

    End Function

Conclusion :


La liste des codes de traduction se trouve dans la source

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
127
Date d'inscription
lundi 11 octobre 2004
Statut
Membre
Dernière intervention
18 mai 2016

Merci beaucoup tikrimi pour cette fonction qui m'est fort utile !

9/10, parce que j'ai perdu plein de temps à comprendre pourquoi ça traduisait pas ! (mais c'est 1 très jolie note quand même !)

'bug apparement dû à évolution de la structure de la page google
'remplacement de cette ligne :
'viPosition = vsResult.IndexOf("<textarea name=q ")
'par celle ci :
viPosition = vsResult.IndexOf("<textarea name=utrans ")
Messages postés
280
Date d'inscription
jeudi 24 mars 2005
Statut
Membre
Dernière intervention
18 mars 2009

super,
Auriez-vous la traduction vb6 de ce code?.
Messages postés
3275
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
3
bonjour TIKRIMI
j'ai fait un programme dans le genre mais
il utilise toutes les langues de google et en sortie
il y a juste la traduction ou presque mais j'ai pas utilisé de classe en fait :
result = WebBrowser1.DocumentText.ToString.Substring(a, b)
ou a = index du texte
b = longueur présumée de la traduction * 2
ainsi j'ai juste quelques caractères indésirables en trop
crois tu que cela vaille la peine de l'uploader sur vbfrance?
Messages postés
63
Date d'inscription
lundi 13 septembre 2004
Statut
Membre
Dernière intervention
16 novembre 2007

j'ai un petite question lorsque que j'utilise le traducteur il ne traduit pas bien where dans la conversion anglais - français
voila la réponse à where qu'il me donne
l? o?

Aurais tu une idée TIKRIMI

Est ce que ce n'est un probleme d'encoding ?
Messages postés
63
Date d'inscription
lundi 13 septembre 2004
Statut
Membre
Dernière intervention
16 novembre 2007

THANK YOU VERY MUCH
c'est excellent!!!
Afficher les 7 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.