memowake-front/i18n/generate-imports.ts

43 lines
1.6 KiB
TypeScript

import * as fs from 'fs';
import * as path from 'path';
/**
*
* 脚本用来自动引入所有的json文件
*/
function generateImports() {
const localesPath = path.join(__dirname, 'locales');
const namespaces = ['common', 'home', 'login', 'settings', 'upload', 'chat', 'me', 'permission'];
const languages = fs.readdirSync(localesPath);
let imports = '';
let translationsMap = 'const translations = {\n';
languages.forEach(lang => {
const langPath = path.join(localesPath, lang);
if (fs.statSync(langPath).isDirectory()) {
const files = fs.readdirSync(langPath).filter(file => file.endsWith('.json'));
files.forEach(file => {
const ns = file.replace('.json', '');
const varName = `${lang}${ns.charAt(0).toUpperCase() + ns.slice(1)}`;
imports += `import ${varName} from './locales/${lang}/${file}';\n`;
});
translationsMap += ` ${lang}: {\n`;
files.forEach((file, index) => {
const ns = file.replace('.json', '');
const varName = `${lang}${ns.charAt(0).toUpperCase() + ns.slice(1)}`;
translationsMap += ` ${ns}: ${varName}${index < files.length - 1 ? ',' : ''}\n`;
});
translationsMap += ' },\n';
}
});
translationsMap += '};\n\nexport default translations;';
const output = `// 自动生成的导入文件,请勿手动修改\n\n${imports}\n${translationsMap}`;
fs.writeFileSync(path.join(__dirname, 'translations-generated.ts'), output);
}
generateImports();