UNPKG

i18-fe-automator

Version:

前端代码提取中文并替换成$t函数

81 lines (80 loc) 3.09 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const log_1 = __importDefault(require("./utils/log")); const removeLineBreaksInTag_1 = require("./utils/removeLineBreaksInTag"); const escapeQuotes_1 = require("./utils/escapeQuotes"); const includeChinese_1 = require("./utils/includeChinese"); class Collector { // eslint-disable-next-line @typescript-eslint/no-empty-function constructor() { this.keyMap = {}; // 记录每个文件执行提取的次数 this.countOfAdditions = 0; // 记录单个文件里提取的中文,键为自定义key,值为原始中文key this.currentFileKeyMap = {}; this.currentFilePath = ''; // key为uuid + 英文,value为中文 this.keyValueMap = {}; } static getInstance() { if (!this._instance) { this._instance = new Collector(); } return this._instance; } setCurrentCollectorPath(path) { this.currentFilePath = path; } getCurrentCollectorPath() { return this.currentFilePath; } getKeyValueMap() { return this.keyValueMap; } clearKeyValueMap() { this.keyValueMap = {}; } // 第三个参数可以用来判断是否第一次访问,第一次访问是无中文的,第二次访问是有中文的 add(value, customizeKeyFn, oldChinese) { log_1.default.verbose('collector:add::'); log_1.default.verbose(value); log_1.default.verbose(oldChinese); if (!oldChinese) { const formattedValue = (0, removeLineBreaksInTag_1.removeLineBreaksInTag)(value); const customizeKey = customizeKeyFn((0, escapeQuotes_1.escapeQuotes)(formattedValue), this.currentFilePath); // key中不能包含回车 log_1.default.verbose('提取中文:', formattedValue); this.keyMap[customizeKey] = formattedValue.replace('|', "{'|'}"); // '|' 管道符在vue-i18n表示复数形式,需要特殊处理。见https://vue-i18n.intlify.dev/guide/essentials/pluralization.html // this.countOfAdditions++ this.currentFileKeyMap[customizeKey] = formattedValue; } this.countOfAdditions++; // oldChinese: 纯中文部分 // value: [6位hash]-[desc的英文] if (oldChinese && value && !(0, includeChinese_1.includeChinese)(value)) { // this.keyValueMap[customizeKey] = oldChinese this.keyValueMap[value] = oldChinese; } } getCurrentFileKeyMap() { return this.currentFileKeyMap; } resetCurrentFileKeyMap() { this.currentFileKeyMap = {}; } getKeyMap() { return this.keyMap; } setKeyMap(value) { this.keyMap = value; } resetCountOfAdditions() { this.countOfAdditions = 0; } getCountOfAdditions() { return this.countOfAdditions; } } exports.default = Collector;