@awesome-fe/translate
Version:
Translation utils
46 lines • 1.71 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Dict = void 0;
const markdown_translator_1 = require("../translator/markdown-translator");
const extractor_engine_1 = require("../translation-engine/extractor-engine");
const fs_1 = require("fs");
const path_1 = require("path");
class Dict {
entries = [];
constructor() {
}
async open(dictFile) {
const engine = new extractor_engine_1.ExtractorEngine();
await engine.setup('');
try {
const translator = new markdown_translator_1.MarkdownTranslator(engine);
if (!(0, fs_1.existsSync)(dictFile)) {
(0, fs_1.mkdirSync)((0, path_1.dirname)(dictFile), { recursive: true });
(0, fs_1.writeFileSync)(dictFile, '', 'utf8');
}
await translator.translateFile(dictFile);
this.entries = engine.entries;
}
finally {
await engine.tearDown();
}
}
async close() {
}
async get(english) {
return fuzzyLookup(this.entries, english);
}
}
exports.Dict = Dict;
const markdownHeaderPattern = /^(#+) +(.*)$/;
function fuzzyLookup(entries, english) {
for (let entry of entries) {
const [, , base1] = entry.english.match(markdownHeaderPattern) ?? ['', '', entry.english];
const [, prefix, base2] = english.match(markdownHeaderPattern) ?? ['', '', english];
if (base1 === base2) {
const [, , chinese] = entry.chinese?.match(markdownHeaderPattern) ?? ['', '', entry.chinese];
return { ...entry, chinese: [prefix, chinese].filter(it => !!it).join(' ') };
}
}
}
//# sourceMappingURL=dict.js.map