34 lines
1.1 KiB
JavaScript
34 lines
1.1 KiB
JavaScript
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
const i18nDir = path.join(__dirname, '../src/i18n');
|
|
const registryFile = path.join(__dirname, '../src/app/i18n-registry.ts');
|
|
|
|
if (!fs.existsSync(i18nDir)) {
|
|
console.error(`i18n directory not found at ${i18nDir}`);
|
|
process.exit(1);
|
|
}
|
|
|
|
const files = fs.readdirSync(i18nDir).filter((file) => file.endsWith('.json'));
|
|
|
|
let importStatements = '';
|
|
let registryEntries = '';
|
|
|
|
files.forEach((file) => {
|
|
const langCode = path.basename(file, '.json');
|
|
importStatements += `import ${langCode} from '../i18n/${file}';\n`;
|
|
registryEntries += `\t${langCode}: ${langCode} as AppTranslations,\n`;
|
|
});
|
|
|
|
const content = `// This file is auto-generated by scripts/generate-langs.js. Do not edit directly.
|
|
import { AppTranslations } from './services/translation-service';
|
|
${importStatements}
|
|
export const translationsMap: Record<string, AppTranslations> = {
|
|
${registryEntries}};
|
|
|
|
export const availableLanguagesList: string[] = Object.keys(translationsMap);
|
|
`;
|
|
|
|
fs.writeFileSync(registryFile, content, 'utf8');
|
|
console.log(`Successfully generated i18n registry at ${registryFile} with ${files.length} languages.`);
|