[Func] Translate

Partagez des fonctions et des UDF AutoIt.
Règles du forum
.
Avatar du membre
aurel2108
Niveau 4
Niveau 4
Messages : 90
Enregistré le : dim. 17 juil. 2011 21:19
Status : Hors ligne

[Func] Translate

#1

Message 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.
Fichiers joints
_Translate_1.0.6.zip
(4.76 Kio) Téléchargé 504 fois
_Translate_1.0.5.zip
(4.82 Kio) Téléchargé 360 fois
_Translate_1.0.4.zip
(3.98 Kio) Téléchargé 368 fois
_Translate_1.0.3.zip
(3.63 Kio) Téléchargé 385 fois
_Translate_1.0.2.zip
(2.3 Kio) Téléchargé 373 fois
_Translate_v1.0.1.zip
(3.92 Kio) Téléchargé 364 fois
_Translate_v1.0.zip
(3.75 Kio) Téléchargé 394 fois
Modifié en dernier par aurel2108 le sam. 30 juil. 2011 01:42, modifié 11 fois.
Ne rien dire même quand on sait peut dés fois être la meilleure des solutions. (aurel2108)
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [Func] Translate

#2

Message 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.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [Func] Translate

#3

Message 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:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
TT22
Membre émérite
Membre émérite
Messages : 1566
Enregistré le : lun. 18 avr. 2011 15:21
Localisation : La Quatrième Dimension
Status : Hors ligne

Re: [Func] Translate

#4

Message 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\
Cordialement,
TT22
servabat
Niveau 4
Niveau 4
Messages : 69
Enregistré le : sam. 02 avr. 2011 16:26
Status : Hors ligne

Re: [Func] Translate

#5

Message 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...)

@++
Avatar du membre
PandiPanda
Membre émérite
Membre émérite
Messages : 656
Enregistré le : mar. 19 juil. 2011 14:03
Localisation : Bruxelles
Status : Hors ligne

Re: [Func] Translate

#6

Message 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 ...
La seule moralité qui tienne dans un monde cruel est la chance. Impartiale. Équitable. Vraie
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [Func] Translate

#7

Message par mikell »

PandiPanda a écrit : perso ca me met bien 2,28 seconde ...
Avec microtorrent qui marche ou pas ? :mrgreen:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
aurel2108
Niveau 4
Niveau 4
Messages : 90
Enregistré le : dim. 17 juil. 2011 21:19
Status : Hors ligne

Re: [Func] Translate

#8

Message 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.
Ne rien dire même quand on sait peut dés fois être la meilleure des solutions. (aurel2108)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [Func] Translate

#9

Message 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 ...
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
aurel2108
Niveau 4
Niveau 4
Messages : 90
Enregistré le : dim. 17 juil. 2011 21:19
Status : Hors ligne

Re: [Func] Translate

#10

Message par aurel2108 »

Oui, veuillez m'excuser, j'avais totalement oublié, je le fais tout de suite. ;)

EDIT : Fait !
Ne rien dire même quand on sait peut dés fois être la meilleure des solutions. (aurel2108)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [Func] Translate

#11

Message par Tlem »

Et celui qui est dans ce message, vous allez le laisser ? :evil:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
aurel2108
Niveau 4
Niveau 4
Messages : 90
Enregistré le : dim. 17 juil. 2011 21:19
Status : Hors ligne

Re: [Func] Translate

#12

Message par aurel2108 »

Euh ? Excusez-moi mais je ne vois pas mon erreur, pourriez-vous me l'indiquer ?
Ne rien dire même quand on sait peut dés fois être la meilleure des solutions. (aurel2108)
Avatar du membre
PandiPanda
Membre émérite
Membre émérite
Messages : 656
Enregistré le : mar. 19 juil. 2011 14:03
Localisation : Bruxelles
Status : Hors ligne

Re: [Func] Translate

#13

Message 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:
La seule moralité qui tienne dans un monde cruel est la chance. Impartiale. Équitable. Vraie
Avatar du membre
aurel2108
Niveau 4
Niveau 4
Messages : 90
Enregistré le : dim. 17 juil. 2011 21:19
Status : Hors ligne

Re: [Func] Translate

#14

Message 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. :/
Ne rien dire même quand on sait peut dés fois être la meilleure des solutions. (aurel2108)
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [Func] Translate

#15

Message 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
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
aurel2108
Niveau 4
Niveau 4
Messages : 90
Enregistré le : dim. 17 juil. 2011 21:19
Status : Hors ligne

Re: [Func] Translate

#16

Message 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) ;)
Ne rien dire même quand on sait peut dés fois être la meilleure des solutions. (aurel2108)
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [Func] Translate

#17

Message 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:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
aurel2108
Niveau 4
Niveau 4
Messages : 90
Enregistré le : dim. 17 juil. 2011 21:19
Status : Hors ligne

Re: [Func] Translate

#18

Message 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. ;)
Ne rien dire même quand on sait peut dés fois être la meilleure des solutions. (aurel2108)
MrDynoland
Niveau 3
Niveau 3
Messages : 33
Enregistré le : dim. 12 juin 2011 11:02
Status : Hors ligne

Re: [Func] Translate

#19

Message 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)
Avatar du membre
aurel2108
Niveau 4
Niveau 4
Messages : 90
Enregistré le : dim. 17 juil. 2011 21:19
Status : Hors ligne

Re: [Func] Translate

#20

Message par aurel2108 »

Merci à toi. ^^
Maintenant vous n'avez plus d'excuse pour faire un super traducteur multi-lingue en AutoIt. x)
Ne rien dire même quand on sait peut dés fois être la meilleure des solutions. (aurel2108)
Répondre