Page 1 sur 2

[Func] Translate

Posté : ven. 22 juil. 2011 00:39
par aurel2108
Bonjour,

Tout d'abord, je souhaiterais remercier Iste de m'avoir aidé avec ces satanés INetGet et co.
Je vous présente donc ma première fonction, j'ai nommé : _Translate()

Oui, j'ai mis approximativement 0,1µs à trouver ce nom, enfin bref.
Cette fonction à donc pour but de traduire un texte vers pas moins de 32 langages en utilisant Google Translate et sans passer par l'API bientôt inexistante de celui-ci.

Avant de vous donner un petit zip contenant tout le nécessaire, je tient à vous énoncer ce qui devrait être ajouté et quels sont les défauts actuels.

Défauts actuels :
  • Temps d'exécution : 4.5 secondes pour une traduction vers le français d'un hello, c'est vraiment trop !
  • Possibilité de bug en cas de changement (majeur) du code source de Google Translate
(Il y en a surement d'autres mais ce sont les deux principaux.)

Améliorations prévues :
  • Possibilité d'utiliser d'autres traducteurs de Google Translate : A venir
  • Amélioration du temps d'exécution : Fait
  • Renvoi des différentes propositions de traduction : Fait
  • Traduction d'une page web (?)
  • Traduction de fichiers
  • Faire une statue à la gloire de PandiPanda (0o)
Et surement d'autres si vous avez des idées.

Voilà, n'hésitez pas à me donner quelques remarques et conseils, ça me sera bien utile et j'espère que ça fonction pourra également vous être utile.

_______

Changelog :

Version 1.0 (22/07/2011) :

- Première version

Version 1.0.1 (22/07/2011) :

- Fin de l'utilisation de inet.au3 et _InetGetSource()
- Utilisation de InetRead() et BinaryToString()

Version 1.0.2 (28/07/2011) :

- Fin de l'utilisation de InetRead() et BinaryToString()
- Utilisation du protocole TCP
- Rapidité d'exécution (16x moins de temps)

Version 1.0.3 (29/07/2011) :

- Correction du bug d'encodage UTF-8
- Correction du bug d'encodage URL
- Ajout du retour des différentes propositions de traductions (proposé par mikell)

Version 1.0.4 (29/07/2011) :

- Correction d'un bug avec les phrases trop longues.

Version 1.0.5 (29/07/2011) :

- Amélioration de la fonction UTF8Decode() grâce à PandiPanda
- Ajout d'un "vrai" exemple de mini-traducteur multi-lingue.
- Correction d'un bug avec 'auto' (merci PandiPanda)

Version 1.0.6 (30/07/2011) :

- Correction de la fonction URLEncode() grâce à PandiPanda
- Correction d'un bug avec les sauts de lignes.

Re: [Func] Translate

Posté : ven. 22 juil. 2011 08:49
par timmalos
Hmmm. J'aurais preferé voir utiliser l'API qui aurait été plus rapide a répondre, mais jusqu'en decembre ca reste un peu juste.

Re: [Func] Translate

Posté : ven. 22 juil. 2011 09:02
par mikell
Intéressant ton script Image
Pour le temps d'exécution, il est très correct chez moi : 0.35 s pour 'hello', moins de 1 s pour une phrase de 4 lignes
Par contre, certains caractères dans une phrase limitent la traduction, par exemple un point ou une parenthèse
Ce serait sympa aussi de pouvoir obtenir pour un mot les différentes traductions possibles... une petite editbox peut-être ? :mrgreen:

Re: [Func] Translate

Posté : ven. 22 juil. 2011 12:07
par TT22
Très bonne idée, pour moi, le temps pour traduire "bonjour" est de 0.2 secondes :P
Par contre, dans ton fichier README, tu devrais ajouter que pour les ordis en 64bits, le dossier Include est dans :
C:\Program Files (x86)\AutoIt3\Include\

Re: [Func] Translate

Posté : ven. 22 juil. 2011 12:28
par servabat
Salut,

Ton code n'est pas mauvais, mais il existe une API google traduction (ici http://code.google.com/apis/language/tr ... rview.html) qui assure j'imagine une vitesse de traduction supérieure (et plus de facilitée dans le code...)

@++

Re: [Func] Translate

Posté : ven. 22 juil. 2011 13:01
par PandiPanda
Cette fonction à donc pour but de traduire un texte vers pas moins de 32 langages en utilisant Google Translate et sans passer par l'API bientôt inexistante de celui-ci.
Hmmm. J'aurais preferé voir utiliser l'API qui aurait été plus rapide a répondre, mais jusqu'en decembre ca reste un peu juste.
Je pense qu'il en est conscient que l'API existe, cependant il a voulu le faire sans :wink:

Belle fonction, perso ca me met bien 2,28 seconde ...

Re: [Func] Translate

Posté : ven. 22 juil. 2011 14:32
par mikell
PandiPanda a écrit : perso ca me met bien 2,28 seconde ...
Avec microtorrent qui marche ou pas ? :mrgreen:

Re: [Func] Translate

Posté : ven. 22 juil. 2011 14:39
par aurel2108
@servabat, PandiPanda En effet, je suis conscient que l'API existe, je l'avais déjà utilisé pour la même fonction en PHP.
Mais j'ai appris qu'elle allait bientôt disparaître : c'est ce qui m'a encouragé à écrire cette fonction.

@mikell Pour les 4,5 secondes, c'est sur un PC pas terrible (sous Vista de plus, ne trollez pas, je change bientôt d'OS) et avec une connexion on va dire, normale. Et je n'ai pas de limitation sur la phrase avec les points ou les parenthèses chez moi, pourrais-tu m'envoyer un exemple ?

