- 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
3.5 KiB
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
-
Neue Texte hinzufügen:
{{ _('Neuer Text') }}
-
Übersetzungen extrahieren:
pybabel extract -F babel.cfg -k _l -o messages.pot .
-
Neue Übersetzungsdatei erstellen:
pybabel init -i messages.pot -d translations -l en
-
Ü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
- Weitere Sprachen hinzufügen (z.B. Französisch, Spanisch)
- Pluralisierung für verschiedene Sprachen implementieren
- Dynamische Übersetzungen für API-Responses
- RTL-Sprachen unterstützen (Arabisch, Hebräisch)
Dateien
app.py
: Hauptanwendung mit i18n-Integrationbabel.cfg
: Babel-Konfigurationrequirements.txt
: Flask-Babel Abhängigkeittemplates/index.html
: Übersetzte UI-Templatestranslations/
: Übersetzungsdateien
Status
✅ Vollständig implementiert und funktionsfähig
- Deutsche und englische Übersetzungen
- Sprachauswahl-UI
- Automatische Spracherkennung
- Session-basierte Persistenz
- Kompilierte Übersetzungen für Performance