-- "Переведи буфер на английский" → grab clipboard, translate, speak, put back local phrase = (jarvis.context.phrase or ""):lower() -- Detect target language from phrase, default English. local target = "english" if phrase:find("на русск") then target = "русский" elseif phrase:find("на немецк") then target = "немецкий" elseif phrase:find("на французск") then target = "французский" elseif phrase:find("на испанск") then target = "испанский" elseif phrase:find("на итальянск") then target = "итальянский" elseif phrase:find("на польск") then target = "польский" elseif phrase:find("на турецк") then target = "турецкий" elseif phrase:find("на китайск") then target = "китайский" elseif phrase:find("на японск") then target = "японский" elseif phrase:find("german") then target = "german" elseif phrase:find("french") then target = "french" elseif phrase:find("spanish") then target = "spanish" elseif phrase:find("english") then target = "english" elseif phrase:find("russian") then target = "русский" end local src = jarvis.system.clipboard.get() if not src or src == "" then jarvis.speak("Буфер пуст.") jarvis.audio.play_not_found() return { chain = false } end -- Trim long input — translate first ~2000 chars for cost/latency. if #src > 2000 then src = src:sub(1, 2000) .. "..." end local result = jarvis.llm({ { role = "system", content = "Ты переводчик. Переводи строго на запрошенный язык без комментариев и пояснений. Сохраняй смысл и стиль." }, { role = "user", content = string.format("Переведи на %s:\n\n%s", target, src) } }, { max_tokens = 800, temperature = 0.2 }) if not result or result == "" then jarvis.speak("Не получилось перевести.") jarvis.audio.play_error() return { chain = false } end -- Put translation back into clipboard jarvis.system.clipboard.set(result) -- Speak only first sentence to avoid long monologue. local first_sentence = result:match("^[^%.!?]*[%.!?]") or result:sub(1, 200) jarvis.speak("Перевёл на " .. target .. ". " .. first_sentence) jarvis.system.notify("Перевод (в буфере)", result:sub(1, 200)) jarvis.audio.play_ok() return { chain = false }