next-translate-scanner
Version:
Scan next-translate code for translations and update json files.
46 lines (45 loc) • 1.78 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
const jsx_lexer_1 = __importDefault(require("../lexers/jsx-lexer"));
const javascript_lexer_1 = __importDefault(require("../lexers/javascript-lexer"));
const logger_1 = __importDefault(require("./logger"));
const availableLexers = {
mjs: [javascript_lexer_1.default],
js: [javascript_lexer_1.default],
ts: [javascript_lexer_1.default],
jsx: [jsx_lexer_1.default],
tsx: [jsx_lexer_1.default],
default: [javascript_lexer_1.default]
};
const extractTranslations = (filePaths, config) => {
filePaths = [...new Set(filePaths)];
filePaths.sort();
let count = 0;
let allTranslations = [];
for (const filePath of filePaths) {
count++;
try {
const content = fs_1.default.readFileSync(filePath, 'utf8');
const extension = path_1.default.extname(filePath).substring(1);
const fileLexers = availableLexers[extension] || availableLexers.default;
for (const lexer of fileLexers) {
allTranslations = [
...allTranslations,
...new lexer({ defaultNS: config.defaultNS, nsSeparator: config.nsSeparator }).extract(content)
];
}
}
catch (e) {
logger_1.default.error(`Can't read "${filePath}"`);
}
}
logger_1.default.info(`Stats: ${count} files were parsed`);
logger_1.default.info();
return allTranslations;
};
exports.default = extractTranslations;