collectI18nMessages.js 1.09 KB
Newer Older
1 2
const fs = require('fs');
const root = "./src"
3
const savePath = "./src/i18n/languages/en_US.json"
4 5 6 7 8 9 10 11 12 13 14 15 16
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)
17 18 19 20 21
/* allFiles = [
    'src/views/ecw/box/shippingSea/utils.js',
    'src/components/bpmnProcessDesigner/package/designer/plugins/content-pad/contentPadProvider.js'
]
console.log(allFiles) */
22 23 24
let messages = new Set()
allFiles.forEach(file => {
    let data = fs.readFileSync(file, {encoding: 'utf-8'})
25
    let matched = data.matchAll(/\$t\([\'\"]{1}([^\"\']+)[\'\"]{1}/g)
26 27 28 29 30 31
    let i = 0
    for(let item of matched){
        i ++
        messages.add(item[1])
    }
})
32 33 34 35 36 37 38


let obj = require(savePath)
Array.from(messages).forEach(word => {
    if(!obj[word])obj[word] = ""
})
fs.writeFileSync(savePath, JSON.stringify(obj, null, 4))
39
console.log(messages)
40
console.warn(`本次共提取 ${messages.size} 个待翻译内容,保存于${savePath}`)