5a679dfc90
V1: Add owner-scoped folder pagination (list_folders_by_owner_paginated) - New method in FolderRepository trait, PG implementation, service & handler - Prevents IDOR by filtering folder listings to authenticated user V2: Enforce ownership checks on folder mutations - rename_folder, move_folder, delete_folder now require caller_id - Service verifies folder.owner_id == caller_id (returns 404 on mismatch) - Propagated to folder_handler, batch_handler, batch_operations, webdav_handler - delete_folder_with_trash upgraded from OptionalAuthUser to AuthUser - download_folder_zip now checks ownership before streaming V3: Fix XSS in frontend via DOM APIs - sharedView.js: innerHTML → createElement + textContent - contextMenus.js: innerHTML → DOM construction for share dialog Cleanup: removed unused OptionalAuthUser import, updated all stubs/mocks
353 lines
12 KiB
JSON
353 lines
12 KiB
JSON
{
|
|
"app": {
|
|
"title": "OxiCloud",
|
|
"description": "Sistema di archiviazione cloud minimalista"
|
|
},
|
|
"nav": {
|
|
"files": "File",
|
|
"shared": "Condivisi",
|
|
"recent": "Recenti",
|
|
"favorites": "Preferiti",
|
|
"trash": "Cestino"
|
|
},
|
|
"actions": {
|
|
"search": "Cerca file...",
|
|
"new_folder": "Nuova cartella",
|
|
"upload": "Carica",
|
|
"upload_files": "Carica file",
|
|
"upload_folder": "Carica cartella",
|
|
"upload.uploading": "Caricamento...",
|
|
"upload.complete": "{count} / {total} caricati",
|
|
"rename": "Rinomina",
|
|
"move": "Sposta in...",
|
|
"move_to": "Sposta in",
|
|
"delete": "Elimina",
|
|
"download": "Scarica",
|
|
"view": "Visualizza",
|
|
"cancel": "Annulla",
|
|
"confirm": "Conferma",
|
|
"share": "Condividi",
|
|
"favorite": "Aggiungi ai preferiti",
|
|
"unfavorite": "Rimuovi dai preferiti",
|
|
"copy": "Copia",
|
|
"notify": "Notifica",
|
|
"send": "Invia",
|
|
"clear_recent": "Cancella recenti",
|
|
"logout": "Disconnetti",
|
|
"create": "Crea",
|
|
"search_btn": "Cerca",
|
|
"close": "Chiudi",
|
|
"delete_permanently": "Elimina definitivamente",
|
|
"empty_trash": "Svuota il cestino"
|
|
},
|
|
"user_menu": {
|
|
"appearance": "Aspetto",
|
|
"about": "Informazioni su OxiCloud",
|
|
"about_description": "Piattaforma di archiviazione cloud realizzata con Rust & Architettura Pulita. Veloce, sicura e privata.",
|
|
"admin_panel": "Pannello di amministrazione",
|
|
"profile": "Il mio profilo",
|
|
"role_user": "Utente"
|
|
},
|
|
"share": {
|
|
"dialogTitle": "Link di condivisione",
|
|
"linkLabel": "Link di condivisione:",
|
|
"copyLink": "Copia",
|
|
"permissions": "Permessi:",
|
|
"permissionRead": "Lettura",
|
|
"permissionWrite": "Scrittura",
|
|
"permissionReshare": "Ricondivisione",
|
|
"password": "Protezione password:",
|
|
"generatePassword": "Genera",
|
|
"expiration": "Data di scadenza:",
|
|
"update": "Aggiorna condivisione",
|
|
"remove": "Rimuovi condivisione",
|
|
"notifyTitle": "Invia notifica",
|
|
"notifyEmailLabel": "Indirizzo email:",
|
|
"notifyMessageLabel": "Messaggio (opzionale):",
|
|
"notifySend": "Invia notifica",
|
|
"shareWithOthers": "Condividi con altri",
|
|
"sharePublicly": "Condividi pubblicamente",
|
|
"shareSettings": "Impostazioni di condivisione",
|
|
"shareCopied": "Link copiato negli appunti",
|
|
"shareCreated": "Link di condivisione creato con successo",
|
|
"shareUpdated": "Impostazioni di condivisione aggiornate con successo",
|
|
"shareRemoved": "Condivisione rimossa con successo"
|
|
},
|
|
"share_dialogTitle": "Link di condivisione",
|
|
"share_linkLabel": "Link di condivisione:",
|
|
"share_copyLink": "Copia",
|
|
"share_permissions": "Permessi:",
|
|
"share_permissionRead": "Lettura",
|
|
"share_permissionWrite": "Scrittura",
|
|
"share_permissionReshare": "Ricondivisione",
|
|
"share_password": "Protezione password:",
|
|
"share_generatePassword": "Genera",
|
|
"share_expiration": "Data di scadenza:",
|
|
"share_update": "Aggiorna condivisione",
|
|
"share_remove": "Rimuovi condivisione",
|
|
"share_notifyTitle": "Invia notifica",
|
|
"share_notifyEmailLabel": "Indirizzo email:",
|
|
"share_notifyMessageLabel": "Messaggio (opzionale):",
|
|
"share_notifySend": "Invia notifica",
|
|
"shared": {
|
|
"backToFiles": "Torna ai file",
|
|
"pageTitle": "Risorse condivise",
|
|
"pageDescription": "Gestisci i tuoi file e le tue cartelle condivise",
|
|
"filterType": "Tipo:",
|
|
"filterAll": "Tutti",
|
|
"filterFiles": "File",
|
|
"filterFolders": "Cartelle",
|
|
"sortBy": "Ordina per:",
|
|
"sortByName": "Nome",
|
|
"sortByDate": "Data di condivisione",
|
|
"sortByExpiration": "Scadenza",
|
|
"search": "Cerca",
|
|
"colName": "Nome",
|
|
"colType": "Tipo",
|
|
"colDateShared": "Data di condivisione",
|
|
"colExpiration": "Scadenza",
|
|
"colPermissions": "Permessi",
|
|
"colPassword": "Password",
|
|
"colActions": "Azioni",
|
|
"emptyStateTitle": "Ancora nessuna risorsa condivisa",
|
|
"emptyStateDesc": "Quando condividi file o cartelle, appariranno qui",
|
|
"goToFiles": "Vai ai file",
|
|
"typeFile": "File",
|
|
"typeFolder": "Cartella",
|
|
"noExpiration": "Nessuna scadenza",
|
|
"hasPassword": "Sì",
|
|
"noPassword": "No",
|
|
"editShare": "Modifica condivisione",
|
|
"notifyShare": "Notifica a qualcuno",
|
|
"copyLink": "Copia link",
|
|
"removeShare": "Rimuovi condivisione",
|
|
"linkCopied": "Link copiato negli appunti!",
|
|
"linkCopyFailed": "Impossibile copiare il link",
|
|
"itemUpdated": "Impostazioni di condivisione aggiornate con successo",
|
|
"itemRemoved": "Condivisione rimossa con successo",
|
|
"invalidEmail": "Inserisci un indirizzo email valido",
|
|
"notificationSent": "Notifica inviata con successo",
|
|
"notificationFailed": "Impossibile inviare la notifica",
|
|
"shared_backToFiles": "Torna ai file",
|
|
"shared_pageTitle": "Risorse condivise",
|
|
"shared_pageDescription": "Gestisci i tuoi file e le tue cartelle condivise",
|
|
"shared_filterType": "Tipo:",
|
|
"shared_filterAll": "Tutti",
|
|
"shared_filterFiles": "File",
|
|
"shared_filterFolders": "Cartelle",
|
|
"shared_sortBy": "Ordina per:",
|
|
"shared_sortByName": "Nome",
|
|
"shared_sortByDate": "Data di condivisione",
|
|
"shared_sortByExpiration": "Scadenza",
|
|
"shared_search": "Cerca",
|
|
"shared_colName": "Nome",
|
|
"shared_colType": "Tipo",
|
|
"shared_colDateShared": "Data di condivisione",
|
|
"shared_colExpiration": "Scadenza",
|
|
"shared_colPermissions": "Permessi",
|
|
"shared_colPassword": "Password",
|
|
"shared_colActions": "Azioni",
|
|
"shared_emptyStateTitle": "Ancora nessuna risorsa condivisa",
|
|
"shared_emptyStateDesc": "Quando condividi file o cartelle, appariranno qui",
|
|
"shared_goToFiles": "Vai ai file",
|
|
"shared_typeFile": "File",
|
|
"shared_typeFolder": "Cartella",
|
|
"shared_noExpiration": "Nessuna scadenza",
|
|
"shared_hasPassword": "Sì",
|
|
"shared_noPassword": "No",
|
|
"shared_editShare": "Modifica condivisione",
|
|
"shared_notifyShare": "Notifica a qualcuno",
|
|
"shared_copyLink": "Copia link",
|
|
"shared_removeShare": "Rimuovi condivisione",
|
|
"shared_linkCopied": "Link copiato negli appunti!",
|
|
"shared_linkCopyFailed": "Impossibile copiare il link",
|
|
"shared_itemUpdated": "Impostazioni di condivisione aggiornate con successo",
|
|
"shared_itemRemoved": "Condivisione rimossa con successo",
|
|
"shared_invalidEmail": "Inserisci un indirizzo email valido",
|
|
"shared_notificationSent": "Notifica inviata con successo",
|
|
"shared_notificationFailed": "Impossibile inviare la notifica"
|
|
},
|
|
"files": {
|
|
"name": "Nome",
|
|
"type": "Tipo",
|
|
"size": "Dimensione",
|
|
"modified": "Modificato",
|
|
"no_files": "Nessun file in questa cartella",
|
|
"loading": "Caricamento file…",
|
|
"view_grid": "Visualizzazione griglia",
|
|
"view_list": "Visualizzazione elenco",
|
|
"file_types": {
|
|
"document": "Documento",
|
|
"image": "Immagine",
|
|
"video": "Video",
|
|
"audio": "Audio",
|
|
"pdf": "PDF",
|
|
"text": "Testo",
|
|
"folder": "Cartella"
|
|
}
|
|
},
|
|
"dialogs": {
|
|
"rename_folder": "Rinomina cartella",
|
|
"rename_file": "Rinomina file",
|
|
"new_name": "Nuovo nome",
|
|
"new_folder_title": "Nuova cartella",
|
|
"folder_name": "Nome cartella",
|
|
"folder_placeholder": "La mia cartella",
|
|
"rename_title": "Rinomina",
|
|
"move_file": "Sposta file",
|
|
"move_folder": "Sposta cartella",
|
|
"select_destination": "Seleziona cartella di destinazione:",
|
|
"root": "Root",
|
|
"delete_confirmation": "Sei sicuro di voler eliminare",
|
|
"and_contents": "e tutto il suo contenuto",
|
|
"no_undo": "Questa azione non può essere annullata",
|
|
"confirm_title": "Conferma azione",
|
|
"confirm_delete": "Sposta nel cestino",
|
|
"confirm_delete_file": "Sei sicuro di voler spostare il file \"{{name}}\" nel cestino?",
|
|
"confirm_delete_folder": "Sei sicuro di voler spostare la cartella \"{{name}}\" e tutto il suo contenuto nel cestino?",
|
|
"confirm_permanent_delete": "Elimina definitivamente",
|
|
"confirm_permanent_delete_msg": "Sei sicuro di voler eliminare definitivamente questo elemento? Questa azione non può essere annullata.",
|
|
"confirm_empty_trash": "Svuota il cestino",
|
|
"confirm_delete_share": "Elimina link di condivisione",
|
|
"confirm_delete_share_msg": "Sei sicuro di voler eliminare questo link di condivisione?",
|
|
"share_file": "Condividi File",
|
|
"existing_shares": "Condivisioni Esistenti",
|
|
"share_options": "Opzioni di Condivisione",
|
|
"password": "Password",
|
|
"expiration": "Scadenza",
|
|
"permissions": "Permessi",
|
|
"generated_link": "Link Generato",
|
|
"notify": "Invia Notifica",
|
|
"recipient": "Destinatario",
|
|
"message": "Messaggio"
|
|
},
|
|
"dropzone": {
|
|
"drag_files": "Trascina i file qui o clicca per selezionare",
|
|
"drop_files": "Rilascia i file per caricarli"
|
|
},
|
|
"permissions": {
|
|
"read": "Lettura",
|
|
"write": "Scrittura",
|
|
"reshare": "Ricondividi"
|
|
},
|
|
"errors": {
|
|
"file_not_found": "File non trovato",
|
|
"folder_not_found": "Cartella non trovata",
|
|
"delete_error": "Errore durante l'eliminazione",
|
|
"upload_error": "Errore durante il caricamento del file",
|
|
"rename_error": "Errore durante la rinomina",
|
|
"move_error": "Errore durante lo spostamento",
|
|
"empty_name": "Il nome non può essere vuoto",
|
|
"name_exists": "Un file o una cartella con quel nome esiste già",
|
|
"generic_error": "Si è verificato un errore"
|
|
},
|
|
"breadcrumb": {
|
|
"home": "Home"
|
|
},
|
|
"trash": {
|
|
"empty_trash": "Svuota il cestino",
|
|
"empty_state": "Il cestino è vuoto",
|
|
"original_location": "Posizione originale",
|
|
"deleted_date": "Data di eliminazione",
|
|
"actions": "Azioni",
|
|
"restore": "Ripristina",
|
|
"delete_permanently": "Elimina definitivamente",
|
|
"empty_confirm": "Sei sicuro di voler svuotare il cestino? Questa operazione eliminerà definitivamente tutti gli elementi."
|
|
},
|
|
"auth": {
|
|
"login_title": "Accedi",
|
|
"username": "Nome utente",
|
|
"username_placeholder": "Inserisci il tuo nome utente",
|
|
"password": "Password",
|
|
"password_placeholder": "Inserisci la tua password",
|
|
"login_button": "Accedi",
|
|
"no_account": "Non hai un account?",
|
|
"register": "Registrati",
|
|
"admin_setup": "È la prima volta?",
|
|
"setup": "Configura amministratore",
|
|
"register_title": "Crea account",
|
|
"email": "Email",
|
|
"email_placeholder": "Inserisci la tua email",
|
|
"confirm_password": "Conferma password",
|
|
"confirm_password_placeholder": "Conferma la tua password",
|
|
"register_button": "Crea account",
|
|
"have_account": "Hai già un account?",
|
|
"login": "Accedi",
|
|
"setup_title": "Configurazione iniziale",
|
|
"setup_step1": "Amministratore",
|
|
"setup_step2": "Sistema",
|
|
"setup_step3": "Completa",
|
|
"admin_username": "Nome utente amministratore",
|
|
"admin_email": "Email amministratore",
|
|
"admin_password": "Password amministratore",
|
|
"create_admin": "Crea amministratore",
|
|
"back_to_login": "Già configurato?",
|
|
"admin_success": "Account amministratore creato con successo! Ora puoi accedere.",
|
|
"account_success": "Account creato con successo! Ora puoi accedere.",
|
|
"passwords_mismatch": "Le password non corrispondono",
|
|
"admin_create_error": "Errore durante la creazione dell'account amministratore",
|
|
"or": "o",
|
|
"sso_login": "Accedi con SSO",
|
|
"sso_login_provider": "Accedi con {{provider}}"
|
|
},
|
|
"storage": {
|
|
"title": "Archiviazione",
|
|
"calculating": "Calcolo in corso...",
|
|
"used": "{{percentage}}% utilizzato ({{used}} / {{total}})"
|
|
},
|
|
"viewer": {
|
|
"unsupported_file": "Questo tipo di file non può essere visualizzato in anteprima.",
|
|
"download_file": "Scarica file",
|
|
"zoom_in": "Ingrandisci",
|
|
"zoom_out": "Riduci",
|
|
"zoom_reset": "Reimposta zoom"
|
|
},
|
|
"language_selector": {
|
|
"title": "Benvenuto in OxiCloud",
|
|
"subtitle": "Seleziona la tua lingua",
|
|
"continue": "Continua",
|
|
"languages": {
|
|
"en": "Inglese",
|
|
"es": "Spagnolo",
|
|
"zh": "Cinese",
|
|
"fa": "Persiano",
|
|
"fr": "Francese",
|
|
"de": "Tedesco",
|
|
"pt": "Portoghese",
|
|
"it": "Italiano"
|
|
}
|
|
},
|
|
"favorites": {
|
|
"empty_state": "Ancora nessun preferito",
|
|
"empty_hint": "Aggiungi file o cartelle ai preferiti per inserirli qui",
|
|
"add": "Aggiungi ai preferiti",
|
|
"remove": "Rimuovi dai preferiti"
|
|
},
|
|
"recent": {
|
|
"title": "Recenti",
|
|
"clear": "Cancella recenti",
|
|
"accessed": "Accesso",
|
|
"empty_state": "Nessun file recente",
|
|
"empty_hint": "I file che apri appariranno qui"
|
|
},
|
|
"notifications": {
|
|
"file_renamed": "File rinominato",
|
|
"file_renamed_to": "File rinominato in \"{{name}}\"",
|
|
"folder_renamed": "Cartella rinominata",
|
|
"folder_renamed_to": "Cartella rinominata in \"{{name}}\"",
|
|
"file_uploaded": "File caricato",
|
|
"file_deleted": "File spostato nel cestino",
|
|
"folder_deleted": "Cartella spostata nel cestino",
|
|
"item_deleted_permanently": "Elemento eliminato definitivamente",
|
|
"trash_emptied": "Cestino svuotato con successo"
|
|
},
|
|
"batch": {
|
|
"one_selected": "1 elemento selezionato",
|
|
"n_selected": "{{count}} elementi selezionati",
|
|
"confirm_delete": "Sei sicuro di voler spostare {{count}} elementi nel cestino?",
|
|
"move_title": "Sposta {{count}} elemento/i",
|
|
"add_favorites": "Aggiungi ai preferiti",
|
|
"move_copy": "Sposta o copia"
|
|
}
|
|
}
|