From ed875ec77dcde077f9ebf10a61bd1fd6838d36e2 Mon Sep 17 00:00:00 2001 From: berbant <33601955+berbant@users.noreply.github.com> Date: Wed, 31 Jan 2024 22:42:28 +0400 Subject: [PATCH 1/4] Update index.js Added new translateProvider: Lingva Translate --- public/scripts/extensions/translate/index.js | 27 +++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/public/scripts/extensions/translate/index.js b/public/scripts/extensions/translate/index.js index bf2370f1d..fa3af0a2a 100644 --- a/public/scripts/extensions/translate/index.js +++ b/public/scripts/extensions/translate/index.js @@ -139,7 +139,7 @@ const languageCodes = { }; const KEY_REQUIRED = ['deepl', 'libre']; -const LOCAL_URL = ['libre', 'oneringtranslator', 'deeplx']; +const LOCAL_URL = ['libre', 'oneringtranslator', 'deeplx', 'lingva']; function showKeysButton() { const providerRequiresKey = KEY_REQUIRED.includes(extension_settings.translate.provider); @@ -249,6 +249,27 @@ async function translateProviderGoogle(text, lang) { throw new Error(response.statusText); } +/** + * Translates text using an instance of the Lingva Translate + * @param {string} text Text to translate + * @param {string} lang Target language code + * @returns {Promise} Translated text + */ +async function translateProviderLingva(text, lang) { + const response = await fetch('/api/translate/lingva', { + method: 'POST', + headers: getRequestHeaders(), + body: JSON.stringify({ text: text, lang: lang }), + }); + + if (response.ok) { + const result = await response.text(); + return result; + } + + throw new Error(response.statusText); +} + /** * Translates text using the DeepL API * @param {string} text Text to translate @@ -355,6 +376,8 @@ async function translate(text, lang) { return await translateProviderLibre(text, lang); case 'google': return await chunkedTranslate(text, lang, translateProviderGoogle, 5000); + case 'lingva': + return await chunkedTranslate(text, lang, translateProviderLingva, 5000); case 'deepl': return await translateProviderDeepl(text, lang); case 'deeplx': @@ -507,6 +530,7 @@ jQuery(() => {