UNPKG

i18n-ai-translate

Version:

Use LLMs to translate your i18n JSON to any language.

54 lines 2.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.verifyTranslation = verifyTranslation; exports.verifyStyling = verifyStyling; const utils_1 = require("./utils"); const prompts_1 = require("./prompts"); /** * Confirm whether a given translation is valid * @param chat - the chat session * @param inputLanguage - the language of the input * @param outputLanguage - the language of the output * @param input - the input text * @param outputToVerify - the output text to verify * @param overridePrompt - An optional custom prompt */ async function verifyTranslation(chat, inputLanguage, outputLanguage, input, outputToVerify, overridePrompt) { const translationVerificationPromptText = (0, prompts_1.translationVerificationPrompt)(inputLanguage, outputLanguage, input, outputToVerify, overridePrompt); // eslint-disable-next-line @typescript-eslint/no-use-before-define return verify(chat, translationVerificationPromptText); } /** * Confirm whether a translation maintains the original styling * @param chat - the chat session * @param inputLanguage - the language of the input * @param outputLanguage - the language of the output * @param input - the input text * @param outputToVerify - the output text to verify * @param overridePrompt - An optional custom prompt */ async function verifyStyling(chat, inputLanguage, outputLanguage, input, outputToVerify, overridePrompt) { const stylingVerificationPromptText = (0, prompts_1.stylingVerificationPrompt)(inputLanguage, outputLanguage, input, outputToVerify, overridePrompt); // eslint-disable-next-line @typescript-eslint/no-use-before-define return verify(chat, stylingVerificationPromptText); } const verify = async (chat, verificationPromptText) => { let verification = ""; try { verification = await (0, utils_1.retryJob)(async () => { const text = await chat.sendMessage(verificationPromptText); if (text === "") { return Promise.reject(new Error("Failed to generate content")); } if (!(0, utils_1.isNAK)(text) && !(0, utils_1.isACK)(text)) { return Promise.reject(new Error(`Invalid response: ${text}`)); } return text; }, [], 5, true, 0, false); } catch (e) { console.error(`Failed to verify: ${e}`); } return verification; }; //# sourceMappingURL=verify.js.map