- OpenLaszlo紹介
- プログラム構造関連
- スクリプト
- Javascript基礎
- 基礎知識
- ビュー<view>
- レイアウト
- 動かす
- 入力デバイス
- 文字
- 数値
- 日付
- オブジェクト指向
- 標準コンポーネント
- データの扱い
- データ操作(基礎)
- 応用編
–
Google AJAX Language API(翻訳API)を使ってます。このAPIはXMLじゃなくJSONで返って来るので処置に困るのですが、戻り値の翻訳文字列の前後を機械的に削除することでとりあえず対応^^; エラー処理とかは考えてません。とりあえずということで。。
<canvas proxied="false" bgcolor="0xcccccc"> <dataset name="ds" request="true" type="http" src="${'http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=' + query.text + '&langpair=ja%7Cen'}" > <handler name="ondata"><![CDATA[ var d = this.getPointer().xpathQuery("ds:/text()"); d = d.replace('{"responseData": {"translatedText":"',""); d = d.replace('"}, "responseDetails": null, "responseStatus": 200}',""); res.setAttribute('text',d); ]]></handler> </dataset> <simplelayout/> <edittext id="query" width="100%">こんにちは。お元気ですか?</edittext> <button onclick="ds.doRequest()">翻訳</button> <text id="res"/> </canvas>
▼専用ライブラリを使ってJSONデータをきちんと取り扱ったバージョンはこちら
http://www.openlaszlo-ason.com/doku.php/json
入力した文章の言語を自動で識別して英語に翻訳する仕組みになっています。
(OpenLaszlo4.9.0/swf8)
<canvas proxied="false" bgcolor="0xcccccc"> <dataset name="lang_ds" request="false" type="http" src="${'http://ajax.googleapis.com/ajax/services/language/detect?v=1.0&q=' + query.text }" > <handler name="ondata"><![CDATA[ lang_res_str = new String(this.getPointer().xpathQuery("lang_ds:/text()")); lang_last = lang_res_str.indexOf(","); lang_str = new String(lang_res_str.substring(30,lang_last-1)); tran_ds.setAttribute('src',"http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=" + query.text + "&langpair=" +lang_str+"%7Cen"); tran_ds.doRequest(); ]]></handler> </dataset> <dataset name="tran_ds" request="false" type="http" > <handler name="ondata"><![CDATA[ res_str = new String(this.getPointer().xpathQuery("tran_ds:/text()")); last = res_str.indexOf(","); results = res_str.substring(36,last-2); res.setAttribute('text',results); ]]></handler> </dataset> <dataset name="test"/> <simplelayout/> <edittext id="query" width="100%">こんにちは。お元気ですか?</edittext> <button onclick="lang_ds.doRequest()">翻訳</button> <text id="res"/> </canvas>