import * as fs from 'fs'
import path from 'path'
const getFileLang = async (fileList: string[]) => {
const dataList = []
const chDataList = []
for (const key in fileList) {
if (Object.prototype.hasOwnProperty.call(fileList, key)) {
const filelink = fileList[key]
const date = fs.readFileSync(filelink)
const dataString = date.toString()
const reg = /t\([']{1}.{1,100}[']{1}\)/g
const re = dataString.match(reg)
if (re) {
dataList.push(...re)
}
const reg2 = /t\(["]{1}.{1,100}["]{1}\)/g
const re2 = dataString.match(reg2)
if (re2) {
dataList.push(...re2)
}
for (const key2 in dataList) {
if (Object.prototype.hasOwnProperty.call(dataList, key2)) {
const str = dataList[key2]
if (escape(str).indexOf('%u') != -1) {
chDataList.push(str)
}
}
}
}
}
return chDataList
}
const fileListHandle = async (dir: string): Promise<string[]> => {
const fileListTemp: string[] = fs.readdirSync(dir)
const fileList: string[] = []
for (const key in fileListTemp) {
if (Object.prototype.hasOwnProperty.call(fileListTemp, key)) {
const filrdir = fileListTemp[key]
if (filrdir.includes('node_modules')) {
continue
}
const fPath = path.join(dir, filrdir)
const stats = fs.statSync(fPath)
if (stats.isDirectory()) {
fileList.push(...(await fileListHandle(fPath)))
} else {
fileList.push(fPath)
}
}
}
return fileList
}
const main = async () => {
let dir = path.resolve()
let stats: any
try {
stats = fs.statSync(path.resolve(dir, 'src'))
} catch (error) {}
if (stats && stats.isDirectory()) {
dir = path.resolve(dir, 'src')
}
const fileList = await fileListHandle(dir)
fs.writeFile('./langfile.txt', fileList.join('\n'), (err) => {})
const re = await getFileLang(fileList)
const cnList = []
const enList = []
for (const key in re) {
if (Object.prototype.hasOwnProperty.call(re, key)) {
const str = re[key]
if (/['"]{1}[a-zA-Z]*['"]/.test(str)) {
enList.push(str)
continue
}
cnList.push(str)
}
}
fs.writeFileSync(
'./lang.txt',
[...new Set([...enList, ...cnList])].join('\n'),
{
encoding: 'utf8',
},
)
}
main()
{
"name": "genlang",
"version": "1.0.3",
"description": "",
"main": "index.js",
"license": "MIT",
"scripts": {
"publish": "npm publish",
"build": "tsc -w",
"dev": "ts-node ./bin/genlanguage.ts"
},
"bin": {
"genlang": "./bin/genlanguage.js"
},
"keywords": [],
"author": {
"name": "join",
"email": "372088783@qq.com"
},
"devDependencies": {
"@types/node": "^18.0.3",
"nodemon": "^2.0.19"
},
"dependencies": {
"html-entities": "^2.3.3",
"typescript": "^4.7.4"
}
}