generated from template/vite-react-template
41 lines
1.2 KiB
TypeScript
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));
|