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.