易语言编写翻译小工具源码
.版本 2
.支持库 EXMLParser
.支持库 spec
.支持库 EThread
.程序集 窗口程序集_启动窗口
.子程序 子程序_翻译
子程序_发送翻译 (1, 编码_URL编码 (编码_gb2312到utf8 (编辑框_输入.内容), 真, ))
子程序_发送翻译 (2, 编码_URL编码 (编码_gb2312到utf8 (编辑框_输入.内容), 真, ))
子程序_发送翻译 (3, 编码_URL编码 (编码_gb2312到utf8 (编辑框_输入.内容), 真, ))
' 有道: //fanyi.youdao.com/translate?&doctype=json&type=AUTO&i=hello
' 百度: https://fanyi.baidu.com/transapi?from=auto&to=en&query=%E4%BD%A0%E5%A5%BD
' BING: //api.microsofttranslator.com/v2/Http.svc/Translate?appId=AFC76A66CF4F434ED080D245C30CF1E71C22959C&from=&to=zh&text=hello
.子程序 子程序_发送翻译
.参数 翻译接口, 整数型, , 1 为百度,2 为有道,3 为Bing
.参数 翻译内容, 文本型
.局部变量 局_有道访问, 文本型
.局部变量 局_Bing访问, 文本型
.局部变量 局_百度访问, 文本型
.局部变量 局_返回文本, 文本型
.局部变量 局_地址, 文本型
.局部变量 JSON, 类_json
.局部变量 XML, XML树
.局部变量 局_源语种, 文本型
.局部变量 局_目标语种, 文本型
子程序_语种检测 (局_源语种, 局_目标语种)
.判断开始 (翻译接口 = 1)
局_百度访问 = “https://fanyi.baidu.com/transapi?from=%s&to=%s&query=%s”
局_地址 = 取文本 (局_百度访问, 局_源语种, 局_目标语种, 翻译内容)
.判断 (翻译接口 = 2)
局_地址 = “//fanyi.youdao.com/translate?&doctype=json&type=AUTO&i=” + 翻译内容
' 有道POST ://fanyi.youdao.com/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访问 = “//api.microsofttranslator.com/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
易语言有道翻译
易语言怎么编写源码
易语言实现翻译器