feat: implement internationalization with multi-language support and runtime language selection

This commit is contained in:
nessar committed 2026-05-30 21:03:12 +02:00
1 parent 2de09383b9
commit 9c9114879d
26 files changed
+826 -159

No files matched your search

+33
View File
@@ -0,0 +1,33 @@
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.`);