<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>La Fabrick &#187; google api</title>
	<atom:link href="http://www.lafabrick.com/blog/tag/google-api/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.lafabrick.com/blog</link>
	<description>Laboratoire d&#039;interfaces riches (Flex, Flash, Air ...)</description>
	<lastBuildDate>Mon, 28 Nov 2011 22:02:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.4</generator>
		<item>
		<title>Google AJAX Language API&#8230; et ton Flex devient polyglotte !</title>
		<link>http://www.lafabrick.com/blog/2008/06/06/327-google-language-api-flex/</link>
		<comments>http://www.lafabrick.com/blog/2008/06/06/327-google-language-api-flex/#comments</comments>
		<pubDate>Fri, 06 Jun 2008 04:01:41 +0000</pubDate>
		<dc:creator>Erick</dc:creator>
				<category><![CDATA[[Dev] Flash / Flex / AIR...]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[google api]]></category>
		<category><![CDATA[httpservice]]></category>
		<category><![CDATA[Tutoriels]]></category>

		<guid isPermaLink="false">http://92.243.2.196/lafabrick/blog/?p=327</guid>
		<description><![CDATA[<p><img src="http://lafabrick.free.fr/blogImg/png-20080606-044824.jpg" alt="" /></p> <p>Je viens de tomber sur une API bien pratique&#160;: l'API de traduction de Google. Accessible via un HTTPService, elle permet d'effectuer des requêtes de traduction en plus de 30 langues. Voyons comment l'utiliser depuis une application Flex.</p>]]></description>
			<content:encoded><![CDATA[<p><img src="http://lafabrick.free.fr/blogImg/png-20080606-044824.jpg" alt="" /></p>
<p>Je viens de tomber sur une API bien pratique : l&#8217;API de traduction de Google. Accessible via un HTTPService, elle permet d&#8217;effectuer des requêtes de traduction en plus de 30 langues. Voyons comment l&#8217;utiliser depuis une application Flex.</p>
<p><span id="more-327"></span></p>
<p><!--En savoir plus--></p>
<p><a hreflang="fr" href="http://lafabrick.free.fr/labo/gtranslate">Voir l&#8217;exemple</a> et <a hreflang="fr" href="http://lafabrick.free.fr/labo/gtranslate/srcview">les sources</a></p>
<p><strong>Requis :</strong> <a hreflang="en" href="http://code.google.com/p/as3corelib/">AS3 Corelib</a> pour le traitement des données au format JSON</p>
<p><strong>Fonctionnement :</strong> Dans le fichier MXML de mon application, TextInputs, une comboBox permettant la sélection des langues et un bouton d&#8217;envoi. L&#8217;appel au service est défini dans le fichier <em>translator.as</em>.</p>
<pre class="brush: xml">

&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;

&lt;mx:Application xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot; layout=&quot;horizontal&quot;&gt;

     &lt;mx:Script source=&quot;translator.as&quot; /&gt;

     &lt;mx:TextInput id=&quot;toTranslate&quot; text=&quot;hello&quot;/&gt;

     &lt;mx:ComboBox

          id=&quot;langpairSelector&quot;

          dataProvider=&quot;{langpairCollection}&quot;

     /&gt;

     &lt;mx:TextInput id=&quot;translated&quot; /&gt;

     &lt;mx:Button label=&quot;Traduire !!!&quot; click=&quot;translate()&quot; /&gt;

&lt;/mx:Application&gt;
</pre>
<p>L&#8217;appel se fait via un HTTPService. L&#8217;url du service est : &#8216;http://ajax.googleapis.com/ajax/services/language/translate&#8217;.</p>
<p>Des paramètres sont également à ajouter à la requête :</p>
<ul>
<li><strong>v</strong> » la version : 1.0 ( c&#8217;est la seule existante )</li>
<li><strong>q</strong> » le mot ou expression à traduire</li>
<li><strong>langpair</strong> » l&#8217;identifiant de la langue à traduire et celui de la langue de destination ( séparées par un | ). Si une seule langue est indiquée, le service cherchera à deviner la langue du mot à traduire ( voir <a hreflang="en" href="http://code.google.com/apis/ajaxlanguage/documentation/reference.html">la liste des langues et des identifiants</a> ).</li>
</ul>
<p>Le service renvoie des données au format JSON, que nous transformons en object Actionscript via la classe JSON de la Corelib. Les données reçues sont de la forme :</p>
<pre class="brush: php">
{
     &amp;amp;amp;quot;responseData&amp;amp;amp;quot;:{ &amp;amp;amp;quot;translatedText&amp;amp;amp;quot;:&amp;amp;amp;quot;texte traduit&amp;amp;amp;quot; },
     &amp;amp;amp;quot;responseDetails&amp;amp;amp;quot;: null,
     &amp;amp;amp;quot;responseStatus&amp;amp;amp;quot;: 200}
</pre>
<p>Si tout se passe bien la traduction est accessible via la propriété</p>
<pre class="brush: js">

{
     &quot;responseData&quot;: { &quot;translatedText&quot;:&quot;texte traduit&quot; }
     &quot;responseDetails&quot;: null,
     &quot;responseStatus&quot;: 200
}
</pre>
<p>de l&#8217;objet reçu.</p>
<pre class="brush: js">
import mx.collections.ArrayCollection;
import mx.collections.ArrayCollection;
import com.adobe.serialization.json.JSON;
import mx.rpc.http.HTTPService;
import mx.rpc.events.ResultEvent;

[Bindable]
private var langpairCollection:ArrayCollection = new ArrayCollection(
[
     {label:&quot;Traduire de &quot; , value:&#039;&#039;},
     {label: , value:&#039;en|fr&#039;},
    {label :&quot;Francais È Anglais&quot;, value:&#039;fr|en&#039;}
  ]
)

// fonction de traduction : appel du service de google.language.translate
private function translate():void{
  if ( langpairSelector.selectedItem.value ){

    initResult();
    var translator:HTTPService = new HTTPService();
    translator.request.q = toTranslate.text;    
    translator.url = &#039;http://ajax.googleapis.com/ajax/services/language/translate&#039;;
    translator.request.v = &#039;1.0&#039;;
    translator.request.langpair= langpairSelector.selectedItem.value;
    translator.resultFormat = &#039;text&#039;;
    translator.addEventListener(ResultEvent.RESULT, onResult);
    translator.send();
  }
}

private function initResult():void{
    translated.text = &#039;&#039;;
}

// ˆ la réception : affichage du résultat depuis des données au format JSON
private function onResult(event:ResultEvent):void {

  try {
    var trad:Object = JSON.decode(event.result as String);
    translated.htmlText =  trad.responseData.translatedText  ;
  } catch(ignored:Error) {
    trace ( &#039;erreur réception traduction : &#039; + ignored.toString() );
  }
}
</pre>
<p>Voilà pour un 1er essai&#8230; y a de quoi faire !</p>
<p><a hreflang="en" href="http://code.google.com/apis/ajaxlanguage/documentation/">Plus d&#8217;infos</a>Autres articles sur le même sujet
<ul>
<li><a href="http://www.lafabrick.com/blog/2007/10/03/256-titre/" rel="bookmark" title="3 octobre 2007">Utiliser Cairngorm dans un projet Flex / AMFPHP</a></li>
<li><a href="http://www.lafabrick.com/blog/2009/01/13/786-reflex-1-une-micro-architecture-pour-flex-simple/" rel="bookmark" title="13 janvier 2009">Reflex #1: une micro-architecture pour Flex&#8230; simple !</a></li>
<li><a href="http://www.lafabrick.com/blog/2009/01/15/819-reflex-2-vous-reprendez-bien-un-peu-de-ioc/" rel="bookmark" title="15 janvier 2009">Reflex #2 : vous reprendrez bien un peu de IOC ?</a></li>
<li><a href="http://www.lafabrick.com/blog/2010/05/04/1962-uigfx-practice-a-circularslider-component-2/" rel="bookmark" title="4 mai 2010">UIGFX practice : a CircularSlider component</a></li>
</ul>
<p><!-- Similar Posts took 16.997 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lafabrick.com/blog/2008/06/06/327-google-language-api-flex/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

