易语言编写翻译小工具源码

@易小学生.版本 2

.支持库 EXMLParser

.支持库 spec

.支持库 EThread

.程序集 窗口程序集_启动窗口

.子程序 子程序_翻译

子程序_发送翻译 (1, 编码_URL编码 (编码_gb2312到utf8 (编辑框_输入.内容), 真, ))

子程序_发送翻译 (2, 编码_URL编码 (编码_gb2312到utf8 (编辑框_输入.内容), 真, ))

子程序_发送翻译 (3, 编码_URL编码 (编码_gb2312到utf8 (编辑框_输入.内容), 真, ))

' 有道: http://fanyi.youdao/translate?&doctype=json&type=AUTO&i=hello

' 百度: https://fanyi.baidu/transapi?from=auto&to=en&query=%E4%BD%A0%E5%A5%BD

' BING: http://api.microsofttranslator/v2/Http.svc/Translate?appId=AFC76A66CF4F434ED080D245C30CF1E71C22959C&from=&to=zh&text=hello

.子程序 子程序_发送翻译

.参数 翻译接口, 整数型, , 1 为百度,2 为有道,3 为Bing

.参数 翻译内容, 文本型

.局部变量 局_有道访问, 文本型

.局部变量 局_Bing访问, 文本型

.局部变量 局_百度访问, 文本型

.局部变量 局_返回文本, 文本型

.局部变量 局_地址, 文本型

.局部变量 JSON, 类_json

.局部变量 XML, XML树

.局部变量 局_源语种, 文本型

.局部变量 局_目标语种, 文本型

子程序_语种检测 (局_源语种, 局_目标语种)

.判断开始 (翻译接口 = 1)

局_百度访问 = “https://fanyi.baidu/transapi?from=%s&to=%s&query=%s”

局_地址 = 取文本 (局_百度访问, 局_源语种, 局_目标语种, 翻译内容)

.判断 (翻译接口 = 2)

局_地址 = “http://fanyi.youdao/translate?&doctype=json&type=AUTO&i=” + 翻译内容

' 有道POST :http://fanyi.youdao/translate_o?smartresult=dict&smartresult=rule 数据:i=翻译文本&from=源语种&to=目标语种&smartresult=dict&client=fanyideskweb&salt=随机数&sign=/fanyideskweb+翻译文本+随机数+6x(ZHw]mwzX#u0V7@yfwK/&doctype=json&version=2.1&keyfrom=fanyi.web&action=FY_BY_CLICKBUTTION&typoResult=false

.判断 (翻译接口 = 3)

局_Bing访问 = “http://api.microsofttranslator/v2/Http.svc/Translate?appId=AFC76A66CF4F434ED080D245C30CF1E71C22959C&from=&to=%s&text=%s”

局_地址 = 取文本 (局_Bing访问, 局_目标语种, 翻译内容)

.默认

.判断结束

' 局_返回文本 = 到文本 (网页_访问 (局_地址, 0))

.判断开始 (翻译接口 = 1)

局_返回文本 = 编码_Utf8到Ansi (网页_访问 (局_地址, 0))

JSON.解析 (局_返回文本)

局_返回文本 = JSON.取通用属性 (“data[0].result[0][1]”, )

调试输出 (“百度翻译结果:” + 局_返回文本)

翻译文本输出 (局_返回文本, 1)

.判断 (翻译接口 = 2)

局_返回文本 = 编码_Utf8到Ansi (网页_访问 (局_地址, 0))

JSON.解析 (局_返回文本)

局_返回文本 = JSON.取通用属性 (“translateResult[0][0].tgt”, )

调试输出 (“有道翻译结果:” + 局_返回文本)

翻译文本输出 (局_返回文本, 2)

.判断 (翻译接口 = 3)

XML.导入 (网页_访问 (局_地址, 0))

XML.取节点值 (“string”, 局_返回文本)

局_返回文本 = 编码_URL解码 (局_返回文本, 真)

调试输出 (“Bing翻译结果:” + 局_返回文本)

翻译文本输出 (局_返回文本, 3)

.默认

.判断结束

.子程序 翻译文本输出

.参数 内容, 文本型

.参数 翻译工具, 整数型, , 1 为百度翻译,2 为有道翻译,0 为未知

.局部变量 局_翻译工具, 文本型

.判断开始 (翻译工具 = 0)

局_翻译工具 = “未知翻译”

.判断 (翻译工具 = 1)

局_翻译工具 = “百度翻译(可设置目标语种)”

.判断 (翻译工具 = 2)

局_翻译工具 = “有道翻译(中英互译或译为中文)”

.判断 (翻译工具 = 3)

局_翻译工具 = “Bing翻译(支持部分目标语种)”

.默认

.判断结束

