diff --git a/plugins/translate.lua b/plugins/translate.lua new file mode 100644 index 0000000..9ba6668 --- /dev/null +++ b/plugins/translate.lua @@ -0,0 +1,79 @@ +--[[ +-- Translate text using Google Translate. +-- http://translate.google.com/translate_a/t?client=z&ie=UTF-8&oe=UTF-8&hl=en&tl=en&text=hello +--]] +do + +function translate(source_lang, target_lang, text) + local path = "http://translate.google.com/translate_a/t" + -- URL query parameters + local params = { + client = "z", -- JSON + ie = "UTF-8", + oe = "UTF-8", + hl = "de", + tl = target_lang or "de", + sl = source_lang or "", + text = URL.escape(text) + } + + local query = format_http_params(params, true) + local url = path..query + + local res, code = https.request(url) + if res == nil then + return 'Text kann momentan nicht übersetzt werden. Probiere es später erneut. URL: '..url + end + -- Return nil if error + if code > 200 then return nil end + + local trans = json:decode(res) + + local sentences = "" + -- Join multiple sencentes + for k,sentence in pairs(trans.sentences) do + sentences = sentences..sentence.trans..'\n' + end + + return sentences +end + +function run(msg, matches) + -- Third pattern + if #matches == 1 then + print("First") + local text = matches[1] + return translate(nil, nil, text) + end + + -- Second pattern + if #matches == 2 then + print("Second") + local target = matches[1] + local text = matches[2] + return translate(nil, target, text) + end + + -- Frist pattern + if #matches == 3 then + print("Third") + local source = matches[1] + local target = matches[2] + local text = matches[3] + return translate(source, target, text) + end + +end + +return { + description = "Übersetze Text", + usage = "/translate [Text]", + patterns = { + "^/translate ([%w]+),([%a]+) (.+)", + "^/translate ([%w]+) (.+)", + "^/translate (.+)", + }, + run = run +} + +end \ No newline at end of file