GOOGLE TRADUCTION

Messages postés
1878
Date d'inscription
mercredi 21 août 2002
Statut
Contributeur
Dernière intervention
7 janvier 2019
- - Dernière réponse :  KESHAROI - 23 déc. 2013 à 22:49
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/49461-google-traduction

Afficher la suite 
cs_PaTaTe
Messages postés
1878
Date d'inscription
mercredi 21 août 2002
Statut
Contributeur
Dernière intervention
7 janvier 2019
-
Tu as vérifié ton code avant de le poster ? Chez moi il plante sur le code de w_StatusTextChange. Je ne saurais trop te conseiller de mettre ton code en Option Explicit
us_30
Messages postés
2117
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
7 -
Bonjour,

J'aime beaucoup. Il est simple...

Néanmoins, comme le sugère Patate, un meilleur typage des variables serait une bonne chose... bien qu'elles sont toutes déclarées, elles ne le sont pas toutes avec la défintion de leur type... mais bon...

Ensuite sous VBE, lors de l'initialisation, il faut rajouter la gestion d'erreur...
En clair, il faut rajouter ON ERROR RESUME NEXT :

Set Element = Document0.getElementById("result_box")
On Error Resume Next
result.Text = Element.outerText

Cettte gestion est nécessaire au lancement, car l'initialisation complète ne peut être fait qu'à l'issu du chargement complet de l'application.

En attendant cette petite correction : 10/10...

Amicalement,
Us.
us_30
Messages postés
2117
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
7 -
encore moi...

En guise d'amélioration, il faudrait mettre la boite de texte "source" en multilignes.

Ensuite, il faudrait également changer la police en fonction de la langue traduite, car pour le chinois ou autre, la police de caractère renvoi des "?" ...

=

Pour le code, on peut également simplifier le choix de la langue par une fonction dans un module, comme ceci :

Function Choix_Langue(Txt As String) As String

Select Case Txt
Case "Anglais": Choix_Langue = "en"
Case "Français": Choix_Langue = "fr"
Case "Arabe": Choix_Langue = "ar"
Case "Italien": Choix_Langue = "it"
Case "Espagnol": Choix_Langue = "es"
Case "Bulgare": Choix_Langue = "bg"
Case "Albanais": Choix_Langue = "sq"
Case "Allemand": Choix_Langue = "de"
Case "Chinois": Choix_Langue = "zh-CN"
Case "Grec": Choix_Langue = "el"
Case "Hébreu": Choix_Langue = "iw"
Case "Japonais": Choix_Langue = "ja"
Case "Roumain": Choix_Langue = "ro"
Case "Russe": Choix_Langue = "ru"
End Select

End Function

=

puis, les clicks sur les bandeaux sont inutiles... le reste du code, pourrait plus simplement être ainsi :

' Déclarations des paramètres
Dim lang_s As String 'lang_r --> Langue destinataire
Dim lang_r As String 'lang_s --> Langue source
Dim Tempo As String
Dim Document0 As HTMLDocument 'Document0 comme document
Dim Element As HTMLDDElement 'Element comme element d'un document

Private Sub Form_Load()
' Initialisation des langues par défaut ici : Anglais et Français
lang_s = "en"
lang_r = "fr"
End Sub

Private Sub permuter_Click()
' Permutation des langues
Tempo lgs.Text: lgr.Text lgs.Text: lgs.Text = Tempo
End Sub

Private Sub traduire_Click()
' Envoi au traducteur Google

'Message
Result.Text = "Traduction en cours ..."
Result.Enabled = False

'Choix des langues
lang_r = Choix_Langue(lgr.Text)
lang_s = Choix_Langue(lgs.Text)

'le w c'est notre WebBrowser
w.navigate "http://translate.google.com/translate_t?text=" & Source & "&langpair=" & lang_s & "|" & lang_r

End Sub

Private Sub w_StatusTextChange(ByVal Text As String)
'On test si le chargement de la page est terminé
If Text = "Terminé" Then
'On inisialise le document du contenu HTML
Set Document0 = w.document
'On initialise l'element qu'on veut à savoir le resultat
Set Element = Document0.getElementById("result_box")
On Error Resume Next
Result = Element.outerText
Result.Enabled = True
End If

End Sub

=

Voilà... On pourrait penser à plus d'options ensuite, comme la reconnaissance de la langue du PC utilisateur, pour la mettre par défaut, ou encore identifier la langue du texte à traduire (par statistique) pour la proposer également par défaut... Bref, imaginer des petits plus, par rapport à l'interface de Google...

=

Amicalement,
Us.
us_30
Messages postés
2117
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
7 -
Il reste aussi un point qui peut mettre en défaut l'application : la vérification de la fin de traduction. Même si "w_StatusTextChange" est asticieux et ne semble pas poser de problème pour du texte brute, il reste que Google lui permet aussi la traduction d'une page web à partir d'une adresse. Or, dans ce cas, le "w_StatusTextChange" reste vide... d'où un problème... et parfois (par suite de bloquage de renvoi) le "w_StatusTextChange" n'est pas renvoyé... Tout ceci peut parfois faire un mini-bug (léger en soi, puisque l'utilisateur n'est pas bloqué et peut fermer l'application).
D'autre pb du même genre peuvent se produire... Un exemple simple : tape "http://www.vbfrance.com/codes/GOOGLE-TRADUCTION_49461.aspx" à traduire du français en anglais...

Une solution, c'est regarder avant d'envoyer le texte, si c'est une page Web... et dans ce cas ne pas l'envoyer afin d'éviter l'erreur... ou trouver une autre solution meilleure... -:);

Amicalement,
Us.
us_30
Messages postés
2117
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
7 -
euh... corrigé la fonction citée au-dessus avec ceci donc :

Select Case Txt
Case "Anglais": Choix_Langue = "en"
Case "Français": Choix_Langue = "fr"
Case "Arabe": Choix_Langue = "ar"
Case "Italien": Choix_Langue = "it"
Case "Espagnol": Choix_Langue = "es"
Case "Bulgare": Choix_Langue = "bg"
Case "Albanais": Choix_Langue = "sq"
Case "Allemand": Choix_Langue = "de"
Case "Chinois": Choix_Langue = "zh-CN"
Case "Grec": Choix_Langue = "el"
Case "Hébreu": Choix_Langue = "iw"
Case "Japonais": Choix_Langue = "ja"
Case "Roumain": Choix_Langue = "ro"
Case "Catalan": Choix_Langue = "ca"
Case "Danois": Choix_Langue = "da"
Case "Estonien": Choix_Langue = "et"
Case "Hindi": Choix_Langue = "hi"
Case "Indonésien": Choix_Langue = "id"
Case "Norvégien": Choix_Langue = "no"
Case "Lituanien": Choix_Langue = "lt"
Case "Maltais": Choix_Langue = "mt"
Case "Néerlandais": Choix_Langue = "nl"
Case "Polonais": Choix_Langue = "pl"
Case "Turc": Choix_Langue = "tr"
Case "ukrainien": Choix_Langue = "uk"
End Select

Amicalement,
Us.