-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathindex.js
50 lines (44 loc) · 1.45 KB
/
index.js
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
const unified = require('unified');
const parser = require('remark-parse');
const remark2rehype = require('remark-rehype');
const googleTranslate = require('google-translate');
const strip = require('./rehype_strip');
const processor = unified()
.use(parser)
.use(remark2rehype)
.use(strip);
function stripMarkdown(doc) {
return processor.process(doc).contents;
}
function buildGoogleTranslateUrl(text, srcLang, distLang) {
if (!srcLang) {
srcLang = 'auto';
}
const encoded = encodeURIComponent(text);
return `https://translate.google.com/#${srcLang}/${distLang}/${encoded}`
}
function translateMarkdownUrl(doc, srcLang, distLang) {
const text = stripMarkdown(doc);
const url = buildGoogleTranslateUrl(text, srcLang, distLang);
return url;
}
function translateMarkdownWithApi(doc, srcLang, distLang, apikey) {
const client = googleTranslate(apikey);
return new Promise((resolve, reject) => {
const callback = (err, translation) => {
if (err) {
reject(err);
return;
}
resolve(translation.translatedText);
};
if (srcLang) {
client.translate(doc, srcLang, distLang, callback);
} else {
client.translate(doc, distLang, callback);
}
});
}
exports.stripMarkdown = stripMarkdown;
exports.translateMarkdownUrl = translateMarkdownUrl;
exports.translateMarkdownWithApi = translateMarkdownWithApi;