编辑框_输出.加入文本 (内容 + #换行符 + #换行符 + “- - - - - - - - - - -” + 局_翻译工具 + #换行符 + #换行符)

.子程序 子程序_语种检测

.参数 源语种, 文本型, 参考

.参数 目标语种, 文本型, 参考

.局部变量 局_语种数组, 文本型, , "0"

.局部变量 i, 整数型

局_语种数组 = 分割文本 (#语种对比, #换行符, )

.如果真 (取数组成员数 (局_语种数组) < 1)

返回 ()

.如果真结束

.计次循环首 (取数组成员数 (局_语种数组), i)

.判断开始 (寻找文本 (局_语种数组 [i], 组合框_源语言.取项目文本 (组合框_源语言.现行选中项), , 假) ≠ -1)

源语种 = 取文本左边 (局_语种数组 [i], 寻找文本 (局_语种数组 [i], “----”, , 假) - 1)

.判断 (寻找文本 (局_语种数组 [i], 组合框_目标语言.取项目文本 (组合框_目标语言.现行选中项), , 假) ≠ -1)

目标语种 = 取文本左边 (局_语种数组 [i], 寻找文本 (局_语种数组 [i], “----”, , 假) - 1)

.默认

.判断结束

.计次循环尾 ()

.子程序 _编辑框_输入_被双击, 逻辑型

.参数 横向位置, 整数型

.参数 纵向位置, 整数型

.参数 功能键状态, 整数型

编辑框_输出.内容 = “”

启动线程 (&子程序_翻译, , )

.子程序 编码_usc2到ansi, 文本型, , 将usc2转变成ansi  如 %u0031%u0032%u0033 转换后为 123 失败返回空文本

.参数 参_欲转换的文本, 文本型, , \u %u \u25 等3种格式,如果是其它格式,请先用子文本替换成这三种的任意一种才能正常转换

.局部变量 变_对象, 对象

.局部变量 变_文本, 文本型

.局部变量 变_返回值, 文本型

变_文本 = 子文本替换 (参_欲转换的文本, #换行符, “{$}”, , , 真)

.如果真 (取字节集左边 (到字节集 (取文本左边 (变_文本, 10)), 1) = { 13 })

变_文本 = 到文本 (子字节集替换 (到字节集 (变_文本), { 13 }, {  }, , 1))

.如果真结束

.判断开始 (寻找文本 (变_文本, “\u”, , 假) ≠ -1)

变_文本 = 子文本替换 (变_文本, “\u”, “%u”, , , 真)

.判断 (寻找文本 (变_文本, “\u25”, , 假) ≠ -1)

变_文本 = 子文本替换 (变_文本, “\u25”, “%u”, , , 真)

.默认

.判断结束

变_文本 = 子文本替换 (变_文本, “'”, “’”, , , 真)

CoInitialize (0)

变_对象.创建 (“ScriptControl”, )

变_对象.写属性 (“Language”, “JScript”)

变_对象.数值方法 (“ExecuteStatement”, “function xx(){var x='” + 变_文本 + “';return unescape(x);}”)

变_返回值 = 变_对象.文本方法 (“Run”, “xx”)

变_文本 = 编码_Unicode到Ansi_对象 (到字节集 (变_文本))

变_返回值 = 选择 (取文本长度 (变_返回值) = 0, 变_文本, 变_返回值)

变_对象.清除 ()

CoUninitialize ()

变_返回值 = 子文本替换 (变_返回值, “’”, “'”, , , 真)

返回 (子文本替换 (变_返回值, “{$}”, #换行符, , , 真))

.子程序 编码_Unicode到Ansi_对象, 文本型, , 带BOM头信息编码转换。

.参数 参_欲转换的内容, 字节集

.局部变量 变_Dx, 对象

.局部变量 变_Text, 文本型

.局部变量 变_btx, 变体型

.局部变量 变_type, 文本型

CoInitialize (0)

变_btx.赋值 (参_欲转换的内容, )

.如果真 (变_Dx.创建 (“Adodb.Stream”, ) = 假)

返回 (“”)

.如果真结束

变_Dx.写属性 (“Type”, 1)

变_Dx.写属性 (“Mode”, 3)

变_Dx.方法 (“Open”, )

变_Dx.方法 (“Write”, 变_btx)

变_Dx.写属性 (“Position”, 0)

变_Dx.写属性 (“Type”, 2)

变_Dx.写属性 (“Charset”, “unicode”)

变_Text = 变_Dx.文本方法 (“ReadText”, )

变_Dx.方法 (“Close”, )

CoUninitialize ()

返回 (变_Text)

.子程序 __启动窗口_创建完毕

_启动窗口.左边 = 取屏幕宽度 () - _启动窗口.宽度 - 50

.子程序 __启动窗口_尺寸被改变

编辑框_输入.宽度 = _启动窗口.宽度 - 10

编辑框_输出.宽度 = _启动窗口.宽度 - 10

' 编辑框_输入.高度 = (窗口_翻译.高度 - 分组框1.高度 - 40) ÷ 2 - 10

编辑框_输出.高度 = _启动窗口.高度 - 编辑框_输入.高度 - 60

编辑框_输出.顶边 = 编辑框_输入.高度 + 15

文件下载

解压密码:

来源:三叶资源网,欢迎分享,公众号:iisanye,(三叶资源网⑤群:21414575)