const fs = require('fs'); const root = "./src" const savePath = "./i18n-messages.txt" let allFiles = [] function getFiles(dir){ let files = fs.readdirSync(dir) files.forEach(file => { let path = dir + '/' + file if(fs.lstatSync(path).isDirectory()){ getFiles(path) }else allFiles.push(path) }) } getFiles(root) /* allFiles = [ 'src/views/ecw/box/shippingSea/utils.js', 'src/components/bpmnProcessDesigner/package/designer/plugins/content-pad/contentPadProvider.js' ] console.log(allFiles) */ let messages = new Set() allFiles.forEach(file => { let data = fs.readFileSync(file, {encoding: 'utf-8'}) let matched = data.matchAll(/\$t\([\'\"]{1}([^\"\']+)[\'\"]{1}/g) let i = 0 for(let item of matched){ i ++ messages.add(item[1]) } }) fs.writeFileSync("./i18n-messages.txt", Array.from(messages).join("\n")) console.log(messages) console.warn(`共提取 ${messages.size} 个待翻译内容,保存于${savePath}`)