Blog
AS3 Google Translate via AJAX Language API
8 years, 7 months ago Posted in: Blog Comments Off

Buona Sera,
Acabo de desarrollar esta clase Actionscript3 util para traducir un texto dado a través de la api json de google.

No olvides de añadir el logo de google como credito.

Otra implementación encontrada en el blog de Cyril Hanquez

Actionscript:
  1. package com.mattimatti.translate
  2. {
  3.     import com.adobe.serialization.json.JSON;
  4.    
  5.     import flash.events.ErrorEvent;
  6.     import flash.events.Event;
  7.    
  8.     import mx.controls.Alert;
  9.     import mx.rpc.AsyncToken;
  10.     import mx.rpc.events.FaultEvent;
  11.     import mx.rpc.events.ResultEvent;
  12.     import mx.rpc.http.HTTPService;
  13.    
  14.  
  15.     [Event(name="complete", type="flash.events.Event")]
  16.    
  17.     [Event(name="error", type="flash.events.ErrorEvent")]
  18.    
  19.  
  20.     public class GTranslatorAsync extends HTTPService
  21.     {
  22.        
  23.         private var _translated:String = "";
  24.        
  25.         private var _errorMessage:String = "";
  26.        
  27.  
  28.  
  29.         /**
  30.          * Constructor
  31.          *
  32.          */  
  33.         public function GTranslatorAsync()
  34.         {
  35.            
  36.             super(null, null);
  37.            
  38.             url = "http://ajax.googleapis.com/ajax/services/language/translate";
  39.             request.v = "1.0";
  40.            
  41.             addEventListener(ResultEvent.RESULT, __onServerResponse);
  42.             addEventListener(FaultEvent.FAULT, __onFaultResponse);     
  43.         }
  44.  
  45.  
  46.  
  47.  
  48.  
  49.         /**
  50.          *
  51.          * @param inString the string to translate
  52.          * @param inLangPair the lang pair in format es|en
  53.          *
  54.          */  
  55.         public function translate(inString:String, inLangPair:String = null):void{
  56.            
  57.             if(inLangPair)langpair=inLangPair;
  58.            
  59.             request.q = inString;
  60.            
  61.             if(!langpair)throw new Error("SPECIFY_LANGPAIR");
  62.            
  63.             super.send();
  64.         }
  65.  
  66.            
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.         /**
  74.          * Ovverrides function to inable it
  75.          *
  76.          */
  77.         override public function send(parameters:Object = null):AsyncToken{
  78.            
  79.             throw new Error("UNIMPLEMENTED_METHOD")
  80.         }
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.        
  90.         /**
  91.          * Setter for langpair
  92.          * @param inLang
  93.          *
  94.          */  
  95.         public function set langpair(inLang:String):void{
  96.             if(inLang.length!=5)throw new Error();
  97.             if(inLang.indexOf("|")!=2)throw new Error();
  98.             request.langpair = inLang;
  99.         }
  100.  
  101.  
  102.  
  103.  
  104.  
  105.        
  106.        
  107.         /**
  108.          * getter for langpair
  109.          * @return
  110.          *
  111.          */  
  112.         public function get langpair():String{
  113.             return request.langpair;
  114.         }      
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.         /**
  122.          * Setter for translated
  123.          * @param inLang
  124.          *
  125.          */  
  126.         public function set translated(inLang:String):void{
  127.            
  128.         }
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.         /**
  136.          * getter for translated
  137.          * @return
  138.          *
  139.          */  
  140.         public function get translated():String{
  141.            
  142.             return _translated;
  143.         }      
  144.  
  145.  
  146.  
  147.  
  148.         /**
  149.          * getter for errorMessage
  150.          * @return
  151.          *
  152.          */  
  153.         public function get errorMessage():String{
  154.            
  155.             return _errorMessage;
  156.         }   
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.         /**
  164.          * Setter for translated
  165.          * @param inLang
  166.          *
  167.          */  
  168.         public function set errorMessage(inLang:String):void{
  169.            
  170.         }
  171.  
  172.  
  173.        
  174.  
  175.         /**
  176.          *
  177.          * @param e
  178.          *
  179.          */
  180.         private function __onServerResponse(event:ResultEvent):void{
  181.             var json:Object = JSON.decode(event.result as String);
  182.            
  183.             _translated = json.responseData.translatedText;
  184.            
  185.             dispatchEvent(new Event(Event.COMPLETE,true,false));
  186.         }
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.         /**
  194.          *
  195.          * @param e
  196.          *
  197.          */  
  198.         private function __onFaultResponse(event:FaultEvent):void{
  199.            
  200.             _translated = "";
  201.            
  202.             _errorMessage = event.fault.message;
  203.            
  204.             dispatchEvent(new ErrorEvent(ErrorEvent.ERROR,true,false));
  205.         }
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.         override public function toString():String{
  213.             return "GTranslatorAsync";
  214.         }
  215.        
  216.  
  217.        
  218.     }
  219. }

MXML impementation

Actionscript:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:translate="com.mattimatti.translate.*"
  3.    
  4.     creationComplete="creationCompleteHandler()"
  5.     >
  6.     <mx:Script>
  7.         <![CDATA[
  8.             import mx.controls.Alert;
  9.             import com.pukkas.tracing.TracePanelController;
  10.            
  11.            
  12.            
  13.            
  14.             private function creationCompleteHandler():void{
  15.  
  16.                 translator.translate("shit","en|fr");
  17.             }
  18.  
  19.  
  20.             private function onComplete(e:Event):void{
  21.                 Alert.show(translator.translated);
  22.                
  23.             }
  24.            
  25.            
  26.            
  27.            
  28.             private function onError(e:ErrorEvent):void{
  29.                 Alert.show(translator.errorMessage);
  30.             }         
  31.  
  32.            
  33.            
  34.         ]]>
  35.     </mx:Script>
  36.    
  37.    
  38.    
  39.     <translate:GTranslatorAsync id="translator" complete="onComplete(event)" error="onError(event)"/>
  40. </mx:WindowedApplication>

Comments are closed.

Image compression on this page is provided by WordPress Image Compressor