Files
datecalc/i18n_implementation.md
elpatron c7d95e5c4c feat: Implementiere mehrsprachige Unterstützung (i18n)
- Füge Flask-Babel für professionelle i18n-Implementierung hinzu
- Implementiere automatische Browser-Spracherkennung
- Erstelle datenschutzfreundliche Sprachauswahl ohne Cookies
- Verwende URL-Parameter und localStorage für Sprachauswahl
- Füge vollständige Übersetzungen für Deutsch und Englisch hinzu
- Implementiere responsive Dropdown-Sprachauswahl mit Landesflaggen
- Verbessere Barrierefreiheit mit ARIA-Attributen und Screenreader-Support
- Aktualisiere README mit i18n-Dokumentation
- Version 1.4.0
2025-08-01 16:40:46 +02:00

3.5 KiB

Internationalisierung (i18n) Implementierung

Übersicht

Die Internationalisierung wurde erfolgreich in Elpatrons Datumsrechner implementiert. Das System unterstützt derzeit Deutsch (Standard) und Englisch.

Implementierte Funktionen

1. Flask-Babel Integration

  • Flask-Babel 4.0.0 für Übersetzungsverwaltung
  • Babel 2.17.0 für Übersetzungskompilierung
  • Automatische Spracherkennung basierend auf Browser-Einstellungen
  • Session-basierte Sprachauswahl für Benutzer

2. Sprachauswahl

  • DE/EN Toggle in der oberen linken Ecke
  • Visueller Indikator für aktive Sprache
  • Persistente Sprachauswahl über Session

3. Übersetzungsdateien

  • Deutsche Übersetzungen: translations/de/LC_MESSAGES/messages.po
  • Englische Übersetzungen: translations/en/LC_MESSAGES/messages.po
  • Kompilierte .mo Dateien für optimale Performance

4. Übersetzte Inhalte

Meta-Tags

  • Titel und Beschreibung
  • Open Graph Tags
  • Keywords

UI-Elemente

  • Haupttitel und Untertitel
  • Formular-Labels
  • Button-Texte
  • Hilfe-Texte
  • Footer-Links

Dynamische Inhalte

  • Wochentage (Deutsch/Englisch)
  • Kalenderwochen-Format
  • Datumsformate (DD.MM.YYYY vs MM/DD/YYYY)
  • Fehlermeldungen

5. Technische Details

App-Konfiguration

app.config['BABEL_DEFAULT_LOCALE'] = 'de'
app.config['BABEL_SUPPORTED_LOCALES'] = ['de', 'en']
app.config['BABEL_TRANSLATION_DIRECTORIES'] = 'translations'

Sprachauswahl-Funktion

@app.route('/set_language/<language>')
def set_language(language):
    if language in ['de', 'en']:
        session['language'] = language
    return redirect(request.referrer or url_for('index'))

Locale-Selector

@babel.localeselector
def get_locale():
    if 'language' in session:
        return session['language']
    return request.accept_languages.best_match(['de', 'en'], default='de')

Verzeichnisstruktur

translations/
├── de/
│   └── LC_MESSAGES/
│       ├── messages.po
│       └── messages.mo
└── en/
    └── LC_MESSAGES/
        ├── messages.po
        └── messages.mo

Verwendung

Für Entwickler

  1. Neue Texte hinzufügen:

    {{ _('Neuer Text') }}
    
  2. Übersetzungen extrahieren:

    pybabel extract -F babel.cfg -k _l -o messages.pot .
    
  3. Neue Übersetzungsdatei erstellen:

    pybabel init -i messages.pot -d translations -l en
    
  4. Übersetzungen kompilieren:

    pybabel compile -d translations
    

Für Benutzer

  • Sprachauswahl: Klick auf DE/EN in der oberen linken Ecke
  • Automatische Erkennung: Browser-Sprache wird automatisch erkannt
  • Persistenz: Sprachauswahl bleibt über Session erhalten

Nächste Schritte

  1. Weitere Sprachen hinzufügen (z.B. Französisch, Spanisch)
  2. Pluralisierung für verschiedene Sprachen implementieren
  3. Dynamische Übersetzungen für API-Responses
  4. RTL-Sprachen unterstützen (Arabisch, Hebräisch)

Dateien

  • app.py: Hauptanwendung mit i18n-Integration
  • babel.cfg: Babel-Konfiguration
  • requirements.txt: Flask-Babel Abhängigkeit
  • templates/index.html: Übersetzte UI-Templates
  • translations/: Übersetzungsdateien

Status

Vollständig implementiert und funktionsfähig

  • Deutsche und englische Übersetzungen
  • Sprachauswahl-UI
  • Automatische Spracherkennung
  • Session-basierte Persistenz
  • Kompilierte Übersetzungen für Performance