Implement multi-language email templates

- Add language columns to email_templates table (subject_en/de, body_html_en/de, body_text_en/de)
- Update adminEmail.js routes to support language-specific templates
- Create EmailProcessor service to handle language selection based on recipient
- Update EmailConfigPage component with language tabs similar to CMS pages
- Add German translations for all email templates
- Update all email queue usage to use proper template keys
- Add missing email templates (gallery_expired, archive_complete)
- Integrate email processor service into main server startup

The system now automatically selects the appropriate language (English/German) based on the recipient's email domain or preferences.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-07-08 17:57:26 +02:00
parent 1bc9b547c7
commit 69b56ed582
13 changed files with 564 additions and 102 deletions
+4 -8
View File
@@ -2,6 +2,7 @@ const archiver = require('archiver');
const fs = require('fs').promises;
const path = require('path');
const { db } = require('../database/db');
const { queueEmail } = require('./emailProcessor');
const logger = require('../utils/logger');
const getStoragePath = () => process.env.STORAGE_PATH || path.join(__dirname, '../../../storage');
@@ -50,14 +51,9 @@ async function archiveEvent(event) {
}
// Queue completion email
await db('email_queue').insert({
event_id: event.id,
recipient_email: event.admin_email,
email_type: 'archive_complete',
email_data: JSON.stringify({
event_name: event.event_name,
archive_size: archive.pointer()
})
await queueEmail(event.id, event.admin_email, 'archive_complete', {
event_name: event.event_name,
archive_size: (archive.pointer() / 1024 / 1024).toFixed(2) + ' MB'
});
});