{
"forms": {
"upload_dir_error": "Errore durante la creazione della cartella di upload",
"file_create_error": "Errore durante la creazione del file",
"multipart_stream_error": "Errore nel stream multipart",
"file_write_error": "Errore durante la scrittura del file",
"required": "Questo campo è obbligatorio",
"too_short": "Troppo corto (min {})",
"too_long": "Troppo lungo (max {})",
"email_invalid": "Formato dell'indirizzo email non valido",
"url_invalid": "Inserisci un URL valido",
"phone_invalid": "Numero di telefono non valido (cifre, +, spazi, trattini, 7-15 cifre)",
"hash_error": "Errore di hashing: {}",
"password_empty": "La password non può essere vuota",
"filter_invalid_value": "Il filtro static/media ha ricevuto un valore non valido ({}) invece di un percorso di file.",
"number_invalid": "Numero non valido",
"number_required": "Richiesto",
"integer_required": "Deve essere un numero intero",
"decimal_required": "Deve essere in formato decimale",
"min_value": "Min {} richiesto",
"max_value": "Max {} superato",
"precision_max": "Precisione massima {} cifre dopo la virgola",
"precision_min": "Precisione minima {} cifre dopo la virgola",
"color_invalid": "Colore non valido (formato: #RRGGBB o #RGB)",
"color_no_hash": "Il colore deve iniziare con #",
"color_bad_hex": "Contiene caratteri non esadecimali",
"slug_invalid": "Slug non valido",
"slug_no_dash": "Lo slug non deve iniziare o finire con un trattino",
"uuid_invalid": "Formato UUID non valido (atteso: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)",
"json_invalid": "JSON non valido: {}",
"ipv4_only": "Sono accettati solo indirizzi IPv4",
"ipv6_only": "Sono accettati solo indirizzi IPv6",
"ip_invalid": "Indirizzo IP non valido",
"date_invalid": "Formato della data non valido",
"date_too_old": "Troppo vecchia (min: {})",
"date_too_far": "Troppo lontana (max: {})",
"time_invalid": "Formato dell'ora non valido",
"file_required": "Seleziona almeno un file",
"file_extension_blocked": "File '{}' non autorizzato. Estensioni: {}",
"finalize_error": "Errore durante la finalizzazione del campo '{}': {}",
"template_missing": "Template mancante: {}",
"render_js_error": "Errore nel rendering JS: {}",
"tera_not_configured": "Tera non configurato",
"config_not_found": "Configurazione non trovata nelle estensioni",
"hint_slug": "Formato: lettere-numeri-trattini",
"hint_uuid": "Formato: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"hint_json": "Formato JSON valido richiesto",
"hint_ip_v4": "Formato IPv4: 192.168.1.1",
"hint_ip_v6": "Formato IPv6: 2001:0db8:85a3::8a2e:0370:7334",
"hint_ip": "Formato IPv4 o IPv6",
"validation_overflow": "Stack overflow rilevato: ricorsione infinita nella validazione",
"choice_invalid": "Scelta non valida",
"choice_invalid_value": "Scelta non valida: {}",
"select_required": "Seleziona un'opzione",
"checkbox_required": "Seleziona almeno un'opzione",
"multipart_error": "Errore multipart",
"body_error": "Errore durante la lettura del body",
"aegis_query_error": "Errore nel parsing della query string: {}",
"aegis_urlencoded_error": "Errore nel parsing del body urlencoded: {}",
"aegis_json_error": "Errore nel parsing del body JSON: {}",
"auth_required": "Autenticazione richiesta",
"role_insufficient": "Ruolo insufficiente",
"time_too_old": "Troppo presto (min: {})",
"time_too_far": "Troppo tardi (max: {})",
"datetime_too_old": "Troppo presto (min: {})",
"datetime_too_far": "Troppo tardi (max: {})",
"duration_invalid": "Durata non valida (numero di secondi atteso)",
"duration_too_short": "Durata minima: {} secondi",
"duration_too_long": "Durata massima: {} secondi",
"file_max_count": "Massimo {} file consentiti",
"file_too_large": "File '{}' troppo grande ({}MB > {}MB max)",
"file_invalid_image": "Il file '{}' non è un'immagine valida",
"image_too_wide": "L'immagine '{}' è troppo larga ({}px > {}px)",
"image_too_tall": "L'immagine '{}' è troppo alta ({}px > {}px)",
"boolean_required": "Devi accettare questo campo",
"slug_unicode_invalid": "Sono consentiti solo lettere, numeri, trattini e underscore",
"unique_field_taken": "Questo {} è già utilizzato.",
"unique_value_taken": "Il valore del campo '{}' è già utilizzato.",
"unique_constraint_violated": "È stata violata una restrizione di unicità.",
"db_error": "Errore DB: {}",
"text_field_too_large": "Campo di testo troppo grande (max 1 MB)",
"upload_too_large": "File troppo grande (max {}MB)"
},
"csrf": {
"missing": "Token CSRF mancante",
"invalid": "Token CSRF non valido",
"invalid_or_missing": "Token CSRF non valido o mancante",
"forbidden": "Token CSRF non valido",
"session_write_error": "Errore di scrittura della sessione"
},
"error": {
"source": "Fonte: {}",
"AppError": "Errore dell'applicazione",
"build": "Errore di build: {}",
"internal": "Errore interno",
"forbidden": "Accesso vietato",
"not_found": "Risorsa non trovata",
"validation": "Errore di validazione: {}",
"database": "Errore del database: {}",
"io": "Errore IO: {}",
"template": "Errore del template: {}",
"custom": "Errore personalizzato: {}",
"title": {
"not_found": "Pagina non trovata",
"forbidden": "Accesso vietato",
"validation": "Errore di validazione",
"database": "Errore del database",
"template": "Errore di rendering del template",
"internal": "Errore interno del server"
},
"path_not_found": "Il percorso richiesto '{}' non è stato trovato",
"internal_occurred": "Si è verificato un errore interno",
"context_occurred": "Errore AppError verificato"
},
"title": {
"template": "Errore del template in '{}'"
},
"build": {
"validation_failed": "Validazione del build fallita: {}",
"check_failed": "Build fallita con {} errore/i di verifica",
"template_failed": "Caricamento del template fallito: {}",
"db_missing": "Connessione al database richiesta quando la feature 'orm' è attiva",
"component_not_ready": "Il componente '{}' non è pronto"
},
"middleware": {
"host_invalid": "Host non valido: '{}' (Host consentiti: {})",
"host_debug": "Host non valido: '{}'. Aggiungilo a RUNIQUE_ALLOWED_HOSTS.",
"bad_request": "Richiesta non valida"
},
"html": {
"404_title": "404",
"404_text": "Pagina non trovata",
"500_title": "500",
"500_text": "Errore interno del server",
"500_notice": "Il nostro team è stato notificato e sta lavorando al problema.",
"429_title": "429",
"429_text": "Troppe richieste. Attendi un momento prima di riprovare.",
"back_home": "Torna alla home",
"critical_error_title": "Errore critico",
"critical_error_text": "Il sistema di gestione degli errori ha riscontrato un errore.",
"critical_error_contact": "Questa situazione non dovrebbe mai verificarsi. Contatta l'amministratore di sistema."
},
"debug": {
"stack_trace_title": "Trace dettagliato dell'errore",
"stack_trace_tip": "L'errore più alto (livello 0) è generalmente la causa principale. Gli errori successivi mostrano come l'errore si è propagato nel codice."
},
"flash": {
"welcome": "Benvenuto {}, il tuo account è stato creato!",
"fix_errors": "Correggi gli errori",
"success_demo": "Questo è un messaggio di successo.",
"info_demo": "Questo è un messaggio informativo.",
"warning_demo": "Questo è un messaggio di avviso.",
"error_demo": "Questo è un messaggio di errore."
},
"log": {
"db_connecting": "Connessione al database {}...",
"db_connected": "Database connesso con successo ({})",
"db_failed": "Connessione al database fallita",
"db_engine": "Motore: {}",
"template_render_error": "Errore di rendering del template",
"error_handler": "Errore critico verificato",
"error_handled": "Errore gestito",
"files_count": "aggiunta di file JS al modulo",
"js_file_skip": "File JS ignorato",
"already_initialized": "Logger già inizializzato"
},
"cli": {
"creating_project": "Creazione del progetto '{}'...",
"admin_detected": "Admin rilevato → avvio del daemon",
"add_admin_hint": "Aggiungi .with_admin(...) nel tuo builder per attivare il pannello admin.",
"daemon_error": "[Daemon] Errore: {}",
"cargo_run_failed": "Il server applicativo non si è avviato correttamente (cargo run)",
"file_not_found": "File non trovato: {}\\nAssicurati di essere nella root del tuo progetto Runique.",
"admin_not_found": "File admin non trovato: {}\\nCrea src/admin.rs con la macro admin!{{}}.",
"name_empty": "Il nome del progetto non può essere vuoto",
"name_invalid": "Il nome del progetto deve contenere solo lettere, numeri, _ o -",
"name_dash": "Il nome del progetto non può iniziare con -",
"folder_exists": "La cartella '{}' esiste già",
"cargo_run_expect": "Avvio di cargo run fallito",
"project_created": "Progetto '{}' creato con successo!",
"getting_started": "Per iniziare:",
"cd_hint": "cd {}",
"cargo_run_hint": "cargo run"
},
"daemon": {
"modification_detected": "Modifica rilevata → rigenerazione...",
"unable_read": "Impossibile leggere: {}",
"parse_error": "Errore di parsing: {}",
"no_resource": "Nessuna risorsa in admin!{{}} — nulla da generare",
"with_admin_disabled": "with_admin disabilitato → daemon fermato",
"operational": "Daemon operativo → src/admin/generated.rs",
"generation_error": "Errore di generazione: {}",
"watcher_error": "Errore del watcher: {}",
"unable_create": "Impossibile creare il watcher: {}",
"unable_watch": "Impossibile monitorare {} : {}"
},
"macro": {
"named_fields_only": "Solo struct con campi nominati",
"structs_only": "Funziona solo su struct",
"forms_field_required": "La struct '{}' deve avere un campo 'Forms'",
"field_no_name": "Campo senza nome",
"model_form_named_only": "DeriveModelForm: solo struct con campi nominati",
"model_form_structs_only": "DeriveModelForm: solo struct"
},
"parser": {
"string_expected": "Stringa letterale attesa, trovato: {}",
"string_eof": "Stringa letterale attesa, fine del file",
"array_expected": "Array [...] atteso per i permessi, trovato: {}",
"array_eof": "Array [...] atteso per i permessi, fine del file",
"role_required": "È richiesto almeno un ruolo in permissions: [...]",
"punct_expected": "'{}' atteso, trovato: {}",
"punct_eof": "'{}' atteso, fine del file",
"title_required": "admin!: 'title' è obbligatorio",
"permissions_required": "admin!: 'permissions' è obbligatorio",
"list_display_exclude_exclusive": "admin!: 'list_display' e 'list_exclude' sono mutuamente esclusivi"
},
"TemplateMessage": {
"debug_info_title": "Informazioni di debug",
"debug_field_title": "Titolo",
"debug_field_count": "Numero di campi",
"debug_error_count": "Errori",
"debug_main_message": "Messaggio principale",
"debug_root_cause": "Causa principale",
"debug_details": "Dettagli aggiuntivi",
"debug_request_info": "Informazioni sulla richiesta",
"debug_http_method": "Metodo HTTP",
"debug_path": "Percorso",
"debug_query_params": "Parametri di query",
"debug_http_headers": "Intestazioni HTTP",
"debug_template_info": "Informazioni sul template",
"debug_template_name": "Nome del template",
"debug_error_line": "Riga dell'errore",
"debug_template_source": "Codice sorgente del template",
"debug_available_templates": "Template disponibili",
"debug_stack_trace_title": "Traccia errore dettagliata",
"debug_stack_trace_tip": "L'errore più in alto (livello 0) è generalmente la causa principale. Gli errori successivi mostrano come l'errore si è propagato nel codice.",
"debug_environment": "Ambiente",
"debug_debug_mode": "Modalità debug",
"debug_enabled": "Abilitato",
"debug_disabled": "Disabilitato",
"debug_rust_version": "Versione Rust",
"debug_app_version": "Versione App",
"debug_status_code": "Codice di stato",
"debug_header_name": "Nome",
"debug_header_value": "Valore"
},
"admin": {
"group": "Gruppo",
"groups": "Gruppi",
"resource": "Risorsa",
"resources": "Risorse",
"can_create": "Crea",
"can_read": "Leggere",
"can_update": "Modificare",
"can_delete": "Eliminare",
"can_update_own": "Modificare",
"can_delete_own": "Eliminare",
"name": "Nome",
"username": "Nome utente",
"email": "Email",
"staff": "Staff",
"superuser": "Superutente",
"active": "Attivo",
"user": {
"username_too_short": "Il nome utente è troppo corto (min 3 car.)",
"invalid_email": "Formato dell'indirizzo email non valido"
},
"login": {
"title": "Accesso",
"subtitle": "Accedi per accedere al pannello di amministrazione",
"label_username": "Nome utente",
"label_password": "Password",
"btn_submit": "Accedi",
"error_session": "Errore durante l'apertura della sessione.",
"error_credentials": "Credenziali errate o diritti insufficienti.",
"error_locked": "Troppi tentativi. Account temporaneamente bloccato. Riprova tra {} secondi."
},
"logout": {
"success": "Disconnessione riuscita."
},
"access": {
"no_auth_handler": "Nessun gestore di autenticazione configurato. Chiama .auth(MyAuth) su AdminConfig.",
"insufficient_rights": "Diritti insufficienti per accedere all'amministrazione"
},
"dashboard": {
"title": "Dashboard",
"subtitle": "Panoramica dell'applicazione",
"card_resources": "Risorse",
"th_resource": "Risorsa",
"th_key": "Chiave",
"th_permissions": "Permessi",
"th_actions": "Azioni",
"btn_list": "Elenco",
"btn_create": "Crea",
"empty_title": "Nessuna risorsa registrata",
"empty_desc": "Dichiara le tue risorse in src/admin.rs con la macro admin!{{}} poi esegui runique start"
},
"list": {
"breadcrumb_admin": "Amministrazione",
"entries_count_one": "voce",
"entries_count_many": "voci",
"btn_create": "Crea",
"th_id": "id",
"th_actions": "Azioni",
"bool_true": "Sì",
"bool_false": "No",
"btn_detail": "Dettaglio",
"btn_edit": "Modifica",
"btn_delete": "Elimina",
"confirm_delete": "Eliminare davvero?",
"empty_title": "Nessuna voce",
"empty_desc": "Inizia creando un elemento.",
"btn_create_first": "Crea il primo",
"search_placeholder": "Cerca..."
},
"create": {
"title": "Crea",
"breadcrumb": "Crea",
"card_info": "Informazioni",
"no_fields": "Nessun campo disponibile al momento.",
"btn_cancel": "Annulla",
"btn_submit": "Crea",
"success": "Voce creata con successo!"
},
"edit": {
"title": "Modifica",
"breadcrumb": "Modifica",
"card_info": "Informazioni",
"no_fields": "Nessun campo disponibile al momento.",
"btn_cancel": "Annulla",
"btn_submit": "Salva",
"success": "Voce aggiornata con successo!"
},
"detail": {
"title": "Dettaglio",
"breadcrumb": "Dettaglio",
"entry_label": "Voce",
"btn_list": "← Elenco",
"btn_edit": "Modifica",
"btn_delete": "Elimina",
"confirm_delete": "Eliminare questa voce?"
},
"reset_password": {
"btn": "Reimposta la password",
"success_email": "Reset link sent to {}.",
"success_link": "Reset link (mailer not configured): {}",
"error_no_email": "No email field found for this user.",
"error_send": "Error sending email: {}",
"email_subject": "Reimposta la tua password",
"email_title": "Reimpostazione password",
"email_greeting": "Salve,",
"email_body": "Clicca il link qui sotto per reimpostare la tua password (valido 1 ora):",
"email_btn": "Reimposta la mia password",
"email_ignore": "Se non hai richiesto questa reimpostazione, ignora questo messaggio."
},
"user_created": {
"email_subject": "Benvenuto — imposta la tua password",
"email_sent": "Email di benvenuto inviata a {}.",
"email_greeting": "Benvenuto,",
"email_body": "È stato creato un account per te. Clicca il link per impostare la tua password:",
"email_btn": "Imposta la mia password",
"email_validity": "Questo link è valido 1 ora. Se non ti aspettavi questo messaggio, ignoralo."
},
"delete": {
"title": "Elimina",
"breadcrumb": "Elimina",
"heading": "Conferma eliminazione",
"btn_cancel": "← Annulla",
"btn_confirm": "Sì, elimina definitivamente",
"success": "Voce eliminata con successo!",
"warning": {
"title": "Attenzione!",
"desc": "Stai per eliminare la voce",
"of": "dalla risorsa",
"irreversible": "Questa azione è irreversibile."
},
"not_found": "Risorsa non trovata."
},
"bulk": {
"no_selection": "Nessun elemento selezionato.",
"no_field_selected": "Nessun campo modificato.",
"delete_success": "elemento/i eliminato/i.",
"update_success": "elemento/i aggiornato/i."
},
"base": {
"title": "Amministrazione",
"breadcrumb": "Admin",
"toggle": "Comprimi menu",
"logout_title": "Disconnessione"
},
"superuser_wizard": {
"title": "=== Crea superutente ===",
"algo_prompt": "[1/5] Algoritmo di hash",
"algo_argon2": "Argon2 (consigliato)",
"algo_bcrypt": "Bcrypt",
"algo_scrypt": "Scrypt",
"algo_custom": "Provider personalizzato",
"provider_path": "Percorso provider",
"invalid_path": "Percorso non valido.",
"username_prompt": "[2/5] Nome utente",
"username_empty": "Il nome utente non può essere vuoto.",
"username_taken": "Esiste già un utente con questo nome.",
"email_prompt": "[3/5] Email",
"email_invalid": "Email non valida.",
"email_taken": "Esiste già un utente con questa email.",
"password_prompt": "[4/5] Password",
"password_too_short": "La password deve contenere almeno 10 caratteri.",
"confirm_prompt": "[5/5] Conferma password",
"password_mismatch": "Le password non corrispondono. Riprovare.",
"review_algo": " Algoritmo : {}",
"review_username": " Utente : {}",
"review_email": " Email : {}",
"review_password": " Password : ••••••••",
"review_action": "Azione",
"confirm_create": "Conferma e crea",
"change_algo": "Cambia algoritmo",
"modify_password": "Modifica password",
"success": "✓ Superutente creato con successo!",
"id_line": " ID : {}",
"username_line": " Utente : {}",
"email_line": " Email : {}"
},
"builtin": {
"invalid_id": "Identificativo non valido.",
"droit_resource_required": "Seleziona almeno una risorsa.",
"droit_exists": "Il diritto \"{}\" esiste già.",
"groupe_exists": "Esiste già un gruppo chiamato \"{}\".",
"user_username_exists": "Il nome utente \"{}\" è già in uso.",
"user_email_exists": "L'indirizzo e-mail \"{}\" è già registrato."
}
},
"makemigrations": {
"scanning": "Scansione delle entità in '{}'...",
"found_schema": "-> Schema trovato: {}",
"found_extend": "-> Estensione tabella framework trovata: {}",
"no_schema": "Nessuna funzione schema() trovata in '{}'.",
"schema_count": "{} schema/i trovato/i.",
"updated_lib": "Aggiornato {}",
"no_changes": "Nessuna modifica rilevata. Lo schema è aggiornato.",
"destructive_detected": "Modifiche distruttive rilevate:",
"destructive_require_force": "Usa --force per applicare queste modifiche distruttive.",
"generated": "Generato: {}",
"snapshot_updated": "Snapshot aggiornato: {}",
"seaorm_alter": "Migrazione ALTER SeaORM generata: {}",
"batch_up": "Batch up generato: {}",
"batch_down": "Batch down generato: {}",
"apply_hint": "Eseguire 'sea-orm-cli migrate up' per applicare.",
"extend_unknown_table": "extend!{{}} : \"{}\" non è una tabella framework conosciuta. Tabelle consentite: {}. Per estendere una tabella applicativa, modificare direttamente il suo model!{{}}.",
"extend_invalid_syntax": "extend!{{}} : sintassi non valida. Atteso: table: \"nome_tabella\", fields: {{ ... }}",
"admin_positioned": "AdminTableMigration posizionata dopo la migrazione di '{}'",
"files_ready": "{} file pronti per la migrazione."
},
"migrate": {
"applying": "Applicazione migrazioni da '{}'...",
"run_hint": "Eseguire: sea-orm-cli migrate up",
"complete": "Rollback completato.",
"complete_up": "Migrazione completata.",
"available_for": "File di rollback disponibili per '{}':",
"rolling_back_batch": "Rollback del batch: {}",
"done": "Completato: {}",
"rolling_back": "Rollback: {}",
"no_applied_dir": "Nessuna directory applied/ trovata.",
"by_time_header": "by_time (batch completi):",
"none_available": "Nessun file di rollback disponibile.",
"usage": "Utilizzo:",
"usage_files": "runique migration down --files <table/timestamp> [<table/timestamp> ...]",
"usage_batch": "runique migration down --batch <timestamp>",
"no_down": "Nessuna istruzione down trovata.",
"executing": "Esecuzione: {}"
},
"reset": {
"forgot_title": "Password dimenticata",
"reset_title": "Nuova password",
"success_title": "Password reimpostata",
"email_label": "Indirizzo email",
"new_password_label": "Nuova password",
"confirm_label": "Conferma password",
"email_mismatch": "L'indirizzo email non corrisponde al link.",
"invalid_link": "Link non valido.",
"invalid_or_expired": "Il link di reimpostazione non è valido o è scaduto.",
"password_min_length": "La password deve contenere almeno {} caratteri.",
"password_mismatch": "Le password non coincidono.",
"check_inbox": "Se questo indirizzo è associato a un account, riceverà un'email di reimpostazione.",
"email_subject": "Reimpostazione password",
"email_body": "<p>Ciao {},</p><p>Clicca sul link seguente per reimpostare la password (valido per 1 ora):</p><p><a href=\"{}\">{}</a></p>"
},
"permission": {
"col.id": "ID",
"col.can_create": "Creare",
"col.can_delete": "Eliminare",
"col.can_delete_own": "Eliminare (proprio)",
"col.can_read": "Leggere",
"col.can_update": "Modificare",
"col.can_update_own": "Modificare (proprio)",
"col.groupes": "Gruppi",
"col.resource_key": "Risorsa",
"col.actions": "Azioni"
}
}