<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>

<channel>
	<title>Naked Imagination &#187; translation</title>
	<atom:link href="http://robsmart.co.uk/tag/translation/feed/" rel="self" type="application/rss+xml" />
	<link>http://robsmart.co.uk</link>
	<description>Emerging technology, Virtual Worlds and Cultural Observations</description>
	<pubDate>Thu, 17 Dec 2009 15:27:58 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>OpenSim Web 2.0 contribution</title>
		<link>http://robsmart.co.uk/2008/09/14/opensim-web-20-contribution/</link>
		<comments>http://robsmart.co.uk/2008/09/14/opensim-web-20-contribution/#comments</comments>
		<pubDate>Sun, 14 Sep 2008 21:37:51 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
		
		<category><![CDATA[]]></category>

		<category><![CDATA[c#]]></category>

		<category><![CDATA[opensim]]></category>

		<category><![CDATA[opensource]]></category>

		<category><![CDATA[scripting]]></category>

		<category><![CDATA[secondlife]]></category>

		<category><![CDATA[translation]]></category>

		<guid isPermaLink="false">http://robsmart.co.uk/?p=117</guid>
		<description><![CDATA[As described over on Eightbar I have made my first contribution to the OpenSim opensource project. The contribution is in the form of a new scripting function called osParseJSON. This function allows a c# script in OpenSim to consume the JSON notation provided by many of the major Web 2.0 APIs provided by services such [...]]]></description>
			<content:encoded><![CDATA[<p>As described over on <a href="http://eightbar.co.uk">Eightbar</a> I have made my first contribution to the OpenSim opensource project. The contribution is in the form of a new scripting function called <a href="http://opensimulator.org/wiki/OSSL_Implemented">osParseJSON</a>. This function allows a c# script in OpenSim to consume the JSON notation provided by many of the major Web 2.0 APIs provided by services such as Flickr and Google translation.</p>
<p>The following example is a script that uses the Google Translate API to let an OpenSim avatar translate ther conversations between 23 different languages.</p>
<p>(disclaimer - please read the terms of conditions of the Google translate API and abide by them)</p>
<div style="text-align: left;" dir="ltr">
<pre class="source-csharp" style="padding-left: 30px;"><span class="co1">//c#</span>
<span class="co1">// This script is written as an example use of the osParseJSON method</span>
<span class="co1">// it uses the Google translate API</span>
<span class="co1">// ensure you have read the terms and conditions of the Google translate API</span>
<span class="co1">// http://code.google.com/apis/ajaxlanguage/documentation/</span>

LSL_Types.<span class="me1">key</span> requestID;
<span class="kw4">string</span> sourceLang = <span class="st0">"en"</span>;
<span class="kw4">string</span> targetLang = <span class="st0">"fr"</span>;

<span class="kw1">public</span> <span class="kw1">void</span> default_event_state_entry<span class="br0">(</span><span class="br0">)</span>
<span class="br0">{</span>
     llSay<span class="br0">(</span><span class="nu0">0</span>,<span class="st0">"translator running say '/1 sentence' to translate something"</span><span class="br0">)</span>;
     llSay<span class="br0">(</span><span class="nu0">0</span>,<span class="st0">"translator running say '/2 source langage' to change target language e.g. '/2 fr'"</span><span class="br0">)</span>;
     llSay<span class="br0">(</span><span class="nu0">0</span>,<span class="st0">"translator running say '/3 target langage' to change source language e.g. '/3 en'"</span><span class="br0">)</span>;
     llSay<span class="br0">(</span><span class="nu0">0</span>,<span class="st0">"translator running say '/4 help', to list languages"</span><span class="br0">)</span>;
     llListen<span class="br0">(</span><span class="nu0">1</span>, <span class="st0">""</span>, NULL_KEY, <span class="st0">""</span><span class="br0">)</span>;
     llListen<span class="br0">(</span><span class="nu0">2</span>, <span class="st0">""</span>, NULL_KEY, <span class="st0">""</span><span class="br0">)</span>;
     llListen<span class="br0">(</span><span class="nu0">3</span>, <span class="st0">""</span>, NULL_KEY, <span class="st0">""</span><span class="br0">)</span>;
     llListen<span class="br0">(</span><span class="nu0">4</span>, <span class="st0">""</span>, NULL_KEY, <span class="st0">""</span><span class="br0">)</span>;
<span class="br0">}</span>

<span class="kw1">public</span> <span class="kw1">void</span> default_event_touch_start<span class="br0">(</span>LSL_Types.<span class="me1">LSLInteger</span> total_number<span class="br0">)</span>
<span class="br0">{</span>
     llSay<span class="br0">(</span><span class="nu0">0</span>,<span class="st0">"translator running say '/1 sentence' to translate something"</span><span class="br0">)</span>;
     llSay<span class="br0">(</span><span class="nu0">0</span>,<span class="st0">"translator running say '/2 source langage' to change target language e.g. '/2 fr'"</span><span class="br0">)</span>;
     llSay<span class="br0">(</span><span class="nu0">0</span>,<span class="st0">"translator running say '/3 target langage' to change source language e.g. '/3 en'"</span><span class="br0">)</span>;
     llSay<span class="br0">(</span><span class="nu0">0</span>,<span class="st0">"translator running say '/4 help', to list languages"</span><span class="br0">)</span>;
<span class="br0">}</span>

<span class="kw1">public</span> <span class="kw1">void</span> default_event_http_response<span class="br0">(</span>LSL_Types.<span class="me1">LSLString</span> request_id, LSL_Types.<span class="me1">LSLInteger</span> status, LSL_Types.<span class="me1">list</span> metadata, LSL_Types.<span class="me1">LSLString</span> body<span class="br0">)</span>
<span class="br0">{</span>
        <span class="kw1">if</span> <span class="br0">(</span>requestID == request_id<span class="br0">)</span>
        <span class="br0">{</span>
            <span class="co1">// the Google JSON string returned wil be of the format</span>
            <span class="co1">//  {"responseData": {"translatedText":"Bonjour"}, "responseDetails": null, "responseStatus": 200}</span>
            <span class="co1">// call the osParseJSON method so we can read the contents </span>
            <span class="kw5">System</span>.<span class="me1">Collections</span>.<span class="me1">Hashtable</span> response = <span class="br0">(</span><span class="kw5">System</span>.<span class="me1">Collections</span>.<span class="me1">Hashtable</span><span class="br0">)</span> osParseJSON<span class="br0">(</span>body<span class="br0">)</span>;
            <span class="kw5">System</span>.<span class="me1">Collections</span>.<span class="me1">Hashtable</span> responsedata = <span class="br0">(</span><span class="kw5">System</span>.<span class="me1">Collections</span>.<span class="me1">Hashtable</span><span class="br0">)</span> response<span class="br0">[</span><span class="st0">"responseData"</span><span class="br0">]</span>;

            llSay<span class="br0">(</span><span class="nu0">0</span>,<span class="br0">(</span><span class="kw4">string</span><span class="br0">)</span>responsedata<span class="br0">[</span><span class="st0">"translatedText"</span><span class="br0">]</span><span class="br0">)</span>;
        <span class="br0">}</span>
<span class="br0">}</span>

<span class="kw1">public</span> <span class="kw1">void</span> default_event_listen<span class="br0">(</span>LSL_Types.<span class="me1">LSLInteger</span> channelIn, LSL_Types.<span class="me1">LSLString</span> name, LSL_Types.<span class="me1">LSLString</span> id, LSL_Types.<span class="me1">LSLString</span> message<span class="br0">)</span>
<span class="br0">{</span>
    <span class="kw1">if</span><span class="br0">(</span>channelIn==<span class="nu0">1</span><span class="br0">)</span>
    <span class="br0">{</span>
        <span class="kw4">string</span> toTranslate = <span class="br0">(</span><span class="kw4">string</span><span class="br0">)</span> message;
        requestID = llHTTPRequest<span class="br0">(</span> <span class="st0">"http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&amp;q="</span>+toTranslate+<span class="st0">"&amp;langpair="</span>+sourceLang+<span class="st0">"%7C"</span>+targetLang, <span class="kw3">new</span> LSL_Types.<span class="me1">list</span><span class="br0">(</span><span class="br0">)</span>, <span class="st0">""</span> <span class="br0">)</span>;  

    <span class="br0">}</span>
    <span class="kw1">else</span> <span class="kw1">if</span><span class="br0">(</span>channelIn==<span class="nu0">2</span><span class="br0">)</span>
    <span class="br0">{</span>
        sourceLang = <span class="br0">(</span><span class="kw4">string</span><span class="br0">)</span> message;
    <span class="br0">}</span>
    <span class="kw1">else</span> <span class="kw1">if</span><span class="br0">(</span>channelIn==<span class="nu0">3</span><span class="br0">)</span>
    <span class="br0">{</span>
        targetLang = <span class="br0">(</span><span class="kw4">string</span><span class="br0">)</span>message;
    <span class="br0">}</span>
    <span class="kw1">else</span> <span class="kw1">if</span><span class="br0">(</span>channelIn==<span class="nu0">4</span><span class="br0">)</span>
    <span class="br0">{</span>
        llOwnerSay<span class="br0">(</span><span class="st0">"LANGUAGE (CODE)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"*  Arabic (ar)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* Bulgarian (bg)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* Chinese (zh)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* Croatian (hr)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* Czech (cs)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* Danish (da)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* Dutch (nl)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* English (en)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* Finnish (fi)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* French (fr)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* German (de)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* Greek (el)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* Hindi (hi)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* Italian (it)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* Japanese (ja)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* Korean (ko)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* Norwegian(no) "</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* Polish (pl)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* Portuguese (pt-PT)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* Romanian (ro)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* Russian (ru)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* Spanish (es)"</span><span class="br0">)</span>;
        llOwnerSay<span class="br0">(</span><span class="st0">"* Swedish (sv)"</span><span class="br0">)</span>; 

    <span class="br0">}</span>
<span class="br0">}</span></pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://robsmart.co.uk/2008/09/14/opensim-web-20-contribution/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
