@awesome-fe/translate
Version:
Translation utils
71 lines • 3.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.handler = exports.builder = exports.describe = exports.command = void 0;
const get_translation_engine_1 = require("../../translation-engine/get-translation-engine");
const get_translator_1 = require("../../translator/get-translator");
const globby_1 = require("globby");
const translation_engine_type_1 = require("../../translation-engine/translation-engine-type");
exports.command = `translate <sourceGlobs...>`;
exports.describe = '自动翻译 sourceGlob 中的文件,支持 html 和 markdown 两种格式';
exports.builder = {
sourceGlobs: {
description: '文件通配符,注意:要包含在引号里,参见 https://github.com/isaacs/node-glob#glob-primer',
},
engine: {
type: 'string',
description: '要使用的翻译引擎。如果使用 normalize 引擎可以对目标进行预处理,以减少变更冲突',
choices: [
translation_engine_type_1.TranslationEngineType.google,
translation_engine_type_1.TranslationEngineType.dict,
translation_engine_type_1.TranslationEngineType.fake,
translation_engine_type_1.TranslationEngineType.normalizer,
translation_engine_type_1.TranslationEngineType.extractor,
translation_engine_type_1.TranslationEngineType.vectorizer,
],
default: translation_engine_type_1.TranslationEngineType.google,
},
dict: {
type: 'string',
description: '当使用 dict 引擎时,指定要使用的字典目录,字典目录是由一组 markdown 文件构成的与原文同构的目录。',
},
jsonProperties: {
type: 'array',
alias: 'jp',
description: '当进行 json 翻译时,要翻译的属性名称,会自动进行递归查找。',
default: [],
},
mustIncludesTag: {
type: 'string',
alias: 'it',
description: '当进行 jsdoc 翻译时,只有具有此标签的注释及其子注释才会被翻译,比如 Angular 官方文档中,这个值是 `publicApi`',
},
mustExcludesTag: {
type: 'string',
alias: 'et',
description: '当进行 jsdoc 翻译时,只有没有此标签的注释及其子注释才会被翻译,比如 Angular Components 官方文档中,这个值是 `docs-private`',
},
};
const handler = async function (params) {
const filenames = (0, globby_1.sync)(params.sourceGlobs);
if (filenames.length === 0) {
console.error('没有找到任何文件,请检查 sourceGlobs 是否正确!');
return;
}
const translationEngine = (0, get_translation_engine_1.getTranslationEngine)(params.engine, params);
for (const filename of filenames) {
console.log('translating: ', filename);
const translator = (0, get_translator_1.getTranslator)(filename, translationEngine, params);
await translator.setup();
try {
await translator.translateFile(filename, params);
}
catch (e) {
console.error(e);
}
finally {
await translator.tearDown();
}
}
};
exports.handler = handler;
//# sourceMappingURL=translate.js.map