parent
37b2fdea80
commit
3ec7c6915f
@ -1,9 +1,16 @@
|
|||||||
import { Translator} from 'deepl-node';
|
import { Translator, TextResult } from 'deepl-node';
|
||||||
|
import { DeeplInLang, DeeplOutLang } from './model';
|
||||||
|
|
||||||
|
|
||||||
const translator = new Translator(require('../keys.json').DEEPL);
|
const translator = new Translator(require('../keys.json').DEEPL);
|
||||||
|
|
||||||
export async function translate(text: string, srcLang:any, targetLang: any): Promise<string> {
|
export async function translate(text: string, srcLang:any, dstLang: any): Promise<string> {
|
||||||
targetLang = targetLang === 'en' ? 'en-US' : targetLang;
|
dstLang = dstLang === 'en' ? 'en-US' : dstLang;
|
||||||
return translator.translateText(text, srcLang, targetLang)
|
if (!(srcLang in DeeplInLang)) { srcLang = 'en'; }
|
||||||
.then((textResult => textResult.text));
|
if (!(dstLang in DeeplOutLang)) { dstLang = 'en'; }
|
||||||
|
return translator.translateText(text, srcLang, dstLang)
|
||||||
|
.then(
|
||||||
|
(textResult: TextResult) => {return textResult.text;},
|
||||||
|
() => ''
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
@ -1,15 +1,23 @@
|
|||||||
|
import { GoogleLang } from './model';
|
||||||
|
|
||||||
const {Translate} = require('@google-cloud/translate').v2;
|
const {Translate} = require('@google-cloud/translate').v2;
|
||||||
|
|
||||||
const projectId = 'translate-reebot';
|
const projectId = 'translate-reebot';
|
||||||
const translator = new Translate({projectId});
|
const translator = new Translate({projectId});
|
||||||
translator.key = require('../keys.json').GOOGLE;
|
translator.key = require('../keys.json').GOOGLE;
|
||||||
|
|
||||||
export async function translate(text: string, targetLang: string): Promise<string> {
|
export async function translate(text: string, dstLang: string): Promise<string> {
|
||||||
return translator.translate(text, targetLang)
|
return translator.translate(text, dstLang)
|
||||||
.then(([result] : any) => result);
|
.then(
|
||||||
|
([result] : any) => result,
|
||||||
|
(error: any) => console.log(error)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function detect(text: string): Promise<string> {
|
export async function detect(text: string): Promise<string> {
|
||||||
return translator.detect(text)
|
return translator.detect(text)
|
||||||
.then(([result] : any) => result.language === 'und' ? 'en' : result.language);
|
.then(
|
||||||
|
([result] : any) => !(result.language in GoogleLang) ? 'en' : result.language,
|
||||||
|
(error: any) => console.log(error)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,14 @@
|
|||||||
|
// subset of https://cloud.google.com/translate/docs/languages
|
||||||
|
export enum GoogleLang {
|
||||||
|
de, en, uk, es, fr, it, ru
|
||||||
|
}
|
||||||
|
|
||||||
|
// subset of https://www.deepl.com/docs-api/translating-text/
|
||||||
|
export enum DeeplInLang {
|
||||||
|
de, en, es, fr, it, ru
|
||||||
|
}
|
||||||
|
|
||||||
|
// subset of https://www.deepl.com/docs-api/translating-text/
|
||||||
|
export enum DeeplOutLang {
|
||||||
|
de, 'en-US', es, fr, it, ru
|
||||||
|
}
|
Loading…
Reference in new issue