株式会社ライブキャストロゴ 株式会社ライブキャスト

ActionScript3.0でJSON読み込む方法の続きです。たいしたことはやっていないのですが、google翻訳APIの翻訳結果JSONを読み込むswfのソースを公開します。ダウンロードはこちらから。

ポイントをいくつか。

1.一応MVCパターンで構成されています。WEB+DB PRESS Vol.46|gihyo.jp … 技術評論社の特集を参考にしました。

2.Web APIコール部分はHTTPServiceクラスを継承し、google翻訳APIコール部分をラップしている点でしょうか・・・

public class TranslateService extends HTTPService
{
public function TranslateService(rootURL:String=null, destination:String=null)
{
super(rootURL, destination);
}

public function initService():void {
this.method = "post";
this.url = "http://ajax.googleapis.com/ajax/services/language/translate";
this.addEventListener(ResultEvent.RESULT, onResult);
this.addEventListener(FaultEvent.FAULT, onFault);
}

private function Translate(v:String, q:String, languageFrom:String, languageTo:String):void {
var forms:URLVariables = new URLVariables();
forms.v = v;
forms.q = q;
forms.langpair = languageFrom + "|" + languageTo;
this.request = forms;
this.send();
}
}


3.それと前回の記事にもありますが、JSONの読込にas3corelibを利用しているところですね。

private function onResult(event:ResultEvent):void {
var json:Object = JSON.decode(event.result.toString());
if (json.responseStatus == 200) {
this._controller.setTranslated(json.responseData.translatedText);
}
else {
this._controller.setTranslated("翻訳失敗...");
}
}

最後に。
このアプリはflashcastが10人で構成されていることから、自分を除いて、9ヶ国語対応しています。言語はlanguage-config.xmlに定義してあるので、増やしたり減らしたりはご自由に。リコンパイルが必要ですが。すんません・・・

<?xml version="1.0" encoding="UTF-8"?>
<languages>
<language>
<label>English</label>
<data>en</data>
</language>
<language>
<label>Japanese</label>
<data>ja</data>
</language>
<!-- 中略 -->
<language>
<label>Korean</label>
<data>ko</data>
</language>
</languages>

機能するのはもちろんgoogle翻訳APIが対応している言語だけですけど。
Class Reference for Translation API – Google AJAX Language API – Google Code