@TT22 Je le fais tout de suite. ;)

En n'incluant plus Inet.au3 et en utilisant InetRead() et BinaryToString() au lieu de _InetGetSource() (merci Timmalos), je passe de 4,5 à 4,2 secondes. C'est assez peu mais j'aimerais bien avoir vos retours pour voir si l'écart est plus élevé sur des machines un peu meilleures. Je la met comme version 1.0.1.

EDIT : Ah non, en fait, en vérifiant la doc de InetRead() c'est juste qu'il recharge la page qui est en cache, fonction que je voulais ajouter et qui fait gagner un peu de temps en cas de répétition de la même traduction.

Re: [Func] Translate

Posté : ven. 22 juil. 2011 14:52
par Tlem
Merci de mettre à jour votre premier message avec la nouvelle version, sinon si vous avez dix versions dans ce sujet, il va vite devenir difficile de s'y retrouver ...

Re: [Func] Translate

Posté : ven. 22 juil. 2011 15:26
par aurel2108
Oui, veuillez m'excuser, j'avais totalement oublié, je le fais tout de suite. ;)

EDIT : Fait !

Re: [Func] Translate

Posté : ven. 22 juil. 2011 18:20
par Tlem
Et celui qui est dans ce message, vous allez le laisser ? :evil:

Re: [Func] Translate

Posté : ven. 22 juil. 2011 20:27
par aurel2108
Euh ? Excusez-moi mais je ne vois pas mon erreur, pourriez-vous me l'indiquer ?

Re: [Func] Translate

Posté : ven. 22 juil. 2011 20:45
par PandiPanda
Le 8ème poste contient votre fichier ^^
Il faudrai le supprimer étant donné qu'il s'y trouve sur le 1er poste.
:wink:

Re: [Func] Translate

Posté : jeu. 28 juil. 2011 12:29
par aurel2108
Désolé de ne pas donner de nouvelles mais j'essaye de jouer avec une requête TCP pour voir si ça se réduirait pas le temps d'exécution. :/

EDIT :

Mes recherches ont porté leur fruit !
Je suis passé de 4,5 secondes à en moyenne 250ms pour un hello en français.

Soit un peu plus de 16x plus rapide. :D
Je vais maintenant m'atteler à d'autres points car ce point là me semble pour l'instant assez correct.

N'hésitez pas à me donner vos retours, j'édite avec la nouvelle version dans quelques minutes sur le premier post. ;)

EDIT 2 : Mes résultats sont légèrement faussés car j'ai entre temps changé d'OS (Vista -> XP) mais j'ai fais des tests et j'ai quand même un gain de secondes. :)

3,5 secs -> 250 ms ^^

@mikell : Je travaille sur le renvoi des différentes traductions. En fait, il ne me reste plus que le problème du texte qui arrive en UTF-8. :/

Re: [Func] Translate

Posté : ven. 29 juil. 2011 00:06
par mikell
J'ai une erreur avec une phrase :
► Afficher le texte
Désolé pour le retard... voilà le test avec la version 1.0 (phrase traduite incomplète)
► Afficher le texte

Re: [Func] Translate

Posté : ven. 29 juil. 2011 00:49
par aurel2108
Oui je viens de voir cela.
Je le corrige avec le bug de l'encodage UTF-8 dans la prochaine version qui devrait arriver dans quelques minutes. ;)

Merci d'avoir signalé le bug. ^^

EDIT : Version 1.0.3 avec les corrections de bug mise en premier post. ;)
Ajout du renvoi des différentes propositions de traduction. (proposé par mikell) ;)

Re: [Func] Translate

Posté : ven. 29 juil. 2011 09:26
par mikell
Beaucoup mieux, mais j'ai encore une traduction incomplète si je mets
$text = 'AutoIt v3 is a freeware BASIC-like scripting language designed for automating the Windows GUI and general scripting. It uses a combination of simulated keystrokes, mouse movement and window/control manipulation in order to automate tasks in a way not possible or reliable with other languages (e.g. VBScript and SendKeys).'
Il s'arrête de traduire au mot 'scripting'
Mais ce n'est qu'un petit bug, il n'y a plus d'erreurs :wink:

Re: [Func] Translate

Posté : ven. 29 juil. 2011 16:59
par aurel2108
Oh oui désolé, je vais corriger ça. C'est un truc bizarre du code source de Google Translate m'enfin bon. Oo

EDIT : Corrigé dans la version 1.0.4, voir premier post. ;)

Re: [Func] Translate

Posté : ven. 29 juil. 2011 18:37
par MrDynoland
Je le trouve super !
Voilà un petit code pour pourvoir tester après l'include :

Code : Tout sélectionner

$reponse = InputBox("Traduire" , "Que veut tu traduire en anglais ?")
$tranduit = _Translate($reponse, "en", "fr", 0)
MsgBox(64, "Traduction", $tranduit)

Re: [Func] Translate

Posté : ven. 29 juil. 2011 19:05
par aurel2108
Merci à toi. ^^
Maintenant vous n'avez plus d'excuse pour faire un super traducteur multi-lingue en AutoIt. x)