- Replace hardcoded English strings with translation function calls in 36 template files
- Update translation files for all supported languages (ar, de, es, fi, fr, he, it, nb, nl, no)
- Add over 55,000 new translation entries across all language files
- Update extract_translations.py to use 'python -m babel.messages.frontend' instead of pybabel
- Improve internationalization coverage for UI elements including:
* Skip to content links
* Sidebar toggle buttons
* Command palette placeholders
* Admin dashboard elements
* Form labels and buttons
* Report templates
* Payment and invoice views
This commit significantly improves the application's multilingual support
by making previously hardcoded strings translatable.
- Add Norwegian (Norsk) language support with locale code normalization (no -> nb)
- Create Norwegian translation files (translations/nb/ and translations/no/)
- Fill empty Norwegian translation strings with English fallback values
- Add locale normalization for Flask-Babel compatibility (no -> nb mapping)
- Update context processor to correctly display 'Norsk' label instead of 'NB'
Translation improvements:
- Wrap all hardcoded strings in templates with _() translation function
- Add missing translations for setup, timer, tasks, invoices, and admin templates
- Ensure brandnames 'drytrix' and 'TimeTracker' remain untranslated across all languages
- Add new translation strings to all language files (en, de, nl, fr, it, fi, es, no, ar, he)
- Update translation files for: initial_setup, manual_entry, tasks/list, email_templates, etc.
Bug fixes:
- Add missing /api/summary/today endpoint for daily summary notifications
- Fix 'Response body already consumed' error in smart-notifications.js
- Improve translation compilation logging and error handling
- Add debug endpoint /debug/i18n for troubleshooting translation issues
Technical changes:
- Improve ensure_translations_compiled() with better logging
- Add locale normalization function for Norwegian locale handling
- Update context processor to reverse-map normalized locales for display
- Fix JavaScript fetch error handling to check response.ok before reading body
This commit implements three major feature enhancements to improve user
productivity and experience:
COMMAND PALETTE IMPROVEMENTS:
- Add '?' key as intuitive shortcut to open command palette
- Maintain backward compatibility with Ctrl+K/Cmd+K
- Enhance visual design with modern styling and smooth animations
- Add 3D effect to keyboard badges and improved dark mode support
- Update first-time user hints and tooltips
- Improve input field detection to prevent conflicts
CALENDAR REDESIGN:
- Implement comprehensive drag-and-drop for moving/resizing events
- Add multiple calendar views (Day/Week/Month/Agenda)
- Create advanced filtering by project, task, and tags
- Build full-featured event creation modal with validation
- Add calendar export functionality (iCal and CSV formats)
- Implement color-coded project visualization (10 distinct colors)
- Create dedicated calendar.css with professional styling
- Add recurring events management UI
- Optimize API with indexed queries and proper filtering
TRANSLATION SYSTEM ENHANCEMENTS:
- Update all 6 language files (EN/DE/NL/FR/IT/FI) with 150+ strings
- Improve language switcher UI with globe icon and visual indicators
- Fix hardcoded strings in dashboard and base templates
- Add check mark for currently selected language
- Enhance accessibility with proper ARIA labels
- Style language switcher with hover effects and smooth transitions
DOCUMENTATION:
- Add COMMAND_PALETTE_IMPROVEMENTS.md and COMMAND_PALETTE_USAGE.md
- Create CALENDAR_IMPROVEMENTS_SUMMARY.md and CALENDAR_FEATURES_README.md
- Add TRANSLATION_IMPROVEMENTS_SUMMARY.md and TRANSLATION_SYSTEM.md
- Update HIGH_IMPACT_FEATURES.md with implementation details
All features are production-ready, fully tested, responsive, and maintain
backward compatibility.
- Integrate Flask-Babel and i18n utilities; initialize in app factory
- Add `preferred_language` to `User` with Alembic migration (011_add_user_preferred_language)
- Add `babel.cfg` and `scripts/extract_translations.py`
- Add `translations/` for en, de, fr, it, nl, fi
- Update templates to use `_()` and add language picker in navbar/profile
- Respect locale in routes and context processors; persist user preference
- Update requirements and Docker/Docker entrypoint for Babel/gettext support
- Minor copy and style adjustments across pages
Migration: run `alembic upgrade head`