@awesome-fe/translate
Version:
Translation utils
61 lines • 2.24 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ExtractorEngine = void 0;
const translation_engine_1 = require("./translation-engine");
const fs_1 = require("fs");
const path_1 = require("path");
const get_new_filename_for_1 = require("./get-new-filename-for");
const sentence_formatter_1 = require("./sentence-formatter");
class ExtractorEngine extends translation_engine_1.TranslationEngine {
options;
constructor(options = {}) {
super();
this.options = options;
}
_entries = [];
get entries() {
return this._entries;
}
async batchTranslate(sentences, format) {
for (let [original, translation] of sentences) {
const newEntry = {
english: sentence_formatter_1.SentenceFormatter.toMarkdown(original.trim(), format),
chinese: sentence_formatter_1.SentenceFormatter.toMarkdown(translation?.trim(), format),
};
const existingEntry = this.entries.find(it => it.english === original);
if (!existingEntry) {
this._entries.push(newEntry);
}
else {
Object.assign(existingEntry, newEntry);
}
}
return sentences;
}
saveToFile(dictFile) {
const content = this.entries.map((entry) => [entry.english, entry.chinese].join('\n\n'))
.join('\n\n')
.replace(/\n\n\n+/g, '\n\n')
.trim();
if (content) {
const dir = (0, path_1.dirname)(dictFile);
(0, fs_1.mkdirSync)(dir, { recursive: true });
(0, fs_1.writeFileSync)(dictFile, content, 'utf8');
}
}
async setup(currentFile) {
await super.setup(currentFile);
this._entries = [];
}
async tearDown() {
const dict = this.options.dict;
if (dict) {
const cwd = this.options.cwd;
const currentFile = this.currentFile;
const dictFile = (0, get_new_filename_for_1.getNewFilenameFor)(currentFile, cwd, dict, '.dict.md');
this.saveToFile(dictFile);
}
}
}
exports.ExtractorEngine = ExtractorEngine;
//# sourceMappingURL=extractor-engine.js.map