TRADUCTEUR GOOGLE : INTERFACE WINFORM POUR LE SERVICE DE TRADUCTION DE GOOGLE

Signaler
Messages postés
3275
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
-
blq
Messages postés
97
Date d'inscription
vendredi 22 octobre 1999
Statut
Membre
Dernière intervention
13 juin 2016
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/49799-traducteur-google-interface-winform-pour-le-service-de-traduction-de-google

blq
Messages postés
97
Date d'inscription
vendredi 22 octobre 1999
Statut
Membre
Dernière intervention
13 juin 2016
1
Après ouverture depuis VB 2010 Express et test Français-Anglais-Espagnol : fonctionne très bien dans les deux sens. Merci !
cs_Patrice99
Messages postés
1222
Date d'inscription
jeudi 23 août 2001
Statut
Membre
Dernière intervention
9 septembre 2018

Comment désactiver la pénible boîte de dialogue du "Débogage juste-à-temps" :
IE : Outils : Options Internet... : Avancé : Navigation : Cocher :
"Désactiver le débogage des scripts (autres applications)"
cs_aus3004
Messages postés
319
Date d'inscription
jeudi 1 avril 2010
Statut
Membre
Dernière intervention
16 mars 2011
1
Merci, esperons que le site de Google ne fermera pas !
cs_Patrice99
Messages postés
1222
Date d'inscription
jeudi 23 août 2001
Statut
Membre
Dernière intervention
9 septembre 2018

Nouvelle version : j'ai corrigé un bug : il fallait bien attendre le vidage du cache du navigateur via wbNav.Navigate("") avec l'événement wbNav.DocumentCompleted : il conservait la précédente traduction, qui pouvait être inversée éventuellement !
cs_Patrice99
Messages postés
1222
Date d'inscription
jeudi 23 août 2001
Statut
Membre
Dernière intervention
9 septembre 2018

J'ai testé l'API Ajax et en fait la limite n'est pas 5000 mais toujours 1000 caractères, du coup c'est moins intéressant ! (il y a plus d'erreurs et moins d'infos. potentielles par rapport au mode navigateur)
cs_Patrice99
Messages postés
1222
Date d'inscription
jeudi 23 août 2001
Statut
Membre
Dernière intervention
9 septembre 2018

On obtient depuis aujourd'hui (pleins de màj WinUpdate) une avalanche de bugs ! Il s'agit en fait d'une erreur de script à la fin de la navigation : pour corriger cela, il faut mettre webbrowser.ScriptErrorsSuppressed = true
cs_Patrice99
Messages postés
1222
Date d'inscription
jeudi 23 août 2001
Statut
Membre
Dernière intervention
9 septembre 2018

5000 caractères c'est mieux que 1000, c'est sûr !

Le code provient de :
www.codeproject.com/KB/aspnet/Translate_Your_Website.aspx
et il est récent, je vais voir cela, merci.
gillardg
Messages postés
3275
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
3
essaye ceci :)

Private Function Translate(ByVal stringToTranslate As String, ByVal fromLanguage As String, ByVal toLanguage As String) As String
' make sure that the passed string is not empty or null
If (Not String.IsNullOrEmpty(stringToTranslate)) Then
' per google's terms of use, we can only translate
' a string of up to 5000 characters long
If stringToTranslate.Length <= 5000 Then
Const bufSizeMax As Integer = 65536
Const bufSizeMin As Integer = 8192

Try
' by default format? is text. so we don't need to send a format? key
Dim requestUri As String = "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=" & stringToTranslate & "&langpair=" & fromLanguage & "%7C" & toLanguage

' execute the request and get the response stream
Dim request As HttpWebRequest = CType(WebRequest.Create(requestUri), HttpWebRequest)
Dim response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse)
Dim responseStream As Stream = response.GetResponseStream()

' get the length of the content returned by the request
Dim length As Integer = CInt(Fix(response.ContentLength))
Dim bufSize As Integer = bufSizeMin

If length > bufSize Then
If length > bufSizeMax Then
bufSize = bufSizeMax
Else
bufSize = length
End If
End If

' allocate buffer and StringBuilder for reading response
Dim buf(bufSize - 1) As Byte
Dim sb As New StringBuilder(bufSize)

' read the whole response
length = responseStream.Read(buf, 0, buf.Length)
Do While length <> 0
sb.Append(Encoding.UTF8.GetString(buf, 0, length))
length = responseStream.Read(buf, 0, buf.Length)
Loop

' the format of the response is like this
' {"responseData": {"translatedText":"¿Cómo estás?"}, "responseDetails": null, "responseStatus": 200}
' so now let's clean up the reponse by manipulating the string
Dim translatedText As String = sb.Remove(0, 36).ToString()
translatedText = translatedText.Substring(0, translatedText.IndexOf("""},"))

Return translatedText
Catch
Return "Cannot get the translation. Please try again later."
End Try
Else
Return "String to translate must be less than 5000 characters long."
End If
Else
Return "String to translate is empty."
End If
End Function