Flexで日本語2英語、英語2日本語をやってみたよ

FlexGoogle API を使った、「日本語2英語」、「英語2日本語」をやってみたよ。
http://moeten.info/flex/20080624_googleLangTrans/bin-release/main.html

Google APIにこのようなクエリを投げると

q 文字列
langpair 変換元言語|変換後言語
http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=hello%20world&langpair=en%7Cit

このように返ってきます。

foo('bar', {"translatedText":"Ciao mondo"}, 200, null)

あとはJSON形式をライブラリを使ってObject形式に変換すればOK

var rawData:String = String(event.result);
var manager:Object = JSON.decode(rawData);

ソースコードはこちら

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()" backgroundGradientAlphas="[1.0, 1.0]" backgroundGradientColors="[#FFFFFF, #FFFFFF]" viewSourceURL="srcview/index.html">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.rpc.events.ResultEvent;
import com.adobe.serialization.json.JSON;
import mx.effects.easing.*;
private function init():void{
}
private function onSend():void{
    myLoading.visible = true;
    if( modeCombo.selectedLabel == "ja2en" ){
        hts.send({
            "q":inputTxt.text,
            "langpair":"ja|en"
        });
    }else if( modeCombo.selectedLabel == "en2ja" ){
        hts.send({
            "q":inputTxt.text,
            "langpair":"en|ja"
        });
    }
}
private function onResult(event:ResultEvent):void{
    myLoading.visible = false;
    //get the raw JSON data and cast to String
    var rawData:String = String(event.result);
    var manager:Object = JSON.decode(rawData);
    //{"responseData": {"translatedText":"ハロー世界"}, "responseDetails": null, "responseStatus": 200}
    outputTxt.text = "" + manager.responseData.translatedText;
    myChange.play([outputTxt]);
}
]]>
</mx:Script>
<!--###########  ###########-->
<mx:Sequence id="myShow">
    <mx:Rotate angleFrom="-30" angleTo="0" easingFunction="Back.easeOut"/>
    <mx:Glow blurXFrom="30" blurYFrom="30" color="0x00ff00"/>
</mx:Sequence>
<mx:Sequence id="myChange">
    <mx:Resize heightFrom="0" heightTo="228" easingFunction="Back.easeOut"/>
    <mx:Glow blurXFrom="30" blurYFrom="30" color="0x00ff00"/>
</mx:Sequence>
<mx:WipeRight id="myWipe"/>
<!--###########  ###########-->
<mx:HTTPService id="hts" url="http://ajax.googleapis.com/ajax/services/language/translate?v=1.0"
    result="onResult(event)" showBusyCursor="true"/>
<!--###########  ###########-->
<mx:Label x="10" y="76" text="入力文字列" fontSize="20" fontWeight="bold"/>
<mx:TextArea paddingTop="5" paddingLeft="5" paddingRight="5" paddingBottom="5" x="451" y="115" width="323" height="228" id="outputTxt"  editable="false" creationCompleteEffect="myShow" cornerRadius="12" borderColor="#015987" borderStyle="solid" borderThickness="6" backgroundColor="#E7FBFF" color="#093741" fontSize="14"/>
<mx:Button x="354" y="193" label="変換⇒" height="103" click="onSend()" width="89" fontSize="13"/>
<mx:ComboBox x="354" y="163" width="89" selectedIndex="0" id="modeCombo">
    <mx:Object label="ja2en"/>
    <mx:Object label="en2ja"/>
</mx:ComboBox>
<mx:Label x="451" y="76" text="出力文字列" fontWeight="bold" fontSize="20"/>
<mx:TextArea paddingTop="5" paddingLeft="5" paddingRight="5" paddingBottom="5" x="10" y="115" width="336" height="228" id="inputTxt" creationCompleteEffect="myShow" cornerRadius="12" borderStyle="solid" borderThickness="6" fontSize="14" backgroundColor="#FBDFFF" borderColor="#96309C" color="#3A0B3C">
    <mx:text><![CDATA[残された作業は、作成したデータグリッドに関するもののみとなりました。また、マネージャの従業員にもまだ対処していません。これは、マネージャ関数で処理します。employeesという新しいvarを追加します。これは配列になります。JSON.decode関数により、employeesは配列としてキャストするだけで、すべてがうまくいくようになります。
]]></mx:text>
</mx:TextArea>
<mx:ProgressBar x="10" y="10" width="764" id="myLoading" indeterminate="true" label=" " showEffect="myWipe" hideEffect="myWipe" visible="false"/>
</mx:Application>