feat(cms): improve catalog, editorial recovery and operations
CI / check (push) Successful in 52s
CI / deploy (push) Successful in 2m10s
CI / publish-container (push) Failing after 1m18s

This commit is contained in:
Simo committed 2026-09-09 19:36:15 +02:00
1 parent 2fead134e6
commit c389c3893d
122 files changed
+8137 -703

No files matched your search

+154 -6
View File
@@ -1149,12 +1149,46 @@
"imagePreview": "Anteprima immagine della news",
"previewTitle": "Anteprima news",
"previewDescription": "Anteprima del contenuto. La pagina pubblicata usa il tema del sito.",
"previewFrame": "Anteprima contenuto della news"
"previewFrame": "Anteprima contenuto della news",
"autosaveLoading": "Caricamento delle bozze salvate…",
"autosaveReady": "Salvataggio automatico della bozza privata attivo.",
"autosaveSaving": "Salvataggio della bozza privata…",
"autosaveSaved": "Bozza privata salvata. Per applicare le modifiche alla pubblicazione premi Salva.",
"autosaveFailed": "Recupero della bozza non disponibile. Mantieni aperta la pagina e usa Salva; ricarica per riprovare il recupero.",
"autosaveConflict": "Un’altra scheda ha modificato questa bozza. Salvataggio automatico sospeso: ricarica per esaminare la versione più recente.",
"recoveryFound": "È disponibile una bozza privata non completata. Recuperala o eliminala per attivare il salvataggio automatico.",
"recoverDraft": "Recupera bozza",
"discardDraft": "Elimina bozza salvata",
"confirmRecovery": "Sostituire il contenuto nell’editor con la bozza recuperata? Le modifiche non saranno pubblicate finché non salvi.",
"confirmDiscardDraft": "Eliminare definitivamente la bozza di recupero salvata? Il contenuto corrente dell’editor resterà disponibile.",
"revisionHistory": "Versioni salvate precedenti (ultime 20)",
"restoreRevision": "Ripristina nell’editor",
"confirmRevision": "Sostituire il contenuto corrente con questa versione precedente come bozza? Controllala e scegli lo stato di pubblicazione prima di salvare.",
"editConflict": "Questo articolo è stato modificato dopo la tua apertura. Le tue modifiche non sono state applicate. Copia il lavoro, ricarica l’articolo e integra le modifiche prima di salvare di nuovo.",
"retryRecovery": "Ricarica il recupero senza modificare il modulo"
},
"articlesShown": "Articoli mostrati",
"latest": "Ultimo articolo",
"mostRecentPost": "Pubblicazione più recente",
"recentArticles": "Articoli recenti"
"recentArticles": "Articoli recenti",
"listActionError": "Non è stato possibile completare l’operazione sulla news.",
"listStatus": "Stato di pubblicazione",
"listStatus_all": "Tutte le news",
"listStatus_draft": "Bozza",
"listStatus_published": "Pubblicata",
"listStatus_scheduled": "Programmata",
"listSearch": "Cerca nel titolo o nel sommario",
"listApply": "Applica",
"listLoading": "Caricamento…",
"listReset": "Reimposta filtri",
"listUnavailable": "Le news non sono al momento disponibili. Riprova.",
"listRetry": "Riprova",
"listTotal": "{count, plural, one {# news trovata} other {# news trovate}}",
"listNoMatches": "Nessuna news corrisponde ai filtri. Modifica la ricerca o reimposta i filtri.",
"listPagination": "Pagine delle news",
"listPrevious": "Precedente",
"listNext": "Successiva",
"listPage": "Pagina {page} di {total}"
},
"events": {
"newEvent": "+ Nuovo evento",
@@ -2904,7 +2938,19 @@
"colDate": "Data",
"searchPlaceholder": "Cerca per azione o destinazione…",
"changesCount": "{count} modifiche",
"notAvailable": "N/D"
"notAvailable": "N/D",
"filtersTitle": "Filtra il registro attività",
"filterActor": "Autore (nome esatto o ID)",
"filterAction": "Azione esatta",
"filterFrom": "Dal giorno (UTC)",
"filterTo": "Fino al giorno (UTC)",
"filtersHint": "Le date includono l’intera giornata in UTC. Azioni e nomi utente devono corrispondere esattamente. Le attività più recenti compaiono per prime.",
"applyFilters": "Applica filtri",
"resetFilters": "Reimposta filtri",
"invalidDetails": "I dettagli di questa vecchia registrazione non sono visualizzabili.",
"beforeValue": "Prima",
"afterValue": "Dopo",
"exportHint": "Il CSV esporta la pagina filtrata corrente, fino a 100 registrazioni."
},
"chat": {
"colMessage": "Messaggio",
@@ -3733,7 +3779,19 @@
"counts": "{count} occorrenze · {groups} gruppi.",
"retention": "Limite di archiviazione: 10 MB al giorno. Gli eventi eccedenti restano nei log server, dove disponibili.",
"status": "Stato",
"allStatuses": "Tutti gli stati"
"allStatuses": "Tutti gli stati",
"firstSeen": "Prima occorrenza nei dati conservati",
"lastSeen": "Ultima occorrenza",
"affectedUsers": "Utenti identificati distinti",
"unidentifiedEvents": "Eventi senza ID utente verificato",
"metricsScope": "I conteggi riguardano solo i dati conservati caricati qui. Gli utenti sono conteggiati solo tramite ID numerici del server; le segnalazioni anonime e del browser non vengono attribuite.",
"assignedStaff": "Assegnato allo staff #{id}",
"unassigned": "Non assegnato",
"assignSelf": "Assegna a me",
"clearAssignment": "Rimuovi assegnazione",
"openOperation": "Apri area collegata",
"releaseOccurrences": "Occorrenze per release",
"releaseScope": "Queste release compaiono nei dati conservati. La prima occorrenza disponibile non dimostra quale release abbia introdotto l’errore."
},
"importHistory": {
"summary": "Storico importazioni · {count} attive",
@@ -3748,7 +3806,56 @@
"failed": "Non riuscito",
"pending": "In attesa",
"retryFailed": "Riprova solo i furni falliti",
"retryUnfinished": "Riprendi i furni non completati"
"retryUnfinished": "Riprendi i furni non completati",
"cancelled": "Annullato",
"cancelFailed": "Impossibile richiedere l’annullamento. Riprova o aggiorna la cronologia.",
"cancelRequested": "Annullamento richiesto. L’elemento corrente verrà completato; quelli rimanenti non verranno avviati.",
"cancelHint": "L’annullamento conserva gli elementi completati e lascia terminare quello corrente.",
"cancelRemaining": "Annulla elementi rimanenti",
"historyLimit": "Sono mostrati fino a 30 processi aggiornati più di recente.",
"refreshHistory": "Aggiorna cronologia",
"showMoreItems": "Mostra altri 50 elementi",
"uncertainOutcome": "Un elemento interrotto potrebbe avere già modificato i dati locali. È escluso dai tentativi successivi.",
"reviewLocalData": "Controlla i dati locali"
},
"installation": {
"title": "Diagnostica installazione",
"hint": "Controlli in sola lettura di questa installazione. Non verificato indica evidenza insufficiente; una configurazione presente non prova la raggiungibilità esterna.",
"checked": "Controllato alle {time} · verifiche completate in {ms} ms",
"recheck": "Ricontrolla",
"ok": "Controllo superato",
"failed": "Da verificare",
"unknown": "Non verificato",
"missing": "Non configurato",
"release": "Versione in esecuzione",
"database": "Database",
"redis": "Redis",
"emulator": "Emulatore",
"storage": "Archiviazione scrivibile",
"migrations": "Migrazioni database",
"worker": "Worker in background",
"renderer": "Configurazione renderer",
"registry": "Registro delle immagini",
"releaseHint": "Identificativo completo della build in esecuzione. Permette di confrontare installazioni e scegliere una versione precedente per il ripristino.",
"databaseHint": "Connessione e tempo misurato della query SELECT 1.",
"redisHint": "Opzionale per alcune pagine; necessario per le importazioni in coda.",
"emulatorHint": "Risposta al ping dell’emulatore configurato.",
"storageHint": "Permessi di lettura e scrittura nelle cartelle storage, risorse Nitro e SWF.",
"migrationsHint": "Numero di migrazioni incluse nella versione e assenti dalla cronologia del database. Applicale attraverso il processo di rilascio.",
"workerHint": "Ultimo segnale del worker in Redis. Oltre due minuti richiede verifica; nessun segnale non permette di stabilire se il worker sia attivo.",
"rendererHint": "Il client usa l’indirizzo configurato oppure /nitro-client/ come percorso predefinito. Apri separatamente il gioco per controllare rendering e risorse.",
"registryHint": "Le credenziali del registro sono nella CI, non nel CMS. Controlla il lavoro di pubblicazione e il tag immutabile della versione in Gitea."
},
"operations": {
"title": "Da controllare",
"hint": "Attività accessibili: importazioni negli ultimi 30 lavori personali; errori in un massimo di 1.000 eventi conservati. Attività precedenti possono restare fuori da questi conteggi.",
"empty": "Nessuna attività in sospeso trovata nei dati controllati.",
"errors": "Gruppi di errori CMS aperti",
"imports": "Le tue importazioni da verificare",
"tickets": "Ticket di assistenza aperti",
"publications": "Bozze delle news",
"unavailable": "{source}: dati temporaneamente non disponibili.",
"installation": "Diagnostica installazione"
}
},
"radioRequests": {
@@ -4033,7 +4140,17 @@
"bad_config": "Il premio non è configurato correttamente. Contatta lo staff.",
"ratelimit": "Troppi tentativi. Attendi un momento e riprova.",
"error": "Non è stato possibile riscattare il premio. Riprova."
}
},
"messagesCaughtUp": "Nessun messaggio da leggere",
"messagesUnavailable": "Apri la posta per controllare",
"eventTitle": "In programma",
"allEvents": "Tutti gli eventi",
"eventsUnavailable": "Il calendario non è al momento disponibile. Apri tutti gli eventi per riprovare.",
"eventOngoing": "In corso",
"eventUpcoming": "Prossimo evento",
"eventDetails": "Scopri l’evento",
"noUpcomingEvents": "Non sono ancora stati annunciati nuovi eventi.",
"roomsUnavailable": "Le stanze non sono al momento disponibili. Apri la community per riprovare."
}
},
"toolbar": {
@@ -4049,5 +4166,36 @@
"fullscreenExit": "Esci dalla schermo intero",
"show": "Mostra barra",
"emulatorUnknown": "Stato dell'emulatore sconosciuto"
},
"admin": {
"studio": {
"completeness": {
"title": "Completezza e prossimi passi",
"parts": {
"sql": "Elemento SQL",
"catalog": "Offerta catalogo",
"furnidata": "Furnidata",
"icon": "Icona locale",
"nitro": "File Nitro"
},
"statuses": {
"present": "Presente",
"missing": "Mancante",
"unknown": "Non verificato",
"conflict": "Da controllare"
},
"actions": {
"sql": "Importa o ripara questo furni per creare il record mancante.",
"catalog": "Importa o ripara questo furni per aggiungere un’offerta con la categoria e il prezzo automatici.",
"furnidata": "Importa o ripara questo furni per aggiungere i dati mancanti.",
"icon": "Importa o ripara questo furni per recuperare l’icona locale mancante.",
"nitro": "Importa o ripara questo furni per recuperare il file. Per un elemento esistente puoi anche usare Rigenera .nitro.",
"recheck": "Ricontrolla lo stato locale prima della riparazione. Se il problema persiste, verifica l’accesso ai file locali.",
"audit": "Controlla i duplicati e la corrispondenza degli ID sprite e dei tipi in Audit catalogo prima della riparazione."
},
"openAudit": "Apri Audit catalogo per risolvere i conflitti",
"excludedConflicts": "{count, plural, one {# elemento richiede un controllo ed è escluso da questa importazione.} other {# elementi richiedono un controllo e sono esclusi da questa importazione.}}"
}
}
}
}