UNPKG

i18n-ai-translate

Version:

AI-powered localization CLI, Node library, and GitHub Action. Translate i18next JSON, Gettext PO, Java .properties, and iOS .strings with ChatGPT, Claude, Gemini, or local Ollama models.

54 lines 2.43 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, options) { const translationVerificationPromptText = (0, prompts_1.translationVerificationPrompt)(inputLanguage, outputLanguage, input, outputToVerify, options); // 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, options) { const stylingVerificationPromptText = (0, prompts_1.stylingVerificationPrompt)(inputLanguage, outputLanguage, input, outputToVerify, options); // 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) { (0, utils_1.printError)(`Failed to verify: ${e}`); } return verification; }; //# sourceMappingURL=verify.js.map