hilburn

Terminal Glasses Translate

Jul 17th, 2014
240
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.33 KB | None | 0 0
  1. --Utilises viluon's Google Translate - http://www.computercraft.info/forums2/index.php?/topic/18568-google-translate-in-cc/
  2.  
  3. glass = peripheral.wrap("left") -- Terminal Glasses (OpenPeripherals)
  4. chat = peripheral.wrap("right") -- Chatbox (MoarPeripherals)
  5.  
  6. glass.clear()
  7.  
  8. in_lang = "en"
  9. out_lang = "fr"
  10.  
  11. me = "playername"
  12.  
  13. encode = textutils.urlEncode
  14.  
  15. translations = {}
  16. chatTimers = {}
  17.  
  18. term.clear()
  19. term.setCursorPos(1,1)
  20. print("Terminal Glasses Translate By ValiarMarcus")
  21. print("Powered by Google Translate c/o viluon")
  22.  
  23. function responseClean(rStr)
  24.         rStr=string.sub(rStr,string.find(rStr,"<parse>(.-)</parse>")) --cleans out crazy header
  25.         rStr=string.gsub(rStr,"<(.-)>","") --cleans out parses
  26.         rStr=string.gsub(rStr,"\n","") --cleans out random newline
  27.         rStr=string.gsub(rStr,"%+"," ") --re-inserts spaces
  28.         return rStr
  29. end
  30.  
  31. function outputFormat(oStr, lang)
  32.         oStr="http://acos.bluefile.cz/translate.php?input="..encode(oStr).."&from=auto&to="..lang
  33.         return oStr
  34. end
  35.  
  36. function translate(str, lang)
  37.         return responseClean(http.get(outputFormat(str,lang)).readAll())
  38. end
  39.  
  40. function glassOutput(user, message)
  41.         local output = string.format("<%s> %s", user, message)
  42.         translations[#translations+1] = output
  43.         chatTimers[os.startTimer(5)]=true
  44.         glassPrint()
  45. end
  46.  
  47. function glassPrint()
  48.         glass.clear()
  49.         glass.addBox(1,10,320,#translations*12,0x000000,0.4)
  50.         for i,j in pairs(translations) do
  51.                 glass.addText(5,i*12,j,0xFFFFFF)
  52.         end
  53. end
  54.  
  55. function chatPrint(name, message)
  56.         local output = string.format("<%s> %s", user, message)
  57.         chat.say(output)
  58. end
  59.  
  60. while true do
  61.         local event, param1, param2, param3, param4 = os.pullEvent()
  62.         if event == "chat_message" then
  63.                 local translation = translate(param3,in_lang)
  64.                 if translation ~= param3 then --only print if it wasn't in English
  65.                         glassOutput(param2, translation)
  66.                 end
  67.         elseif event == "chat_command" then
  68.                 chatPrint(me, translate(param1, out_lang))
  69.         elseif event == "timer" then
  70.                 table.remove(translations,1)
  71.                 chatTimers[param1]=nil
  72.                 glassPrint()
  73.         end
  74. end
Advertisement
Add Comment
Please, Sign In to add comment