3b5ca04ebc
- Add LocaleProvider + useLocale() hook with AsyncStorage persistence to mobile i18n - Replace all hardcoded English strings in every screen with t() calls - Add missing profile.settings/language keys to all 5 translation files (en/de/es/fr/it) - Wrap app root in LocaleProvider; apply server preferred_language on login in AuthGuard - Tab labels and header titles now re-render on language switch - ProfileScreen: use useLocale() context, sync language to server via POST /api/i18n/language - Backend: add preferred_language field to GET /api/mobile/whoami response - Mobile API: add preferred_language to WhoAmIResponse type + setServerLanguage() method - Tests: add test_whoami_returns_preferred_language and test_whoami_no_profile_preferred_language_is_null - Docs: update MobileApp.md with language sync priority and whoami response format Language priority: server preference > AsyncStorage > device locale > English fallback Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
117 lines
4.8 KiB
JSON
117 lines
4.8 KiB
JSON
{
|
||
"common": {
|
||
"retry": "Riprova",
|
||
"cancel": "Annulla",
|
||
"back": "Indietro",
|
||
"error": "Errore",
|
||
"loading": "Caricamento…",
|
||
"search": "Cerca",
|
||
"clear_search": "Cancella ricerca"
|
||
},
|
||
"welcome": {
|
||
"tagline": "Elaborazione Intelligente dei Documenti",
|
||
"description": "Acquisisci documenti, esegui l'OCR, estrai metadati con l'IA e invia i file al tuo cloud storage — tutto in un unico flusso.",
|
||
"get_started": "Inizia",
|
||
"hint": "Collegati al tuo server DocuElevate self-hosted o cloud.",
|
||
"feature_ocr_title": "OCR ed Estrazione Testo",
|
||
"feature_ocr_desc": "Converti automaticamente PDF e immagini scansionate in testo completamente ricercabile.",
|
||
"feature_ai_title": "Estrazione Metadati con IA",
|
||
"feature_ai_desc": "L'IA classifica i documenti ed estrae campi chiave come date, importi e oggetti.",
|
||
"feature_cloud_title": "Archiviazione Multi-Cloud",
|
||
"feature_cloud_desc": "Invia i file elaborati a Dropbox, Google Drive, OneDrive, S3, Nextcloud e altro."
|
||
},
|
||
"login": {
|
||
"server_url": "URL del Server",
|
||
"server_url_placeholder": "https://il-tuo-server-docuelevate.com",
|
||
"sign_in_sso": "Accedi con SSO",
|
||
"scan_qr": "📱 Scansiona il codice QR per accedere",
|
||
"hint": "Accedi tramite SSO o scansiona un codice QR dall'app web.",
|
||
"back": "← Indietro",
|
||
"or": "o",
|
||
"server_url_required": "URL del server richiesto",
|
||
"server_url_required_msg": "Inserisci l'URL del tuo server DocuElevate.",
|
||
"invalid_url": "URL non valido",
|
||
"invalid_url_msg": "L'URL del server deve iniziare con http:// o https://",
|
||
"sign_in_failed": "Accesso fallito",
|
||
"qr_login_failed": "Accesso QR fallito"
|
||
},
|
||
"upload": {
|
||
"camera": "Fotocamera",
|
||
"photos": "Foto",
|
||
"files": "File",
|
||
"camera_access_title": "Accesso alla fotocamera richiesto",
|
||
"camera_access_msg": "Consenti l'accesso alla fotocamera nelle Impostazioni per acquisire documenti.",
|
||
"photo_access_title": "Accesso alla libreria foto richiesto",
|
||
"photo_access_msg": "Consenti l'accesso alla libreria foto nelle Impostazioni per selezionare immagini.",
|
||
"file_picker_error": "Errore nel selettore file",
|
||
"file_picker_error_msg": "Impossibile aprire il selettore file",
|
||
"empty_title": "Tocca Fotocamera, Foto o File per caricare un documento.",
|
||
"empty_hint": "Puoi anche condividere file da altre app direttamente su DocuElevate.",
|
||
"sign_in_required": "Accedi per caricare documenti.",
|
||
"status_queued": "In coda per l'elaborazione…",
|
||
"status_processing": "Elaborazione in corso…",
|
||
"status_completed": "Elaborato",
|
||
"status_failed": "Elaborazione fallita",
|
||
"status_duplicate": "Duplicato – già elaborato",
|
||
"tap_retry": "Tocca per riprovare",
|
||
"retry_title": "Riprova Caricamento",
|
||
"retry_msg": "Vuoi riprovare a caricare \"{filename}\"?",
|
||
"capture_label": "Acquisisci documento con la fotocamera",
|
||
"photo_label": "Seleziona foto dalla libreria",
|
||
"file_label": "Seleziona file dal dispositivo"
|
||
},
|
||
"files": {
|
||
"title": "I Miei Documenti",
|
||
"search_placeholder": "Cerca documenti…",
|
||
"empty_title": "Nessun documento ancora.",
|
||
"empty_hint": "Carica un documento dalla scheda Carica per iniziare.",
|
||
"search_empty": "Nessun documento corrisponde alla tua ricerca.",
|
||
"search_empty_hint": "Prova con un altro termine di ricerca.",
|
||
"view_details": "Visualizza dettagli per {filename}"
|
||
},
|
||
"file_detail": {
|
||
"title": "Dettagli File",
|
||
"back": "Torna ai File",
|
||
"file_size": "Dimensione",
|
||
"mime_type": "Tipo MIME",
|
||
"uploaded": "Caricato",
|
||
"file_hash": "Hash del File",
|
||
"last_step": "Ultimo Passaggio",
|
||
"total_steps": "Passaggi Totali",
|
||
"processing_log": "Registro di Elaborazione",
|
||
"no_logs": "Nessun registro di elaborazione ancora.",
|
||
"file_not_found": "File non trovato"
|
||
},
|
||
"profile": {
|
||
"title": "Profilo",
|
||
"not_signed_in": "Non connesso",
|
||
"connection": "Connessione",
|
||
"server": "Server",
|
||
"user_id": "ID Utente",
|
||
"legal": "Legale",
|
||
"privacy_policy": "Informativa sulla Privacy",
|
||
"terms_of_service": "Termini di Servizio",
|
||
"imprint": "Note Legali",
|
||
"sign_out": "Esci",
|
||
"sign_out_title": "Esci",
|
||
"sign_out_msg": "Sei sicuro di voler uscire?",
|
||
"delete_account": "Elimina Account",
|
||
"delete_account_title": "Elimina Account",
|
||
"delete_account_msg": "Questo eliminerà permanentemente il tuo account e tutti i dati associati. Questa azione non può essere annullata.",
|
||
"could_not_open": "Impossibile aprire {page}. Riprova.",
|
||
"admin": "Admin",
|
||
"settings": "Impostazioni",
|
||
"language": "Lingua"
|
||
},
|
||
"legal": {
|
||
"privacy_policy": "Privacy",
|
||
"terms": "Termini",
|
||
"imprint": "Note Legali"
|
||
},
|
||
"tabs": {
|
||
"upload": "Carica",
|
||
"files": "File",
|
||
"profile": "Profilo"
|
||
}
|
||
}
|