feat: implement internationalization with multi-language support and runtime language selection
This commit is contained in:
1 parent
2de09383b9
commit
9c9114879d
26 files changed
+826
-159
No files matched your search
@@ -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.`);
|
||||
Reference in new issue
Block a user