用了有道云翻译官方的api,因此支持了英日韩译中和中译英(理论上是英日韩西俄法,但是自动识别只能识别出英日韩,其他的只会错译/无结果),原来的标题不再准确了所以重新发一次。
使用教程
- 将文件下载并解压
- 将
WisteriaTranslate.lua
放置于.../Dice[你的QQ号]/plugin
目录下
- 将
json.lua
放置于.../Diceki/lua/
目录下,没有这个目录就新建文件夹建出来,如果同时安装了其他的需要json.lua
的插件,只需要任意保留一个json.lua
- 重启或
.system load
- 指令为
.translate [内容]
- 版本要求>590(感谢タブー術因为这份教程大部分都是抄的)
使用示例
源码
msg_order = {}
function encodeURI(s) --对传入参数编码,兼容中文
s = string.gsub(s, "([^%w%.%- ])", function(c) return string.format("%%%02X", string.byte(c)) end)
return string.gsub(s, " ", "+")
end
msg_order[".translate"]="translate"
function translate(msg)
local rest = string.match(msg.fromMsg,"^[%s]*(.-)[%s]*$",11)--匹配文本
local api="http://fanyi.youdao.com/translate?&doctype=json&type=AUTO&i="
local polar=""
if(rest and #rest>0)then
rest=encodeURI(rest)--编码
polar=api..rest--拼接
else--空参,返回默认说明文字
return"你摊开了墨绿色的羊皮纸卷,上面写到……\nWisteriaTranslate ver2.0 by 32w\n发布于dice!论坛,使用方法:.translate [翻译内容],支持英日韩译中和中译英"
end
json=require "json"
res,data = http.get(polar)
j=json.decode(data)
if(j.errorCode==0)then
return j.translateResult[1][1].tgt
else
return "泛着贝类光泽的笔迹溶解于书中,未找到对应翻译"
--j=json.decode(data)
end
end
多行翻译
@Nightless 在楼下贴出的代码~附在这里
将这一内容替换 j.errorCode==0 那一段就能搞定了
if(j.errorCode==0)then
local num1 = 1
local text = ""
local max1 = #j.translateResult
repeat --第一层
local num2 = 1
local max2 = #j.translateResult[num1]
repeat--第二层
text = text..string.sub(j.translateResult[num1][num2].tgt, 1)
num2 = num2 + 1
until (num2 > max2 )
if(num1 < max1)then
text = text.."{br}"
end
num1 = num1 + 1
until( num1 > max1 ) --条件为真则跳出循环
return text
else
return "(摇头)这个我不知道哦。"
--j=json.decode(data)
end
文件