-- Metaplace Chat System v1.0 Web Functionality Extension -- Translation Chat Feature -- Author: Jeff The Intern -- Revision History -- 06/16/08 J.McNab - New script -- Language Codes LANGUAGE = { ['ENGLISH'] = "en", ['EN'] = "en", ['FRENCH'] = "fr", ['FR'] = "fr", ['CHINENSE-TRAD'] = "zh", ['ZH'] = "zh", ['CHINESE-SIMP'] = "zt", ['ZT'] = "zt", ['DUTCH'] = "nl", ['NL'] = "nl", ['GERMAN'] = "de", ['DE'] = "de", ['ITALIAN'] = "it", ['IT'] = "it", ['JAPANESE'] = "ja", ['JA'] = "ja", ['KOREAN'] = "ko", ['KO'] = "ko", ['PORTUGUESE'] = "po", ['PO'] = "po", ['RUSSIAN'] = "ru", ['RU'] = "ru", ['SPANISH'] = "es", ['ES'] = "es", ['GREEK'] = "el", ['EL'] = "el"} -- Define Base Properties Define Properties() -- Include chat_utility script IncludeScript('11302:12') chat_translate = { sender_name = '', message = ''} end Trigger attach() --/translate : SendTo(self, 'chat_system_register_command', 0, 'translate', 'Translate a line of text from one language to another', 0, 0) SendTo(self, 'chat_system_register_alias', 0, 'trans', 'translate') end Trigger detach() SendTo(self, 'chat_system_unregister_command', 0, 'translate') end Trigger chat_msg_translate(sender, full_message) local channel = chat_system_channel_name('user', sender.name) --Parse the full message into words local words = string.split(full_message, ' ') if (#words >= 3) then local origin_lang = string.upper(words[1]) local dest_lang = string.upper(words[2]) local translate_message = "" for i=3,#words,1 do translate_message = translate_message .. words[i] .. " " end if(LANGUAGE[origin_lang] == nil) then chat_system_send_to_subscribers(self, sender, channel, "Cannot find language: " .. origin_lang, 'translate') chat_system_set_callback(sender, CHAT_STATUS_CODES.OK, 'OK') end if(LANGUAGE[dest_lang] == nil) then chat_system_send_to_subscribers(self, sender, channel, "Cannot find language: " .. dest_lang, 'translate') chat_system_set_callback(sender, CHAT_STATUS_CODES.OK, 'OK') end if(LANGUAGE[origin_lang] ~= nil and LANGUAGE[dest_lang] ~= nil) then chat_system_send_to_subscribers(self, sender, channel, "Translating...", 'translate') chat_system_set_callback(sender, CHAT_STATUS_CODES.OK, 'OK') --Format the message for http local translate_message_http = string.gsub(translate_message, ' ', '+') translate_message_http = string.sub(translate_message_http, 1, string.len(translate_message_http) - 1) --Build HTTP request local url = "http://babelfish.yahoo.com/translate_txt" local method = "POST" local body = "ei=UTF-8&doit=&done&fr=bf-home&intl=1&tt=urltext&trtext=" .. translate_message_http .. "&lp="..LANGUAGE[origin_lang].."_"..LANGUAGE[dest_lang].."&btnTrTxt=Translate" SendTo(sender, 'chat_web_tools_trigger', 0, 'translate', url, method, body) end else -- Show list of possible languages -- TODO: Localize message = {"Usage", " /translate original_language destination_language message", "Possible Languages", " English(en), Chinese-Trad(zt), Chinese-Simp(zh), Dutch(nl), French(fr), German(de), Greek(el), Italian(it), Japanese(ja), Korean(ko), Portuguese(pt), Russian(ru), Spanish(es)"} for _, line in ipairs(message) do chat_system_send_to_subscribers(self, sender, channel, line, 'translate') end chat_system_set_callback(sender, CHAT_STATUS_CODES.OK, 'OK') end end