kevisual-locales/scripts/merge-lng.ts
2025-04-03 20:07:04 +08:00

41 lines
1.2 KiB
TypeScript

import glob from 'fast-glob';
import fs from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const files = await glob('src/data/**/*.json');
console.log(files);
// 过滤en.json
const enFiles = files.filter((file) => file.includes('en.json'));
const zhFiles = files.filter((file) => file.includes('zh.json'));
// console.log(enFiles);
export const readFiles = (files: string[]) => {
const data = files.map((file) => {
const content = fs.readFileSync(file, 'utf-8');
return JSON.parse(content);
});
return data;
};
export const mergeFiles = (files: string[]) => {
const data = readFiles(files);
return data.reduce((acc, curr) => {
return { ...acc, ...curr };
}, {});
};
const enData = mergeFiles(enFiles);
const zhData = mergeFiles(zhFiles);
// console.log(enData);
// console.log(zhData);
const outputZhFile = '../public/locales/zh/translation.json';
const outputEnFile = '../public/locales/en/translation.json';
fs.writeFileSync(path.resolve(__dirname, outputZhFile), JSON.stringify(zhData, null, 2));
fs.writeFileSync(path.resolve(__dirname, outputEnFile), JSON.stringify(enData, null, 2));