::mayukoの小ネタ 50行で作ったかんたん翻訳機

   
  

 投稿者 ::mayuko

ちょっちmayukoの小ネタということで、なんかスクリプトとか書くことになりました:)
なんかいいのないかなぁ?と・・・
んでこんなのどかな?

お題:たった50行のLSLで作るかんたん翻訳機!
*ブログの勝手な改行は抜きで50行だよ:)

外部サーバのPHPとか、余計なサーバを通さないで
SLから直接GoogleさんのAjaxapiに問い合わせさせてるので
レスポンスは軽いと思います。
でも、このslingのブログのためのネタとして作ったので、
余計な機能はなんにもありません。そこらへん許してねw

この翻訳はJavaScript用に公開してるgoogleさんのサービスなのですが
PHPとかrubyとかのスクリプトでも使えるようなサービスもあったりします。
ならLSLで書いちゃえばぁ?
って感じでちょっち書いてみたw

このスクリプトはパブリックライセンスということで著作権は放棄です。
好きに使ってくださいね:)

で、こんな感じw
*ホントはきれいにならんだコード書きたいのだけど、preタグ書いちゃうと
横にはみ出しちゃうので、左にぺたっとくっついちゃうのは許してね;;

key keyOwner;
integer listenDialog;
integer listenChat;
string ajaxURI_F = "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=";
string ajaxURI_S = "&langpair=";
list listButton = ["英和","和英"];
list listStr = ["en%7Cja","ja%7Cen"];
string strDialog = "翻訳するのは日本語?英語?\n/7でしゃべってね:)";
key keyRes;
string langPair;
default
{
	on_rez(integer start_param)
	{
		llResetScript();
	}
	state_entry()
	{
		keyOwner =llGetOwner();
	}
	touch_start(integer total_number)
	{
		listenDialog =llListen(500,"",keyOwner,"");
		llDialog(keyOwner,strDialog,listButton,500);
	}
	listen(integer channel, string name, key id, string message)
	{
		if(channel ==500){
			llListenRemove(listenDialog);
			integer indexnum = llListFindList(listButton,[message]);
			langPair = llList2String(listStr,indexnum);
			listenChat =llListen(7,"",keyOwner,"");
		}else if(channel ==7){
			llListenRemove(listenChat);
			string requestMessage =llEscapeURL(message);
			keyRes = llHTTPRequest(ajaxURI_F + requestMessage + ajaxURI_S + langPair,[],"");
		}
	}
	http_response(key request_id, integer status, list metadata, string body)
	{
		if(status ==200){
			integer cherNum = llSubStringIndex(body,"translatedText");
			integer cherNum_end = llSubStringIndex(body,"responseDetails");
			string response = llGetSubString(body, cherNum + 17, cherNum_end - 6);
			llOwnerSay(response);
		}else{
			llOwnerSay((string)status);
		}
	}
}

※preタグにスクロールバーで対応するようにしました。

コードだけ書き込んじゃいましたが、これを教材にスクリプトってどんな感じで
書くのん?って言う解説なんかをしてみよーかと思います:)



関連する投稿


セカンドライフ土地レンタルのSLingトップへ戻る

Leave a Reply

You must be logged in to post a comment.