i18n-ai-translate
Version:
Use LLMs to translate your i18n JSON to any language.
54 lines • 2.45 kB
JavaScript
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
;