Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# TRADUCTEUR FR/EN

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

# Re: TRADUCTEUR FR/EN

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.

# Re: TRADUCTEUR FR/EN

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... :(

# Re: TRADUCTEUR FR/EN

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

# Re: TRADUCTEUR FR/EN

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.