Envoyé par : Utilisateur anonyme
Date : 01/07/2005 10:11
Bonjour à tous,
voici un bout d'une appli plus grosse qui à terme a pour but d'interfacer divers systèmes d'informations qui eux sont interfacés avec un portail B2B (websphere). Bon bref, le module présenté ici est un proto (fonctionnel) et son objectif a terme est de permettre la rédaction d'une news en Français, d'en faire la traduction (via google), de retoucher la traduction puis de poster les deux version fr et en à des emplacements bien précis. Cette appli est constituée de deux zones de texte, et d'un bouton. On saisi en français à gauche et la traduction se fait à droite. La traduction est exécutée quand on clique sur le bouton, mais pas seulement. On détecte les évènements clavier et la traduction est lancée si les touches ".", "?", "!", ":", ";". En fait a chaque fin de phrase. Le problème, car il y a un problème, c'est que dans ce cas, le caractère de ponctuation en question n'est pas traité et n'aparait donc pas dans la fenêtre de traduction.
voici le code du fichier trad.xul :
<?xml version="1.0" encoding="ISO-8859-1" ?> <?xml-stylesheet href="chrome://global/skin/" type="text/css"?> <window id="sample_win" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <script src="trad.js" /> <hbox class="main"> <spacer class="bouton" flex="1" /> <button class="bouton" label="Traduire" oncommand="traduireTexte()" /> </hbox> <vbox class="main" flex="1"> <hbox> <textbox id="text_fr" multiline="true" rows="20" flex="1" onkeypress="clavier(event)" /> <splitter collapse="none" /> <textbox id="text_en" multiline="true" rows="20" flex="1"/> </hbox> </vbox> </window>
voici le code du fichier trad.js :
function traduireTexte() { val=document.getElementById("text_fr").value; p = new XMLHttpRequest(); p.onload = null; p.open("POST","trad.php", false); var s = escape("text")+"="+val; p.setRequestHeader("Content-type","application/x-www-form-urlencoded"); p.send(s); status = p.status; if ( status != "200" ) { alert("arg!"); } else { traduction=p.responseText; document.getElementById("text_en").value = traduction; } } function clavier(keyStroke) { code_eventChooser = (!document.all) ? keyStroke.which : event.keyCode; code_which = String.fromCharCode(code_eventChooser).toLowerCase(); if ( code_which == "." || code_which == "?" || code_which == "!" || code_which == ";" || code_which == ":") { traduireTexte(); } }
voici le code du fichier trad.php :
<?php $text = str_replace(" ","+", $_POST['text']); $text = str_replace("\n","|", $text); $url = "http://translate.google.com/translate_t?text=$text&langpair=fr|en&hl=fr&ie=UTF-8&oe=UTF-8"; $google = implode ('', file("$url")); // decoupage de $google au debut du formulaire $google = strstr($google, '<textarea'); $google = strstr($google, '>'); $google = str_replace(">","", $google); // decoupage de $google à la fin du formulaire $dell = strstr($google, '</'); // supprimer $dell de la chaine $google $proposition = str_replace("$dell","", $google); $proposition = str_replace("|","\n", $proposition); // affichage du resultat echo $proposition; ?>
Voila, si quelqu'un a une solution à mon problème...
Merci,
Fabrice
Envoyé par : Utilisateur anonyme
Date : 02/07/2005 12:47
je pense que ton probleme vient du fait que tu utilises l'evenement "onkeypress" qui intervient avant que "document.getElementById("text_fr").value" ne soit mis a jour.
essaies avec "oninput"... et dis nous ce que ca donne.
Envoyé par : Utilisateur anonyme
Date : 04/07/2005 11:05
j'ai essayer "oninput" mais rien ne se passe ou alors je gere pas bien l'evenement... :(
Envoyé par : Geceo
Date : 04/07/2005 21:03
Salut Fabrice,
Pourquoi est-ce que tu ne passes pas la valeur de "code_which" en paramètre de ta fonction "traduireTexte()"? Car si tu faisais ça, tu n'aurais plus ensuite qu'à ajouter ce caractère à ton texte, et là forcément il apparaîtrait dans la traduction. Je reconnais que c'est de la bidouille mais ça doit marcher, non?
Geceo
Envoyé par : Utilisateur anonyme
Date : 05/07/2005 08:58
Geceo, c'est exatement l'orientation que j'ai prise en attendant mieux ;) mais doit bien y avoir un moyen de faire quelque chose de plus direct !?
Avec l'evenement "oninput" comme me l'a conseillé malek j'arrive à afficher (dans une alert par exemple) le contenu du textbox a chaque nouvelle frappe d'une touche et effectivement même le dernier caractere saisi est affiché, mais dans mon cas je veux déclancher l'action à la saisie unique des touches ".", ";", ":", "!" et "?". Et ça, j'ai pas réussi à le gérer tel quel.
si quelqu'un a une idée je suis toujours preneur...
Fabrice
Il n'est plus possible de poster des messages dans ce forum.
Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.
Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™
sont des marques de la fondation Mozilla.