auto-translatr
Version:
An automatic translation library
67 lines (66 loc) • 3.59 kB
JavaScript
;
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.run = exports.parseCodeBaseTranslations = void 0;
const utils_1 = require("./utils");
const translationsReader_1 = require("./translationsReader");
const translationsParser_1 = require("./translationsParser");
const openaiClient_1 = require("./openaiClient");
const codebaseReader_1 = require("./codebaseReader");
const settingsReader_1 = require("./settingsReader");
const parseCodeBaseTranslations = (settings) => __awaiter(void 0, void 0, void 0, function* () {
const codebaseConfig = {
include: settings.include,
ignore: settings.ignore
};
const translationConfig = {
output: settings.output
};
const readResult = yield (0, codebaseReader_1.read)(codebaseConfig);
if ((0, utils_1.isLeft)(readResult)) {
console.error('❌ Error parsing codebase translations:', readResult.value.message);
throw readResult.value;
}
const defaultTranslations = readResult.value;
const writeResult = (0, translationsReader_1.writeLanguageFile)(settings.default, defaultTranslations, translationConfig, { append: false });
if ((0, utils_1.isLeft)(writeResult)) {
console.error('❌ Failed to write translation file:', writeResult.value.message);
throw writeResult.value;
}
console.log(`✅ Successfully updated ${settings.default}.json with ${Object.keys(defaultTranslations).length} translations`);
console.log(`📍 Translation file location: ./${settings.output}/${settings.default}.json`);
});
exports.parseCodeBaseTranslations = parseCodeBaseTranslations;
const translate = (settings) => __awaiter(void 0, void 0, void 0, function* () {
const translationConfig = {
output: settings.output
};
yield (0, translationsParser_1.addMissingTranslations)(settings.default, {
reader: () => Promise.resolve((0, translationsReader_1.readAllTranslations)(settings.supported, translationConfig)),
writer: (translations) => (0, translationsReader_1.writeLanguageFiles)(translations, translationConfig, { append: true }),
translator: (text) => (0, openaiClient_1.prompt)(text, settings.openai.model, settings.openai.apiKey)
});
});
const run = () => __awaiter(void 0, void 0, void 0, function* () {
const settingsResult = yield (0, settingsReader_1.initializeSettings)();
if ((0, utils_1.isLeft)(settingsResult)) {
console.error('❌ Failed to load settings:', settingsResult.value.message);
throw settingsResult.value;
}
const settings = settingsResult.value;
console.log(`🌍 Auto-translating from ${settings.default} to: ${settings.supported.filter((lang) => lang !== settings.default).join(', ')}`);
yield (0, exports.parseCodeBaseTranslations)(settings);
yield translate(settings);
});
exports.run = run;
exports.default = {
run: exports.run
};