UNPKG

auto-translate-json-library

Version:

Automatically translates JSON language files to other languages using Google Translate,AWS,Azure,DeepL,OpenAI or local OpenAI compatible server

63 lines (62 loc) 2.86 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.GoogleTranslate = void 0; const v2_1 = require("@google-cloud/translate/build/src/v2"); const util_1 = require("./util"); class GoogleTranslate { constructor(googleTranslate, supportedLanguages = []) { this.googleTranslate = googleTranslate; this.supportedLanguages = supportedLanguages; } static initialize(apiKey) { return __awaiter(this, void 0, void 0, function* () { const googleTranslate = new v2_1.Translate({ key: apiKey }); const supportedLanguages = yield GoogleTranslate.getSupportedLanguages(googleTranslate); return new GoogleTranslate(googleTranslate, supportedLanguages); }); } static getSupportedLanguages(translate) { return __awaiter(this, void 0, void 0, function* () { const [languages] = yield translate.getLanguages(); return languages.map((language, _index, _array) => language.code.toLowerCase()); }); } isValidLocale(targetLocale) { return this.supportedLanguages.includes(targetLocale); } translateText(text, _sourceLocale, targetLocale) { return __awaiter(this, void 0, void 0, function* () { let args; ({ args, text } = util_1.Util.replaceContextVariables(text)); let result = ""; try { const response = yield this.googleTranslate.translate(text, targetLocale); result = response[0]; } catch (error) { if (error instanceof Error) { let message = error.message; if (error.message === "Invalid Value") { message = `Invalid Locale ${targetLocale}`; } console.error(message); return message; } return "error"; } // replace arguments with numbers result = util_1.Util.replaceArgumentsWithNumbers(args, result); return result; }); } } exports.GoogleTranslate = GoogleTranslate;