Flexで日本語2英語、英語2日本語をやってみたよ
FlexでGoogle 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>
- 参考リンク
- JSON形式をオブジェクトに変換したりできる便利なライブラリ