flashlang/src/background/translate.ts

43 lines
949 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(toTranslate, {
from: langs.srcLang.code,
to: langs.dstLang.code,
});
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);
}
}