Classe de traduction qui utilise le traducteur de google

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

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.