43 lines
981 B
TypeScript
43 lines
981 B
TypeScript
import { newPromise } from "../utils";
|
|
import googleTranslateApi from "@asmagin/google-translate-api";
|
|
import translate from "@asmagin/google-translate-api";
|
|
|
|
const languages = googleTranslateApi.languages;
|
|
|
|
export abstract class Translator {
|
|
abstract translate(
|
|
toTranslate: string,
|
|
langs: LanguagePair
|
|
): Promise<Translation>;
|
|
|
|
abstract get_languages(): Promise<Language[]>;
|
|
}
|
|
|
|
export class GTranslate extends Translator {
|
|
async translate(
|
|
toTranslate: string,
|
|
langs: LanguagePair
|
|
): Promise<Translation> {
|
|
const resp = await (translate as any)(toTranslate, {
|
|
from: langs.srcLang.code,
|
|
to: langs.dstLang.code,
|
|
}, {credentials: "omit"});
|
|
return {
|
|
src: resp.from.text.value,
|
|
languages: langs,
|
|
result: resp.text,
|
|
};
|
|
}
|
|
|
|
async get_languages() {
|
|
const res: Language[] = Object.keys(languages).map((k) => {
|
|
const v = (languages as any)[k as any] as string;
|
|
return {
|
|
code: k,
|
|
name: v,
|
|
};
|
|
});
|
|
return Promise.resolve(res);
|
|
}
|
|
}
|