mono/packages/i18n/dist/lib/translate_ex.js
2025-01-28 17:34:56 +01:00

115 lines
9.5 KiB
JavaScript

import * as path from 'path';
import { createHash } from 'crypto';
import * as deepl from './deepl.js';
import { CONFIG_DEFAULT } from '@polymech/commons';
//let logger = createLogger('i18n')
import { isFile, resolve } from "@polymech/commons";
import { sync as read } from "@polymech/fs/read";
import { sync as exists } from "@polymech/fs/exists";
import { sync as write } from "@polymech/fs/write";
import { update } from './glossary.js';
import * as deeplN from 'deepl-node';
export const clean = (text = "") => text.trim();
export const hash = (text) => createHash('md5').update(clean(text)).digest('base64');
export const getTranslation = (translations, all = false) => {
if (!all) {
if (translations && translations[0] && translations[0].text) {
return translations[0].text;
}
}
else {
return translations;
}
return false;
};
import { logger } from '../index.js';
export const storeSet = (storePath, text, translation, file = '') => {
const store = read(storePath, 'json') || {};
store[text] = clean(translation);
write(storePath, store);
};
export const storeGet = (storePath, text, file = '') => {
const db = read(storePath, 'json') || {};
if (db[text]) {
return db[text];
}
};
export const translateDeepL = async (text, srcLang = 'EN', dstLang = 'DE', dOptions, options = {}, file = '') => {
// const glossary = await update(srcLang.toLowerCase(), dstLang.toLowerCase(), options)
const translator = new deeplN.Translator(options.api_key);
isFile(''),
resolve(''),
read('');
const deeplOptions = {
preserve_formatting: '1',
tag_handling: ["xml"],
...dOptions,
text: text,
target_lang: dstLang,
source_lang: srcLang,
//glossary_id: glossary?.glossaryId,
formality: options.formality || 'default',
};
update(srcLang.toLowerCase(), dstLang.toLowerCase(), options);
let ret = await deepl.translate_deepl(deeplOptions);
if (!ret) {
logger.error('Translate failed : ' + text, file);
return false;
}
ret = ret?.data;
if (options.filters) {
(ret.translations).forEach((t, i) => {
options.filters.forEach((f) => {
ret.translations[i].text = f(text, t.text, file);
});
});
}
return ret.translations;
};
export const translateText = async (text, srcLang, dstLang, options = {}) => {
if (!text || text.length === 0) {
return '';
}
if (srcLang === dstLang) {
return text;
}
if (!options.store) {
logger.error('No store provided');
return text;
}
const store = path.resolve(resolve(options.store, false));
if (!exists(store)) {
logger.warn(`Invalid store root : ${store}`);
}
const config = CONFIG_DEFAULT();
text = clean(text);
if (exists(options.store)) {
const stored = storeGet(options.store, text);
if (stored) {
return stored;
}
}
if (!options.storeRoot) {
options.storeRoot = "${OSR_ROOT}/i18n-store";
}
if (!options.api_key) {
if (!config || !config.deepl || !config.deepl.auth_key) {
logger.error('i18n:translateText: No API key provided');
return text;
}
options.api_key = config.deepl.auth_key;
}
const out = await translateDeepL(text, srcLang, dstLang, {
...config.deepl
}, options, "");
const translation = getTranslation(out, false);
if (translation) {
// storeSet(options.store, text, translation)
return translation;
}
else {
logger.warn('Error translating : ', text);
}
return text;
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlX2V4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi90cmFuc2xhdGVfZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUE7QUFDNUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUVuQyxPQUFPLEtBQUssS0FBSyxNQUFNLFlBQVksQ0FBQTtBQUNuQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFbEQsbUNBQW1DO0FBRW5DLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDbkQsT0FBTyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3BELE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFFakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUV0QyxPQUFPLEtBQUssTUFBTSxNQUFNLFlBQVksQ0FBQTtBQUVyQyxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO0FBQ3ZELE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUE7QUFFNUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsWUFBaUIsRUFBRSxNQUFlLEtBQUssRUFBRSxFQUFFO0lBQ3RFLElBQUksQ0FBQyxHQUFHLEVB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