68ff93cf17
Mirror to GitHub / mirror (push) Successful in 21s
Test and Lint / backend-test (push) Successful in 1m3s
continuous-integration/drone/push Build is passing
Test and Lint / frontend-test (push) Successful in 2m8s
Version and Release / version-bump (push) Successful in 38s
Version and Release / trigger-drone (push) Successful in 3s
- Added comprehensive German translations for all email templates:
- gallery_created: Welcome email with proper German formatting
- expiration_warning: Warning email with countdown in German
- gallery_expired: Expiration notice in German
- archive_complete: Archive completion notice in German
- Enhanced language detection with priority system:
1. Event-specific language setting (new 'language' column)
2. Global email config default language
3. Domain-based detection (.de, .at, .ch, .li)
- Added language preferences:
- events.language column for per-event language settings
- email_configs.default_language for system-wide default
- Set default to German ('de') for existing installations
- Fixed email processor to:
- Pass eventId for proper language detection
- Handle both SQLite and PostgreSQL JSON formats
- Log language used for each email sent
All German templates are professionally translated with proper:
- Greetings ("Liebe(r)" instead of "Dear")
- Date formatting (DD.MM.YYYY)
- Professional closings ("Mit freundlichen Grüßen")
- UI elements ("Galerie-Details:" instead of "Gallery Details:")
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
41 lines
1.4 KiB
JavaScript
41 lines
1.4 KiB
JavaScript
exports.up = async function(knex) {
|
|
// Add language column to events table if it doesn't exist
|
|
const hasLanguageInEvents = await knex.schema.hasColumn('events', 'language');
|
|
if (!hasLanguageInEvents) {
|
|
await knex.schema.alterTable('events', function(table) {
|
|
table.string('language', 5).defaultTo('en');
|
|
});
|
|
}
|
|
|
|
// Add default_language to email_configs if it doesn't exist
|
|
const hasDefaultLanguage = await knex.schema.hasColumn('email_configs', 'default_language');
|
|
if (!hasDefaultLanguage) {
|
|
await knex.schema.alterTable('email_configs', function(table) {
|
|
table.string('default_language', 5).defaultTo('en');
|
|
});
|
|
}
|
|
|
|
// Set default language to German for the existing email config
|
|
await knex('email_configs')
|
|
.update({
|
|
default_language: 'de'
|
|
});
|
|
};
|
|
|
|
exports.down = async function(knex) {
|
|
// Remove language column from events table
|
|
const hasLanguageInEvents = await knex.schema.hasColumn('events', 'language');
|
|
if (hasLanguageInEvents) {
|
|
await knex.schema.alterTable('events', function(table) {
|
|
table.dropColumn('language');
|
|
});
|
|
}
|
|
|
|
// Remove default_language from email_configs
|
|
const hasDefaultLanguage = await knex.schema.hasColumn('email_configs', 'default_language');
|
|
if (hasDefaultLanguage) {
|
|
await knex.schema.alterTable('email_configs', function(table) {
|
|
table.dropColumn('default_language');
|
|
});
|
|
}
|
|
}; |