--#Utilises viluon's Google Translate - http://www.computercraft.info/forums2/index.php?/topic/18568-google-translate-in-cc/
glass = peripheral.wrap("left") -- #Terminal Glasses (OpenPeripherals)
chat = peripheral.wrap("right") -- #Chatbox (MoarPeripherals)
glass.clear()
in_lang = "en"
out_lang = "fr"
me = "playername"
encode = textutils.urlEncode
translations = {}
chatTimers = {}
term.clear()
term.setCursorPos(1,1)
print("Terminal Glasses Translate By ValiarMarcus")
print("Powered by Google Translate c/o viluon")
function responseClean(rStr)
rStr=string.sub(rStr,string.find(rStr,"<parse>(.-)</parse>")) --#cleans out crazy header
rStr=string.gsub(rStr,"<(.-)>","") --#cleans out parses
rStr=string.gsub(rStr,"\n","") --#cleans out random newline
rStr=string.gsub(rStr,"%+"," ") --#re-inserts spaces
return rStr
end
function outputFormat(oStr, lang)
oStr="http://acos.bluefile.cz/translate.php?input="..encode(oStr).."&from=auto&to="..lang
return oStr
end
function translate(str, lang)
return responseClean(http.get(outputFormat(str,lang)).readAll())
end
function glassOutput(user, message)
local output = string.format("<%s> %s", user, message)
translations[#translations+1] = output
chatTimers[os.startTimer(5)]=true
glassPrint()
end
function glassPrint()
glass.clear()
glass.addBox(1,10,320,#translations*12,0x000000,0.4)
for i,j in pairs(translations) do
glass.addText(5,i*12,j,0xFFFFFF)
end
end
function chatPrint(name, message)
local output = string.format("<%s> %s", user, message)
chat.say(output)
end
while true do
local event, param1, param2, param3, param4 = os.pullEvent()
if event == "chat_message" then
local translation = translate(param3,in_lang)
if translation ~= param3 then --#only print if it wasn't in English
glassOutput(param2, translation)
end
elseif event == "chat_command" then
chatPrint(me, translate(param1, out_lang))
elseif event == "timer" then
table.remove(translations,1)
chatTimers[param1]=nil
glassPrint()
end
end