3
0
Fork 0
web-store-retail-admin/scripts/remove-i18n.js

101 lines
2.6 KiB
JavaScript
Raw Normal View History

2025-05-26 10:27:27 +08:00
const fs = require('fs')
const path = require('path')
const { glob } = require('glob')
// 读取中文语言包
const zhCN = require('../i8n.js')
// 递归获取所有需要处理的文件
async function getAllFiles(dir, patterns) {
console.log('搜索目录:', dir)
console.log('搜索模式:', patterns)
const files = await glob(patterns, {
cwd: dir,
ignore: ['node_modules/**', 'dist/**', '**/i18n/**', '**/languages/**']
})
console.log('找到的文件数量:', files.length)
return files
}
// 获取嵌套对象的值
function getNestedValue(obj, path) {
2025-05-26 10:41:35 +08:00
return path.split('.').reduce((current, key) => {
return current && current[key]
}, obj)
2025-05-26 10:27:27 +08:00
}
// 替换文件内容
function replaceContent(content) {
// 替换模板中的 $t('key')
content = content.replace(
2025-06-08 15:32:44 +08:00
/(?<!this\.|that\.)\$t\(['"`]([^'"`]+)['"`](?:,.*?)?\)/g,
2025-05-26 10:27:27 +08:00
(match, key) => {
const value = getNestedValue(zhCN, key)
return value ? `'${value}'` : match
}
)
// 替换 JavaScript 中的 this.$t('key')
2025-06-08 15:32:44 +08:00
content = content.replace(/this\.\$t\(['"`]([^'"`]+)['"`](?:,.*?)?\)/g, (match, key) => {
2025-05-26 10:27:27 +08:00
const value = getNestedValue(zhCN, key)
return value ? `'${value}'` : match
})
2025-06-08 15:32:44 +08:00
// 替换模板字符串中的 this.$t, 例如 `${this.$t('key')}`
content = content.replace(/`\$\{this\.\$t\(['"`]([^'"`]+)['"`](?:,.*?)?\)\}([^`]*)`/g, (match, key, suffix) => {
const value = getNestedValue(zhCN, key)
if (value) {
// 将最终的字符串用单引号包裹
return `'${value}${suffix}'`
}
return match
})
2025-05-26 10:27:27 +08:00
return content
}
// 主函数
async function main() {
try {
const srcPath = path.resolve(__dirname, '../src')
console.log('源文件目录:', srcPath)
// 只处理 views 和 components 目录
const patterns = [
'views/**/*.vue',
'views/**/*.js',
'views/**/*.ts',
'router/**/*.js',
'components/**/*.vue',
'components/**/*.js',
'components/**/*.ts'
]
const files = await getAllFiles(srcPath, patterns)
if (files.length === 0) {
console.log('警告:没有找到匹配的文件!')
return
}
for (const file of files) {
const filePath = path.resolve(srcPath, file)
console.log('处理文件:', filePath)
const content = fs.readFileSync(filePath, 'utf8')
const newContent = replaceContent(content)
if (newContent !== content) {
fs.writeFileSync(filePath, newContent, 'utf8')
console.log(`已处理文件: ${file}`)
}
}
console.log('所有文件处理完成!')
} catch (error) {
console.error('处理过程中出错:', error)
}
}
main()