auto-translatr
Version:
An automatic translation library
62 lines (61 loc) • 3.17 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());
});
};
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
};