Files
lobehub/scripts/toc.mjs
CanisMinor 579a0bf06f feat: Update localization paths, add new files, settings, descriptions, generate TOC, modify imports/exports, define types (#11)
This commit introduces new localization paths, adds new localization files, adds new settings and descriptions, generates a table of contents, modifies file imports and exports, and defines types for localization resources.

Changes:
- Updated localization paths
- Added new localization files
- Added new settings and descriptions
- Generated a table of contents
- Modified file imports and exports
- Defined types for localization resources
2023-07-18 09:14:13 +08:00

41 lines
1.1 KiB
JavaScript

import { tocForResources } from 'i18next-resources-for-ts';
import fs from 'node:fs';
import { resolve } from 'node:path';
import i18nConfig from '../.i18nrc.js';
const locales = [i18nConfig.entryLocale, ...i18nConfig.outputLocales];
const RES_OUTPUT = 'src/locales/resources';
let index = '';
let indexObj = '';
locales.forEach((locale) => {
const files = fs
.readdirSync(resolve(i18nConfig.output, locale))
.filter((name) => name.includes('.json'));
index += `import ${locale} from "./${locale}";\n`;
indexObj += ` "${locale.replace('_', '-')}": ${locale},\n`;
const ns = [];
files.forEach((file) => {
ns.push({
name: file.replace('.json', ''),
path: resolve(i18nConfig.output, locale, file),
});
});
let toc = tocForResources(ns, resolve(RES_OUTPUT)).replaceAll('\\', '/');
if (locale === i18nConfig.entryLocale) {
toc = toc.replaceAll('.json', '').replaceAll('../../../locales/zh_CN', '../default');
}
fs.writeFileSync(resolve(RES_OUTPUT, `${locale}.ts`), toc);
});
fs.writeFileSync(
resolve(RES_OUTPUT, `index.ts`),
`${index}
export default {
${indexObj}};
`,
);