Contenu | Rechercher | Menus

Annonce

Le forum rencontre en ce moment quelques soucis de charge, il est possible qu'une erreur soit affichée quand vous postez un message, ne rechargez pas la page au risque de poster une seconde fois votre message

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".

#1 Le 10/01/2013, à 02:50

Accent - Envoyer une requète à google Traduction avec curl

Bonsoir,

J'essaye désespérément d'envoyer une requête à google traduction avec curl avec la commande suivante:

translate() {
curl -s -A "Mozilla" "http://translate.google.com.br/translate_a/t?client=t&text=$1&hl=pt-BR&sl=${2:-"fr"}&tl=${3:-"en"}&multires=1&ssel=0&tsel=0&sc=1" | awk -F'"' '{print $2}' | iconv --from-code=ISO-8859-1 --to-code=UTF-8
}

Le résultat retourné est correct lorsque la chaîne passé en paramètre ($1) ne contient pas d'accent (exemple: translate "bonjour" fr en), en revanche lorsque la chaîne contient des accents le résultat retourné est incohérent.
J'ai bien essayer d'encoder la chaîne en URI  en perl puis l'inséré dans le lien mais cela ne fonctionne pas.

Merci de votre aide,


Hiroshima 45 / Chernobyl 86 / Windows '95

Hors ligne

#2 Le 10/01/2013, à 13:10

Re : Accent - Envoyer une requète à google Traduction avec curl

Regarde avec ceci si ça fonctionne :
. urlencode($1)


~ La mort d'une personne est une tragédie, celle d'un million c'est des statistiques. [J. Staline]

Hors ligne

#3 Le 10/01/2013, à 20:25

Re : Accent - Envoyer une requète à google Traduction avec curl

Non ça ne fonctionne pas..

Je donne quelques retour:
0 - Sans encodage et sans accent (Bon résultat)
Retour:

translate "vol"
[[["flight","vol","",""]],[["substantivo",["flight","theft","flying","robbery","stealing","steal","larceny","thievery","plunder","piracy","lift","stealthiness"],[["flight",["vol","fuite","envol","vole","essor","aviation"],[1],0.37955719],["theft",["vol"],[7],0.066995822],["flying",["vol","aviation","prospectus"],[1],0.023517746],["robbery",["vol","brigandage","pillage"],[3],0.0062315823],["stealing",["vol"],[7],0.0038391664],["steal",["vol"],[5],0.0010172778],["larceny",["vol","larcin"],[7],0.00028693638],["thievery",["vol"],[7],0.00024542969],["plunder",["pillage","butin","vol"],[2],3.5914301e-05],["piracy",["piraterie","piratage","contrefaon","pillage","vol"],[4],6.0489551e-06],["lift",["ascenseur","assistance","cric","aide","cargaison","vol"],[6],5.7150078e-07],["stealthiness",["caractre furtif","manire furtive","secret","vol"],[9],5.3687529e-07]]]],"fr",,[["flight",[5],1,0,973,0,1,0]],[["vol",4,,,""],["vol",5,[["flight",973,1,0],["theft",23,1,0],["flying",1,1,0],["robbery",1,1,0],["flights",0,1,0]],[[0,3]],"vol"]],,,[["fr"]],8]

1 - Sans encoder avec accent
Retour:

translate "épée"
[[["  p  e","épée","",""]],,"fr",,[[" ",[5],1,0,764,0,2,0],["p ",[6],1,0,527,2,4,0],["e",[7],1,0,804,4,5,0]],[[" ",5,[[" ",764,1,0]],[[0,2]],"épée"],["p ",6,[["p ",527,1,0]],[[2,5]],""],["e",7,[["e",804,1,0],["th",0,1,0],["an",0,1,0],["email",0,1,0]],[[5,6]],""]],,,[["fr"]],1]

(Le résultat n'est pas bon même en le ré-encodant en utf8)

2 - En encodant avec --data-urlencode "text=$1" (option de curl)
Cmd:

translate() {
	curl -s -A "Mozilla" --data "client=t" --data-urlencode "text=$1" --data "hl=pt-BR&sl=${2:-"fr"}&tl=${3:-"en"}&multires=1&ssel=0&tsel=0&sc=1" "http://translate.google.com.br/translate_a/t"
}

Retour:

translate "épée"
[[["  p  e","épée","",""]],,"fr",,[[" ",[5],1,0,764,0,2,0],["p ",[6],1,0,527,2,4,0],["e",[7],1,0,804,4,5,0]],[[" ",5,[[" ",764,1,0]],[[0,2]],"épée"],["p ",6,[["p ",527,1,0]],[[2,5]],""],["e",7,[["e",804,1,0],["th",0,1,0],["an",0,1,0],["email",0,1,0]],[[5,6]],""]],,,[["fr"]],1]

3 - En ré-encodant avec urlencode:
Cmd:

translate3() {
	curl -s -A "Mozilla" "http://translate.google.com.br/translate_a/t?client=t&text=`urlencode -m "$1"`&hl=pt-BR&sl=${2:-"fr"}&tl=${3:-"en"}&multires=1&ssel=0&tsel=0&sc=1"
}

Retour:

translate "épée"
[[["       e p","ÿÿpÿÿe","",""]],,"fr",,[[" ",[5],1,1,984,0,2,0],[" ",[6],0,1,970,2,4,0],[" ",[7],0,1,968,4,6,0],["",[8],0,1,993,6,7,0],["e",[9],0,0,602,7,8,0],["p",[10],1,0,603,8,9,0]],[[" ",5,[[" ",984,1,1]],[[0,2]],"ÿÿpÿÿe"],[" ",6,[[" ",970,0,1]],[[2,4]],""],[" ",7,[[" ",968,0,1]],[[7,9]],""],["",8,[["",993,0,1]],[[6,7]],""],["e",9,[["e",602,0,0],["email",3,0,0],["th",1,0,0],["an",0,0,0]],[[9,10]],""],["p",10,[["p",603,1,0]],[[4,6]],""]],,,[["fr"]],2]

(C'est encore pire)

Dernière modification par Ph3nix_ (Le 10/01/2013, à 20:27)


Hiroshima 45 / Chernobyl 86 / Windows '95

Hors ligne

#4 Le 10/01/2013, à 20:44

Re : Accent - Envoyer une requète à google Traduction avec curl

J'avoue ne pas savoir hmm

J'ai vérifié la norme ISO que tu utilise, c'est la bonne, pareille pour l'encodage. Va falloir attendre plus expérimenté que moi j'en ai bien peur


~ La mort d'une personne est une tragédie, celle d'un million c'est des statistiques. [J. Staline]

Hors ligne

#5 Le 10/01/2013, à 21:20

Re : Accent - Envoyer une requète à google Traduction avec curl

J'ai trouvé, avec wget ça fonctionne:

translate() {
	wget -U "Mozilla/5.0" -qO - "http://translate.google.com/translate_a/t?client=t&text=$1&sl=${2:-"fr"}&tl=${3:-"en"}" | sed 's/\[\[\[\"//' | cut -d \" -f 1
}

Hiroshima 45 / Chernobyl 86 / Windows '95

Hors ligne

Haut de page ↑