-
Notifications
You must be signed in to change notification settings - Fork 133
Expand file tree
/
Copy pathindex.html
More file actions
193 lines (169 loc) · 5.36 KB
/
index.html
File metadata and controls
193 lines (169 loc) · 5.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="Access-Control-Allow-Origin" content="*" />
<title>Document</title>
</head>
<body>
<div>
<label for="appid">appid</label>
<input type="text" class="appid" id="appid" />
<label for="key">秘钥</label>
<input type="text" class="key" id="key" />
<label for="level">去重等级</label>
<select name="level" id="" class="level">
<option value="simple">简单</option>
<option value="middle">中等</option>
<option value="high">高级</option>
</select>
<a
target="_blank"
href="https://api.fanyi.baidu.com/api/trans/product/apichoose"
>获取百度通用翻译API</a
>
</div>
<hr />
<div>
<textarea
name=""
class="fromText"
cols="50"
rows="20"
placeholder="输入要转换的文本"
></textarea>
<button class="switchBtn">转换</button>
<textarea name="" class="toText" cols="50" rows="20"></textarea>
</div>
<br />
日志:
<textarea name="" class="log" cols="60" rows="10">
请先到百度翻译开放平台注册账号、实名认证免费升级到高级版、申请通用翻译api、将appid和密钥粘贴到本工具
如果出现闪退,请先自行检查
1. 是否是个人账户
2. 是否进行了高级认证
3. 是否开通了通用翻译api
</textarea>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/blueimp-md5/2.18.0/js/md5.js"></script>
<script>
var fromTextEle = $(".fromText"),
toTextELe = $(".toText"),
switchBtnEle = $(".switchBtn"),
appid = "20210323000739360", // 设置默认appid
key = "82GT5f3GpFEjNsNBPF1c"; // 设置默认key
// 关于appid和key信息,强烈建议同学们自行免费申请,避免卡顿
// 申请地址: https://api.fanyi.baidu.com/api/trans/product/apichoose
/*
初级 中->英->德->中
中级 中->英->德->日->葡萄牙->中
高级 中->英->德->日->葡萄牙->意大利->波兰->保加利亚->爱沙尼亚->中
*/
var transList = {
simple: ["zh en", "en de", "de zh"],
middle: ["zh en", "en de", "de jp", "jp pt", "pt zh"],
high: [
"zh en",
"en de",
"de jp",
"jp pt",
"pt it",
"it pl",
"pl bul",
"bul est",
"est zh",
],
};
var mode = "simple";
// 生成API参数
function genParams(q, from, to) {
var url = "https://fanyi-api.baidu.com/api/trans/vip/translate";
var data = {
q: q,
from: from,
to: to,
appid: appid,
salt: "",
sign: "",
};
data.salt = Math.floor(Math.random() * 10000000000);
data.sign = md5(appid + q + data.salt + key);
return { url, data };
}
// 翻译
function translate(q, from, to) {
var params = genParams(q, from, to);
return new Promise((resolve, reject) => {
$.ajax({
type: "POST",
url: params.url,
data: params.data,
dataType: "jsonp",
headers: {
"Content-Type": "application/x-www-form-urlencoded",
},
success: (res) => {
log("from: " + from, "; ", "to:" + to);
resolve(res);
},
error: () => {
reject();
},
});
});
}
// 翻译队列
function queen(str) {
var dst = str;
(async () => {
for (let i = 0; i < transList[mode].length; i++) {
var lang = transList[mode][i].split(" ");
res = await translate(dst, lang[0], lang[1]);
dst = res.trans_result[0].dst;
log("result: ", dst);
}
toTextELe.text(dst);
})();
}
// 开始翻译
function starSwitch() {
appid = $(".appid").val();
key = $(".key").val();
if (fromTextEle.val() === "" || appid === "" || key === "") {
log("请将appid key和要翻译的文本补充完整");
return false;
}
mode = $(".level option:selected").val();
setCacheData();
queen(fromTextEle.val());
}
// 日志
function log(...params) {
var insertStr = params.join("");
logEle = $(".log");
logEle.text(insertStr + "\n" + logEle.text());
}
// 缓存appid和key
function setCacheData() {
localStorage.setItem("appid", $(".appid").val());
localStorage.setItem("key", $(".key").val());
}
// 读取缓存中的appid和key
function getCacheData() {
var appid = localStorage.getItem("appid");
var key = localStorage.getItem("key");
if (appid + key + $(".appid").val() + $(".key").val() !== "") {
$(".appid").val(appid);
$(".key").val(key);
}
}
function init() {
getCacheData();
$(".switchBtn").click(starSwitch);
}
init();
</script>
</body>
</html>