| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- const fs = require('fs');
- const path = require('path');
- const directories = ['d:/workspace/AuraK/web', 'd:/workspace/AuraK/server/src'];
- const excludeDirs = ['node_modules', '.git', 'dist', '.next', 'dist-check'];
- const extensions = ['.ts', '.tsx', '.js', '.jsx'];
- const cjkPattern = /[\u4e00-\u9fff\u3040-\u309f\u30a0-\u30ff]+/;
- const cjkLines = {};
- function walkSync(currentDirPath, callback) {
- fs.readdirSync(currentDirPath).forEach((name) => {
- const filePath = path.join(currentDirPath, name);
- const stat = fs.statSync(filePath);
- if (stat.isFile()) {
- callback(filePath, stat);
- } else if (stat.isDirectory() && !excludeDirs.includes(name)) {
- walkSync(filePath, callback);
- }
- });
- }
- directories.forEach(d => {
- walkSync(d, (filePath) => {
- if (extensions.some(ext => filePath.endsWith(ext))) {
- try {
- const content = fs.readFileSync(filePath, 'utf-8');
- const lines = content.split('\n');
- lines.forEach((line, i) => {
- if (cjkPattern.test(line)) {
- if (!cjkLines[filePath]) {
- cjkLines[filePath] = [];
- }
- cjkLines[filePath].push({ line: i + 1, text: line.trim() });
- }
- });
- } catch (e) {
- console.error(`Error reading ${filePath}: `, e);
- }
- }
- });
- });
- fs.writeFileSync('cjk_extract.json', JSON.stringify(cjkLines, null, 2), 'utf-8');
- console.log('Extracted to cjk_extract.json');
|