UNPKG

auto-translatr

Version:
62 lines (61 loc) 3.17 kB
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()); }); }; import { isLeft } from './utils'; import { readAllTranslations, writeLanguageFiles, writeLanguageFile } from './translationsReader'; import { addMissingTranslations } from './translationsParser'; import { prompt } from './openaiClient'; import { read } from './codebaseReader'; import { initializeSettings } from './settingsReader'; export 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 read(codebaseConfig); if (isLeft(readResult)) { console.error('❌ Error parsing codebase translations:', readResult.value.message); throw readResult.value; } const defaultTranslations = readResult.value; const writeResult = writeLanguageFile(settings.default, defaultTranslations, translationConfig, { append: false }); if (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`); }); const translate = (settings) => __awaiter(void 0, void 0, void 0, function* () { const translationConfig = { output: settings.output }; yield addMissingTranslations(settings.default, { reader: () => Promise.resolve(readAllTranslations(settings.supported, translationConfig)), writer: (translations) => writeLanguageFiles(translations, translationConfig, { append: true }), translator: (text) => prompt(text, settings.openai.model, settings.openai.apiKey) }); }); export const run = () => __awaiter(void 0, void 0, void 0, function* () { const settingsResult = yield initializeSettings(); if (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 parseCodeBaseTranslations(settings); yield translate(settings); }); export default { run };