Blog
AS3 Google Translate via AJAX Language API
3 years, 3 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


[as]
package com.mattimatti.translate
{
import com.adobe.serialization.json.JSON;

import flash.events.ErrorEvent;
import flash.events.Event;

import mx.controls.Alert;
import mx.rpc.AsyncToken;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.rpc.http.HTTPService;

[Event(name="complete", type="flash.events.Event")]

[Event(name="error", type="flash.events.ErrorEvent")]

public class GTranslatorAsync extends HTTPService
{

private var _translated:String = “”;

private var _errorMessage:String = “”;

/**
* Constructor
*
*/
public function GTranslatorAsync()
{

super(null, null);

url = “http://ajax.googleapis.com/ajax/services/language/translate”;
request.v = “1.0″;

addEventListener(ResultEvent.RESULT, __onServerResponse);
addEventListener(FaultEvent.FAULT, __onFaultResponse);
}

/**
*
* @param inString the string to translate
* @param inLangPair the lang pair in format es|en
*
*/
public function translate(inString:String, inLangPair:String = null):void{

if(inLangPair)langpair=inLangPair;

request.q = inString;

if(!langpair)throw new Error(“SPECIFY_LANGPAIR”);

super.send();
}

/**
* Ovverrides function to inable it
*
*/
override public function send(parameters:Object = null):AsyncToken{

throw new Error(“UNIMPLEMENTED_METHOD”)
}

/**
* Setter for langpair
* @param inLang
*
*/
public function set langpair(inLang:String):void{
if(inLang.length!=5)throw new Error();
if(inLang.indexOf(“|”)!=2)throw new Error();
request.langpair = inLang;
}

/**
* getter for langpair
* @return
*
*/
public function get langpair():String{
return request.langpair;
}

/**
* Setter for translated
* @param inLang
*
*/
public function set translated(inLang:String):void{

}

/**
* getter for translated
* @return
*
*/
public function get translated():String{

return _translated;
}

/**
* getter for errorMessage
* @return
*
*/
public function get errorMessage():String{

return _errorMessage;
}

/**
* Setter for translated
* @param inLang
*
*/
public function set errorMessage(inLang:String):void{

}

/**
*
* @param e
*
*/
private function __onServerResponse(event:ResultEvent):void{
var json:Object = JSON.decode(event.result as String);

_translated = json.responseData.translatedText;

dispatchEvent(new Event(Event.COMPLETE,true,false));
}

/**
*
* @param e
*
*/
private function __onFaultResponse(event:FaultEvent):void{

_translated = “”;

_errorMessage = event.fault.message;

dispatchEvent(new ErrorEvent(ErrorEvent.ERROR,true,false));
}

override public function toString():String{
return “GTranslatorAsync”;
}

}
}
[/as]

MXML impementation

[as]

creationComplete="creationCompleteHandler()"
>

import mx.controls.Alert;
import com.pukkas.tracing.TracePanelController;

private function creationCompleteHandler():void{

translator.translate("shit","en|fr");
}

private function onComplete(e:Event):void{
Alert.show(translator.translated);

}

private function onError(e:ErrorEvent):void{
Alert.show(translator.errorMessage);
}

]]>


[/as]

Comments are closed.