Traducteur google : interface winform pour le service de traduction de google

Soyez le premier à donner votre avis sur cette source.

Vue 12 979 fois - Téléchargée 981 fois

Description

Le Traducteur Google est la conversion en VB 2008 de la source VB6 de vbnino GOOGLE TRADUCTION :
www.vbfrance.com/code.aspx?ID=49461
Il s'agit d'une interface WinForm pour le service de traduction de Google, dont la FAQ est ici :
www.google.fr/intl/fr/help/faq_translation.html
Merci pour les contributions de vbnino, us_30 et Sechaud.

Fonctionnalités :
- Taille illimitée et Unicode géré par défaut pour les caractères spéciaux (contrôle TextBox en DotNet : pas besoin de composant externe) ;
- Découpage des textes long et fusion après traduction (testé seulement sur des textes pas très long, il est possible que cela échoue en pratique à cause des time-outs ou des blocages...) ;
- Gestion de l'historique des traductions ;
- Chargement et sauvegarde de fichier ;
- Sauvegarde dans les paramètres utilisateurs au lieu de la base de registre (+ pratique pour Vista et pour partager un ordi) ;
- Mémorisation de la position et de la taille de la fenêtre.

Source / Exemple :


cf. zip.

Conclusion :


Restrictions

Même si cette interface possède un découpeur/recolleur de texte, veuillez ne pas abuser de ce logiciel, car l'utilisation des services de Google est explicitement restreinte ici : www.google.com/accounts/TOS :

5.3 Vous acceptez de ne pas accéder (ou de ne pas tenter d'accéder) à tout ou partie des Services par tout moyen autre qu'à travers l'interface fournie par Google, sauf si vous y avez été expressément autorisé par Google dans le cadre d'un accord distinct.

5.4 Vous acceptez de n'entreprendre aucune activité de nature à entraver ou à perturber les Services (ou les serveurs et les réseaux raccordés aux Services).

5.5 Sauf si vous y avez été expressément autorisé par un accord distinct conclu avec Google, vous acceptez de ne pas reproduire, dupliquer, copier, vendre, négocier ou revendre les Services à quelque fin que ce soit.

Cependant cette restriction concerne les services de Google en général. Pour l'API Google Ajax pour le langage, les conditions d'utilisations sont ici :
http://code.google.com/intl/fr/apis/ajaxlanguage/terms.html :

[...] You will not, and will not permit your end users or other third parties to:[...]- submit any request exceeding 5000 characters in length, to the translation components of the Service;

En fait, les tests effectués montrent que la limite est toujours de 1000 caractères, alors que la limite présente sur le site même de Google Translation est de plus de 30 000 caractères.

L'objectif de ce logiciel est utilitaire (à priori l'interface de Google ne mémorise pas le couple de langues entre chaque utilisation, même si on se logue, et on ne peut pas traduire dans le sens inverse sans faire du copier/coller) et aussi pédagogique (comment migrer correctement un projet VB6, ce qui n'est pas toujours complètement évident).

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

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
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.
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
-
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
-
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 !

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.