feat(mobile): add pre-login legal pages, multi-image selection, file detail view, search, i18n, HEIC support

- Add Privacy Policy, Terms of Service, and Imprint links to WelcomeScreen
  and LoginScreen for GDPR/Apple compliance (pre-login access)
- Enable multiple image selection in photo library picker
- Add HEIC/HEIF image support to backend (allowed_types, convert_to_pdf, upload handler)
- Create FileDetailScreen with processing status and logs
- Add search bar to FilesScreen with debounced search
- Set up i18n with expo-localization (EN, DE, ES, FR, IT)
- Add language selector to ProfileScreen settings
- Add Imprint link to ProfileScreen legal section
- Update docs and tests

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2026-03-19 19:11:44 +00:00
parent 0252f11cc0
commit 67c17e7baa
22 changed files with 1502 additions and 56 deletions
+114
View File
@@ -0,0 +1,114 @@
{
"common": {
"retry": "Erneut versuchen",
"cancel": "Abbrechen",
"back": "Zurück",
"error": "Fehler",
"loading": "Laden…",
"search": "Suchen",
"clear_search": "Suche löschen"
},
"welcome": {
"tagline": "Intelligente Dokumentenverarbeitung",
"description": "Dokumente einlesen, OCR durchführen, Metadaten mit KI extrahieren und Dateien in Ihren Cloud-Speicher leiten alles in einer nahtlosen Pipeline.",
"get_started": "Loslegen",
"hint": "Verbinden Sie sich mit Ihrem selbst gehosteten oder Cloud-DocuElevate-Server.",
"feature_ocr_title": "OCR & Texterkennung",
"feature_ocr_desc": "Gescannte PDFs und Bilder automatisch in durchsuchbaren Text umwandeln.",
"feature_ai_title": "KI-Metadatenextraktion",
"feature_ai_desc": "KI klassifiziert Dokumente und extrahiert Schlüsselfelder wie Datum, Beträge und Betreff.",
"feature_cloud_title": "Multi-Cloud-Speicher",
"feature_cloud_desc": "Verarbeitete Dateien an Dropbox, Google Drive, OneDrive, S3, Nextcloud und mehr weiterleiten."
},
"login": {
"server_url": "Server-URL",
"server_url_placeholder": "https://ihr-docuelevate-server.com",
"sign_in_sso": "Mit SSO anmelden",
"scan_qr": "📱 QR-Code scannen zum Anmelden",
"hint": "Melden Sie sich per SSO an oder scannen Sie einen QR-Code aus der Web-App.",
"back": "← Zurück",
"or": "oder",
"server_url_required": "Server-URL erforderlich",
"server_url_required_msg": "Bitte geben Sie die URL Ihres DocuElevate-Servers ein.",
"invalid_url": "Ungültige URL",
"invalid_url_msg": "Die Server-URL muss mit http:// oder https:// beginnen",
"sign_in_failed": "Anmeldung fehlgeschlagen",
"qr_login_failed": "QR-Anmeldung fehlgeschlagen"
},
"upload": {
"camera": "Kamera",
"photos": "Fotos",
"files": "Dateien",
"camera_access_title": "Kamerazugriff erforderlich",
"camera_access_msg": "Bitte erlauben Sie den Kamerazugriff in den Einstellungen, um Dokumente aufzunehmen.",
"photo_access_title": "Fotobibliothek-Zugriff erforderlich",
"photo_access_msg": "Bitte erlauben Sie den Zugriff auf die Fotobibliothek in den Einstellungen.",
"file_picker_error": "Dateiauswahl-Fehler",
"file_picker_error_msg": "Dateiauswahl konnte nicht geöffnet werden",
"empty_title": "Tippen Sie auf Kamera, Fotos oder Dateien, um ein Dokument hochzuladen.",
"empty_hint": "Sie können auch Dateien aus anderen Apps direkt an DocuElevate senden.",
"sign_in_required": "Bitte melden Sie sich an, um Dokumente hochzuladen.",
"status_queued": "In der Warteschlange…",
"status_processing": "Wird verarbeitet…",
"status_completed": "Verarbeitet",
"status_failed": "Verarbeitung fehlgeschlagen",
"status_duplicate": "Duplikat bereits verarbeitet",
"tap_retry": "Zum Wiederholen tippen",
"retry_title": "Upload wiederholen",
"retry_msg": "Möchten Sie den Upload von \"{filename}\" wiederholen?",
"capture_label": "Dokument mit Kamera aufnehmen",
"photo_label": "Foto aus der Bibliothek auswählen",
"file_label": "Datei vom Gerät auswählen"
},
"files": {
"title": "Meine Dokumente",
"search_placeholder": "Dokumente durchsuchen…",
"empty_title": "Noch keine Dokumente.",
"empty_hint": "Laden Sie ein Dokument über den Upload-Tab hoch.",
"search_empty": "Keine Dokumente gefunden.",
"search_empty_hint": "Versuchen Sie einen anderen Suchbegriff.",
"view_details": "Details für {filename} anzeigen"
},
"file_detail": {
"title": "Dateidetails",
"back": "Zurück zu Dateien",
"file_size": "Dateigröße",
"mime_type": "MIME-Typ",
"uploaded": "Hochgeladen",
"file_hash": "Datei-Hash",
"last_step": "Letzter Schritt",
"total_steps": "Gesamtschritte",
"processing_log": "Verarbeitungsprotokoll",
"no_logs": "Noch keine Verarbeitungsprotokolle.",
"file_not_found": "Datei nicht gefunden"
},
"profile": {
"title": "Profil",
"not_signed_in": "Nicht angemeldet",
"connection": "Verbindung",
"server": "Server",
"user_id": "Benutzer-ID",
"legal": "Rechtliches",
"privacy_policy": "Datenschutzrichtlinie",
"terms_of_service": "Nutzungsbedingungen",
"imprint": "Impressum",
"sign_out": "Abmelden",
"sign_out_title": "Abmelden",
"sign_out_msg": "Möchten Sie sich wirklich abmelden?",
"delete_account": "Konto löschen",
"delete_account_title": "Konto löschen",
"delete_account_msg": "Dadurch werden Ihr Konto und alle zugehörigen Daten dauerhaft gelöscht. Diese Aktion kann nicht rückgängig gemacht werden.",
"could_not_open": "Konnte {page} nicht öffnen. Bitte versuchen Sie es erneut.",
"admin": "Admin"
},
"legal": {
"privacy_policy": "Datenschutz",
"terms": "AGB",
"imprint": "Impressum"
},
"tabs": {
"upload": "Hochladen",
"files": "Dateien",
"profile": "Profil"
}
}