2025-04-01 22:14:57 +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) {
|
|
|
|
return path.split('.').reduce((current, key) => current && current[key], obj)
|
|
|
|
}
|
|
|
|
|
|
|
|
// 替换文件内容
|
|
|
|
function replaceContent(content) {
|
|
|
|
// 替换模板中的 $t('key')
|
2025-05-28 11:04:25 +08:00
|
|
|
// content = content.replace(
|
|
|
|
// /(?<!this\.|that\.)\$t\(['"]([^'"]+)['"]\)/g,
|
|
|
|
// (match, key) => {
|
|
|
|
// const value = getNestedValue(zhCN, key)
|
|
|
|
// return value ? `'${value}'` : match
|
|
|
|
// }
|
|
|
|
// )
|
2025-04-01 22:14:57 +08:00
|
|
|
|
|
|
|
// 替换 JavaScript 中的 this.$t('key')
|
|
|
|
content = content.replace(/this\.\$t\(['"]([^'"]+)['"]\)/g, (match, key) => {
|
|
|
|
const value = getNestedValue(zhCN, key)
|
|
|
|
return value ? `'${value}'` : match
|
|
|
|
})
|
|
|
|
|
|
|
|
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',
|
|
|
|
'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()
|