This is an automated email from the ASF dual-hosted git repository.

bbovenzi pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new cf5017be3c1 UI: Complete the Italian translation (#76411)
cf5017be3c1 is described below

commit cf5017be3c107b4616e78178cf2818d682bb0ae9
Author: Aldo <[email protected]>
AuthorDate: Wed Nov 4 15:07:42 2026 +0100

    UI: Complete the Italian translation (#76411)
    
    Italian coverage had fallen to about 51%, so screens that landed after the
    last translation pass showed English to Italian users.
    
    Exact multiples of a million select the _many plural, and that form needs
    "di" before the noun. The locale guide records the rule so a later
    translation pass does not copy _other back over it.
    
    Co-authored-by: Cursor <[email protected]>
---
 .agents/skills/airflow-translations/locales/it.md  |  65 +++-
 .../airflow/ui/public/i18n/locales/it/admin.json   |  55 +++-
 .../airflow/ui/public/i18n/locales/it/assets.json  |  46 ++-
 .../airflow/ui/public/i18n/locales/it/browse.json  |  86 ++++-
 .../airflow/ui/public/i18n/locales/it/common.json  | 352 +++++++++++++++++++--
 .../ui/public/i18n/locales/it/components.json      | 115 ++++++-
 .../src/airflow/ui/public/i18n/locales/it/dag.json | 267 +++++++++++++++-
 .../airflow/ui/public/i18n/locales/it/dags.json    |  69 +++-
 .../ui/public/i18n/locales/it/dashboard.json       |  47 ++-
 .../airflow/ui/public/i18n/locales/it/hitl.json    |  18 +-
 10 files changed, 1052 insertions(+), 68 deletions(-)

diff --git a/.agents/skills/airflow-translations/locales/it.md 
b/.agents/skills/airflow-translations/locales/it.md
index 4fb8a351e6b..0533bc9cbac 100644
--- a/.agents/skills/airflow-translations/locales/it.md
+++ b/.agents/skills/airflow-translations/locales/it.md
@@ -3,7 +3,64 @@
 
 # Italian (`it`) translation guidelines
 
-No locale-specific guidance has been authored yet for Italian. Until this file
-is filled in, follow the global rules in the parent
-[airflow-translations SKILL.md](../SKILL.md). Contributions to this guide are
-welcome.
+Follow the [global translation rules](../SKILL.md) and the existing strings in
+`airflow-core/src/airflow/ui/public/i18n/locales/it/`. Use standard Italian
+suitable for a technical interface.
+
+## Terminology
+
+Keep `Airflow`, `Dag`/`Dags`, `Task`/`Tasks`, `Asset`/`Assets`, `Pool`/`Pools`,
+`Plugin`/`Plugins`, `Provider`/`Providers`, `Backfill`, `Job`/`Jobs`, `Bundle`,
+`Callback`, `XCom`, `Trigger`, `Heartbeat`, `Slot`, `Upstream`, `Downstream`,
+`Log`, `JSON`, `ID`, `PID`, `UTC` and `Schema` in English.
+
+Use the wording already in the locale: `Run del Dag`, `Connessione`,
+`Variabile`, `Programmazione`, `Proprietario`, `Etichette`, `Pulisci` for
+clearing a task instance, and `Cercare` in search placeholders. `Scadenza` is
+the word for a deadline. A loop is `Ciclo`; one pass of it is `Iterazione`.
+
+Do not copy an awkward existing string into a new key. `Mostrando`, for
+example, is not Italian.
+
+## Plurals
+
+Italian needs `_zero`, `_one`, `_many` and `_other`
+(`PLURAL_SUFFIXES["it"]`). A key that omits `_many` falls through to the
+English `fallbackLng` rather than to the Italian `_other`.
+
+`_many` resolves only at exact multiples of a million (1.000.000, 2.000.000,
+…). 1.500.000 and 1.000.001 resolve to `_other`. `_zero` is the explicit
+zero-count message (`Nessun` / `Nessuna` / `Nessuno`).
+
+At those million counts a numeral takes **`di`** before the noun it quantifies
+("un milione **di** task"), so a `_many` form that merely repeats `_other`
+reads ungrammatically when the string interpolates a count directly in front
+of a noun:
+
+```json
+"change_one": "{{count, number}} modifica",
+"change_many": "{{count, number}} di modifiche",
+"change_other": "{{count, number}} modifiche",
+"change_zero": "Nessuna modifica"
+```
+
+When the count stands in brackets and does not quantify the following noun,
+`di` does not apply and `_many` matches `_other`:
+
+```json
+"requiredActionCount_many": "Azioni richieste ({{count, number}})"
+```
+
+`altri` is still a quantified word, so `teams.more_many` is
+`e {{count, number}} di altri`. A bare noun with no numeral in the string is
+unaffected:
+
+```json
+"task_one": "Task",
+"task_many": "Tasks",
+"task_other": "Tasks",
+"task_zero": "Nessun task"
+```
+
+The UI prints the count as digits (`1.000.000`), not as the words "un milione".
+Keep `{{count, number}}` anyway: that is the form i18next selects `_many` for.
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/it/admin.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/it/admin.json
index 12cb7ada51d..315616e3351 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/it/admin.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/it/admin.json
@@ -3,12 +3,17 @@
     "description": "Descrizione",
     "key": "Chiave",
     "name": "Nome",
+    "team": "Team",
     "value": "Valore"
   },
   "config": {
     "columns": {
       "section": "Sezione"
-    }
+    },
+    "config_many": "Configurazioni",
+    "config_one": "Configurazione",
+    "config_other": "Configurazioni",
+    "config_zero": "Nessuna configurazione"
   },
   "connections": {
     "add": "Aggiungi Connessione",
@@ -23,7 +28,7 @@
     "connection_other": "Connessioni",
     "connection_zero": "Nessuna connessione",
     "delete": {
-      "deleteConnection_many": "Elimina {{count, number}} connessioni",
+      "deleteConnection_many": "Elimina {{count, number}} di connessioni",
       "deleteConnection_one": "Elimina 1 connessione",
       "deleteConnection_other": "Elimina {{count, number}} connessioni",
       "deleteConnection_zero": "Nessuna connessione da eliminare",
@@ -33,13 +38,16 @@
       "firstConfirmMessage_zero": "Nessuna connessione da eliminare:",
       "title": "Elimina Connessione"
     },
+    "duplicate": "Duplica $t(connections.connection_one)",
     "edit": "Modifica Connessione",
     "form": {
       "connectionIdRequired": "L'ID della connessione è obbligatorio",
       "connectionIdRequirement": "L'ID della connessione non può contenere 
solo spazi",
+      "connectionTypeFields": "Campi di {{connectionType}}",
       "connectionTypeRequired": "Il tipo di connessione è obbligatorio",
       "extraFieldsJson": "Campi Extra JSON",
       "helperText": "Il tipo di connessione è mancante? Assicurati di aver 
installato il pacchetto corrispondente di Airflow Providers.",
+      "helperTextForDuplicatedRedactedFields": "I campi oscurati ('***') non 
vengono copiati. Compilali per la nuova connessione.",
       "helperTextForRedactedFields": "I campi redatti ('***') rimarranno 
invariati se non modificati.",
       "selectConnectionType": "Seleziona Tipo di Connessione",
       "standardFields": "Campi Standard"
@@ -53,6 +61,12 @@
     "searchPlaceholder": "Cercare Connessioni",
     "test": "Test Connessione",
     "testDisabled": "La funzione di test della connessione è disabilitata. Per 
favore contatta un amministratore per abilitarla.",
+    "testError": {
+      "title": "Test di $t(connections.connection_one) fallito"
+    },
+    "testSuccess": {
+      "title": "Test di $t(connections.connection_one) riuscito"
+    },
     "typeMeta": {
       "error": "Impossibile recuperare il tipo di connessione",
       "standardFields": {
@@ -78,6 +92,27 @@
   "formActions": {
     "save": "Salva"
   },
+  "jobs": {
+    "columns": {
+      "executorClass": "Classe dell'Executor",
+      "hostname": "Nome host",
+      "id": "ID",
+      "jobType": "Tipo di Job",
+      "latestHeartbeat": "Ultimo Heartbeat",
+      "unixname": "Nome Unix"
+    },
+    "filters": {
+      "allStates": "Tutti gli stati",
+      "allTypes": "Tutti i tipi",
+      "dagProcessorJob": "DagProcessorJob",
+      "schedulerJob": "SchedulerJob",
+      "triggererJob": "TriggererJob"
+    },
+    "job_many": "Jobs",
+    "job_one": "Job",
+    "job_other": "Jobs",
+    "job_zero": "Nessun Job"
+  },
   "plugins": {
     "columns": {
       "source": "Fonte"
@@ -86,6 +121,10 @@
     "importError_one": "Errore di Importazione Plugin",
     "importError_other": "Errori di Importazione Plugin",
     "importError_zero": "Nessun errore di importazione plugin",
+    "plugin_many": "Plugins",
+    "plugin_one": "Plugin",
+    "plugin_other": "Plugins",
+    "plugin_zero": "Nessun Plugin",
     "searchPlaceholder": "Cercare per file"
   },
   "pools": {
@@ -102,7 +141,8 @@
       "includeDeferred": "Includi Deferiti",
       "nameMaxLength": "Il nome può contenere un massimo di 256 caratteri",
       "nameRequired": "Il nome è obbligatorio",
-      "slots": "Slot"
+      "slots": "Slot",
+      "slotsHelperText": "Usa -1 per slot illimitati."
     },
     "noPoolsFound": "Nessun pool trovato",
     "pool_many": "Pools",
@@ -120,7 +160,11 @@
     "columns": {
       "packageName": "Nome del Pacchetto",
       "version": "Versione"
-    }
+    },
+    "provider_many": "Providers",
+    "provider_one": "Provider",
+    "provider_other": "Providers",
+    "provider_zero": "Nessun Provider"
   },
   "variables": {
     "add": "Aggiungi Variabile",
@@ -128,7 +172,7 @@
       "isEncrypted": "È Crittografata"
     },
     "delete": {
-      "deleteVariable_many": "Elimina {{count, number}} Variabili",
+      "deleteVariable_many": "Elimina {{count, number}} di Variabili",
       "deleteVariable_one": "Elimina 1 Variabile",
       "deleteVariable_other": "Elimina {{count, number}} Variabili",
       "deleteVariable_zero": "Nessuna variabile da eliminare",
@@ -164,6 +208,7 @@
           "title": "Salta"
         }
       },
+      "parsingFile": "Analisi del file...",
       "title": "Importa Variabili",
       "upload": "Carica un File JSON",
       "uploadPlaceholder": "Carica un file JSON contenente le variabili (es. 
{\"key\": \"value\", ...})"
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/it/assets.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/it/assets.json
index bb94a3cf908..16418afb7f6 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/it/assets.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/it/assets.json
@@ -1,5 +1,36 @@
 {
+  "additional_data": "Dati aggiuntivi",
+  "alias_many": "Alias",
+  "alias_one": "Alias",
+  "alias_other": "Alias",
+  "alias_zero": "Nessun alias",
+  "aliases": "Alias",
+  "asset_many": "Assets",
+  "asset_one": "Asset",
+  "asset_other": "Assets",
+  "asset_zero": "Nessun asset",
+  "assetStateStore": {
+    "add": "Aggiungi store di stato dell'Asset",
+    "clearAll": {
+      "resource": "tutto lo store di stato degli Asset",
+      "title": "Cancella tutto lo store di stato degli Asset",
+      "warning": "Lo store di stato degli Asset verrà azzerato. I Task che lo 
usano per coordinare il lavoro perderanno la memoria persistente."
+    },
+    "delete": "Elimina lo store di stato dell'Asset",
+    "deleteWarning": "L'Asset perderà questa voce dello store di stato 
persistente.",
+    "edit": "Modifica lo store di stato dell'Asset",
+    "emptyState": "Lo store di stato dell'Asset memorizza valori legati 
all'identità di un Asset, condivisi tra tutti i run del Dag. I worker possono 
scrivere nello store di stato dell'Asset tramite il Task SDK.",
+    "entry_many": "Voci",
+    "entry_one": "Voce",
+    "entry_other": "Voci",
+    "entry_zero": "Nessuna voce",
+    "lastUpdatedBy": "Ultimo aggiornamento di",
+    "lastUpdatedByApi": "API",
+    "lastUpdatedByWatcher": "Watcher",
+    "title": "Store di stato dell'Asset"
+  },
   "consumingDags": "Dag Consumatori",
+  "consumingTasks": "Task che consumano",
   "createEvent": {
     "button": "Creare un Evento",
     "manual": {
@@ -21,10 +52,23 @@
     },
     "title": "Creare Evento Asset per {{name}}"
   },
+  "events": "Eventi",
+  "filters": {
+    "groupPlaceholder": "Cercare un gruppo",
+    "hasEvents": "Ha eventi",
+    "lastEventDateRange": "Data dell'ultimo evento"
+  },
   "group": "Gruppo",
   "lastAssetEvent": "Ultimo Evento Asset",
   "name": "Nome",
   "producingTasks": "Task Produttori",
   "scheduledDags": "Dag Programmati",
-  "searchPlaceholder": "Cercare Assets"
+  "scheduling": "Programmazione",
+  "searchPlaceholder": "Cercare Assets",
+  "taskDependencies": "Dipendenze dei Task",
+  "watcher_many": "Watchers",
+  "watcher_one": "Watcher",
+  "watcher_other": "Watchers",
+  "watcher_zero": "Nessun Watcher",
+  "watchers": "Watchers"
 }
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/it/browse.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/it/browse.json
index a30e7bbb5c6..6a3ad5b9ff8 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/it/browse.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/it/browse.json
@@ -10,12 +10,96 @@
       "eventType": "Tipo di Evento"
     }
   },
+  "dagBundles": {
+    "active": "Attivo",
+    "columns": {
+      "active": "Attivo",
+      "importErrors": "Errori di importazione",
+      "lastRefreshed": "Ultimo aggiornamento",
+      "name": "Nome",
+      "version": "Versione"
+    },
+    "detail": {
+      "status": "Stato"
+    },
+    "files": {
+      "columns": {
+        "file": "File",
+        "lastParsed": "Ultima analisi",
+        "parseDuration": "Durata dell'analisi"
+      },
+      "file_many": "File",
+      "file_one": "File",
+      "file_other": "File",
+      "file_zero": "Nessun file",
+      "importErrorForbidden": "Non hai il permesso di leggere questo errore di 
importazione.",
+      "importErrorGone": "Questo errore di importazione non è più registrato. 
Probabilmente è stato corretto da una nuova analisi.",
+      "neverParsed": "Mai",
+      "showImportError_many": "Vedi {{count, number}} di errori",
+      "showImportError_one": "Vedi errore",
+      "showImportError_other": "Vedi {{count, number}} errori",
+      "showImportError_zero": "Nessun errore"
+    },
+    "inactive": "Inattivo",
+    "neverRefreshed": "Mai",
+    "notRefreshedYet": "Non ancora aggiornato",
+    "notVersioned": "Senza versione"
+  },
+  "deadlines": {
+    "columns": {
+      "alertName": "Nome dell'avviso",
+      "deadlineTime": "Ora della scadenza",
+      "status": "Stato"
+    },
+    "deadline_many": "Scadenze",
+    "deadline_one": "Scadenza",
+    "deadline_other": "Scadenze",
+    "deadline_zero": "Nessuna scadenza",
+    "filters": {
+      "status": "Stato",
+      "statusOptions": {
+        "all": "Tutte",
+        "missed": "Non rispettate",
+        "pending": "In sospeso"
+      }
+    },
+    "title": "Scadenze"
+  },
   "xcom": {
+    "add": {
+      "error": "Impossibile aggiungere l'XCom",
+      "errorTitle": "Errore",
+      "success": "XCom aggiunto",
+      "successTitle": "XCom aggiunto",
+      "title": "Aggiungi XCom"
+    },
     "columns": {
       "dag": "Dag",
       "key": "Chiave",
+      "timestamp": "Timestamp",
       "value": "Valore"
     },
-    "title": "XCom"
+    "delete": {
+      "error": "Impossibile eliminare l'XCom",
+      "errorTitle": "Errore",
+      "success": "XCom eliminato",
+      "successTitle": "XCom eliminato",
+      "title": "Elimina XCom",
+      "warning": "Eliminare questo XCom? L'azione non può essere annullata."
+    },
+    "edit": {
+      "error": "Impossibile aggiornare l'XCom",
+      "errorTitle": "Errore",
+      "success": "XCom aggiornato",
+      "successTitle": "XCom aggiornato",
+      "title": "Modifica XCom"
+    },
+    "entry_many": "Voci XCom",
+    "entry_one": "Voce XCom",
+    "entry_other": "Voci XCom",
+    "entry_zero": "Nessuna voce XCom",
+    "key": "Chiave",
+    "title": "XCom",
+    "value": "Valore"
   }
 }
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/it/common.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/it/common.json
index 50b5a20522e..d9053ac7e07 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/it/common.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/it/common.json
@@ -8,6 +8,7 @@
     "Variables": "Variabili"
   },
   "allOperators": "Tutti gli Operatori",
+  "allTeams": "Tutti i Team",
   "appearance": {
     "appearance": "Aspetto",
     "darkMode": "Modalità scura",
@@ -22,17 +23,25 @@
   "assetEvent_one": "Evento Asset",
   "assetEvent_other": "Eventi Asset",
   "assetEvent_zero": "Nessun evento asset",
+  "assetInactive": {
+    "tooltip": "L'Asset upstream è stato disattivato; lo scheduler sospende la 
valutazione delle partizioni finché non viene riattivato."
+  },
   "backfill_many": "Backfills",
   "backfill_one": "Backfill",
   "backfill_other": "Backfills",
   "backfill_zero": "Nessun backfill",
+  "breadcrumb": "Percorso di navigazione",
   "browse": {
     "auditLog": "Registro di Controllo (Logs)",
+    "dagBundles": "Dag Bundles",
+    "deadlines": "Scadenze",
+    "jobs": "Jobs",
     "requiredActions": "Azioni Richieste",
     "xcoms": "XComs"
   },
   "collapseAllExtra": "Collassa tutti i json extra",
   "collapseDetailsPanel": "Collassa i Dettagli",
+  "consumingAsset": "Asset che consuma",
   "createdAssetEvent_many": "Eventi Asset Creati",
   "createdAssetEvent_one": "Evento Asset Creato",
   "createdAssetEvent_other": "Eventi Asset Creati",
@@ -41,7 +50,13 @@
   "dag_one": "Dag",
   "dag_other": "Dags",
   "dag_zero": "Nessun Dag",
+  "dagBundle_many": "Dag Bundles",
+  "dagBundle_one": "Dag Bundle",
+  "dagBundle_other": "Dag Bundles",
+  "dagBundle_zero": "Nessun Dag Bundle",
   "dagDetails": {
+    "activeRuns": "Run attivi",
+    "bundleVersion": "Versione del Bundle",
     "catchup": "Catchup",
     "dagRunTimeout": "Timeout del Run del Dag",
     "defaultArgs": "Argomenti di Default",
@@ -61,7 +76,8 @@
     "owner": "Proprietario",
     "params": "Parametri",
     "schedule": "Programmazione",
-    "tags": "Etichette"
+    "tags": "Etichette",
+    "team": "Team"
   },
   "dagId": "ID del Dag",
   "dagRun": {
@@ -75,6 +91,9 @@
     },
     "expectedDuration": "Durata Prevista",
     "lastSchedulingDecision": "Ultima Decisione di Programmazione",
+    "mappedPartitionKey": "Chiave di partizione mappata",
+    "partitionDate": "Data della partizione",
+    "partitionKey": "Chiave di partizione",
     "queuedAt": "In Coda il",
     "runAfter": "Esegui dopo",
     "runType": "Tipo di Run",
@@ -87,8 +106,12 @@
   "dagRun_other": "Run del Dag",
   "dagRun_zero": "Nessun run del Dag",
   "dagRunId": "ID del Run del Dag",
-  "defaultToGraphView": "Default to vista grafica",
-  "defaultToGridView": "Default to vista griglia",
+  "dagRunState": "Stato del run del Dag",
+  "delete": "Elimina",
+  "diff": "Diff",
+  "diffCompareWith": "Confronta con",
+  "diffExit": "Esci dal diff",
+  "diffSelectVersionToCompare": "Seleziona la versione da confrontare",
   "direction": "Direzione",
   "docs": {
     "documentation": "Documentazione",
@@ -101,14 +124,27 @@
     "tooltip": "Premi {{hotkey}} per scaricare i log"
   },
   "duration": "Durata",
+  "edit": "Modifica",
   "endDate": "Data di Fine",
   "error": {
     "back": "Indietro",
     "defaultMessage": "Si è verificato un errore imprevisto",
     "home": "Home",
+    "invalidUrl": "Pagina non trovata. Controlla l'URL e riprova.",
     "notFound": "Pagina non trovata",
+    "reload": "Ricarica la pagina",
     "title": "Errore"
   },
+  "errors": {
+    "forbidden": {
+      "description": "Non hai il permesso di eseguire questa azione.",
+      "title": "Accesso negato"
+    }
+  },
+  "event_many": "Eventi",
+  "event_one": "Evento",
+  "event_other": "Eventi",
+  "event_zero": "Nessun evento",
   "expand": {
     "collapse": "Collassa",
     "expand": "Espandi",
@@ -120,62 +156,129 @@
     "all": "Tutti",
     "and": "E",
     "any": "Qualunque",
+    "hiddenAsset": "Asset nascosto",
     "or": "O"
   },
   "filter": "Filtro",
   "filters": {
+    "addFilter": "Aggiungi filtro",
+    "allIterations": "Tutte",
+    "completedAt": "Completato il",
+    "date": "Data",
     "durationFrom": "Durata da",
     "durationTo": "Durata a",
+    "endTime": "Ora di fine",
+    "iteration": "Iterazione",
     "logicalDateFrom": "Data Logica Da",
     "logicalDateTo": "Data Logica A",
+    "loop": "Ciclo",
+    "loopAllIterations": "{{loop}} tutte",
+    "loopIteration": "{{loop}} {{index}}",
+    "loopPlaceholder": "Seleziona un ciclo",
+    "maxActiveRunsFrom": "Run attivi massimi da",
+    "maxActiveRunsTo": "Run attivi massimi a",
+    "removeFilter": "Rimuovi filtro",
     "runAfterFrom": "Esegui Dopo Da",
-    "runAfterTo": "Esegui Dopo A"
+    "runAfterTo": "Esegui Dopo A",
+    "searchAsset": "Cercare Asset",
+    "selectDateRange": "Seleziona un intervallo di date",
+    "selectDateTime": "Seleziona data e ora",
+    "startTime": "Ora di inizio",
+    "switchIteration": "Cambia iterazione",
+    "time": "Ora"
+  },
+  "fullscreen": {
+    "tooltip": "Premi {{hotkey}} per la schermata intera"
+  },
+  "generateToken": "Genera token",
+  "includedIn": "Incluso in",
+  "key": "Chiave",
+  "loading": "Caricamento…",
+  "logLevel": {
+    "hide": "Nascondi i livelli di Log",
+    "hotkey": "l",
+    "show": "Mostra i livelli di Log"
   },
   "logicalDate": "Data Logica",
   "logout": "Esci",
   "logoutConfirmation": "Stai per uscire dall'applicazione.",
   "mapIndex": "Mappa Index",
   "modal": {
+    "add": "Aggiungi",
     "cancel": "Annulla",
     "confirm": "Conferma",
     "delete": {
       "button": "Elimina",
       "confirmation": "Confermi di voler eliminare {{resourceName}}? Questa 
azione non può essere annullata."
-    }
+    },
+    "save": "Salva"
   },
   "nav": {
     "admin": "Amministrazione",
     "assets": "Asset",
     "browse": "Sfoglia",
     "dags": "Dag",
+    "dashboard": "Dashboard",
     "docs": "Documentazione",
     "home": "Home",
     "legacyFabViews": "Legacy View",
     "plugins": "Plugins",
     "security": "Sicurezza"
   },
+  "no": "No",
   "noItemsFound": "Nessun {{modelName}} trovato",
   "note": {
     "add": "Aggiungi una nota",
     "dagRun": "Nota del Run del Dag",
+    "edit": "Modifica la nota",
     "label": "Note",
     "placeholder": "Aggiungi una nota...",
-    "taskInstance": "Nota dell'Istanza di Task"
+    "preview": "Anteprima",
+    "taskInstance": "Nota dell'Istanza di Task",
+    "write": "Scrivi"
   },
-  "pools": {
-    "deferred": "In Attesa",
-    "open": "Aperto",
-    "pools_many": "Pools",
-    "pools_one": "Pool",
-    "pools_other": "Pools",
-    "pools_zero": "Nessun pool",
-    "queued": "In Coda",
-    "running": "In Esecuzione",
-    "scheduled": "Programmato"
+  "overallStatus": "Stato generale",
+  "pagination": {
+    "nextPage": "Pagina successiva",
+    "previousPage": "Pagina precedente"
+  },
+  "partition_many": "Partizioni",
+  "partition_one": "Partizione",
+  "partition_other": "Partizioni",
+  "partition_zero": "Nessuna partizione",
+  "partitionedDagRun_many": "Run del Dag partizionati",
+  "partitionedDagRun_one": "Run del Dag partizionato",
+  "partitionedDagRun_other": "Run del Dag partizionati",
+  "partitionedDagRun_zero": "Nessun Run del Dag partizionato",
+  "partitionedDagRunDetail": {
+    "receivedAssetEvents": "Eventi Asset ricevuti"
+  },
+  "pause": "Metti in pausa",
+  "pendingDagRun_many": "{{count, number}} di Run del Dag in sospeso",
+  "pendingDagRun_one": "{{count, number}} Run del Dag in sospeso",
+  "pendingDagRun_other": "{{count, number}} Run del Dag in sospeso",
+  "pendingDagRun_zero": "Nessun Run del Dag in sospeso",
+  "presetFilters": {
+    "deleteTitle": "Elimina il filtro salvato",
+    "deleteWarning": "I filtri salvati sono memorizzati solo in questo 
browser.",
+    "duplicate": "Il filtro salvato \"{{name}}\" contiene già questa stessa 
configurazione.",
+    "empty": "Nessun filtro salvato",
+    "info": {
+      "default": "Fissa un filtro salvato come predefinito e viene applicato 
automaticamente quando apri questa pagina senza filtri.",
+      "save": "Salva i filtri e l'ordinamento attuali come filtro salvato con 
un nome, e puoi tornarci in qualsiasi momento.",
+      "storage": "I filtri salvati sono memorizzati in questo browser."
+    },
+    "namePlaceholder": "Nome del filtro salvato",
+    "nothingToSave": "Niente da salvare. Applica filtri o un ordinamento per 
salvare un filtro.",
+    "save": "Salva",
+    "setDefault": "Imposta come predefinito",
+    "title": "Filtri salvati",
+    "unsetDefault": "Rimuovi il predefinito"
   },
   "reset": "Resetta",
   "runId": "ID del Run",
   "runTypes": {
+    "asset_materialization": "Materializzazione di Asset",
     "asset_triggered": "Asset Triggered",
     "backfill": "Backfill",
     "manual": "Manuale",
@@ -188,6 +291,13 @@
     },
     "tooltip": "Premi {{hotkey}} per scorrere a {{direction}}"
   },
+  "search": {
+    "advanced": {
+      "description": "Corrispondenza in qualsiasi punto del valore (ricerca 
per sottostringa). Più lenta nelle installazioni grandi perché non può usare 
l'indice B-tree predefinito. Vedi la sezione della documentazione sugli indici 
personalizzati dei metadati.",
+      "title": "Corrispondenza ovunque",
+      "toggleLabel": "Attiva o disattiva la ricerca in qualsiasi punto"
+    }
+  },
   "security": {
     "actions": "Azioni",
     "permissions": "Permessi",
@@ -196,7 +306,131 @@
     "users": "Utenti"
   },
   "selectLanguage": "Seleziona la Lingua",
+  "selected": "Selezionato",
+  "settings": {
+    "clearing": {
+      "keepTaskState": {
+        "helper": "Conserva per impostazione predefinita le voci dello store 
di stato del Task quando pulisci le istanze di Task, invece di scartarle.",
+        "label": "Conserva lo stato del Task durante la pulizia"
+      },
+      "preventRunningTask": {
+        "helper": "Salta i Task in esecuzione quando pulisci le istanze di 
Task.",
+        "label": "Non pulire i Task in esecuzione"
+      },
+      "runSelection": {
+        "helper": "Opzioni selezionate per impostazione predefinita quando 
pulisci un run del Dag.",
+        "label": "Selezione predefinita per la pulizia del run"
+      },
+      "taskSelection": {
+        "helper": "Opzioni selezionate per impostazione predefinita quando 
pulisci le istanze di Task.",
+        "label": "Selezione predefinita per la pulizia dei Task"
+      },
+      "title": "Pulizia"
+    },
+    "dagsList": {
+      "recentTasks": {
+        "helper": "Mostra gli stati recenti dei Task di ogni Dag nella lista 
dei Dag. Disattivalo per non caricarli: può aiutare nelle installazioni con 
molti Dag.",
+        "label": "Mostra i Task recenti"
+      },
+      "title": "Lista dei Dag"
+    },
+    "description": "Queste preferenze sono salvate solo in questo browser e 
valgono in tutta l'applicazione.",
+    "general": {
+      "landingPage": {
+        "helper": "Pagina mostrata quando apri Airflow.",
+        "label": "Pagina iniziale",
+        "options": {
+          "dags": "Dag",
+          "dashboard": "Dashboard"
+        }
+      },
+      "title": "Generale"
+    },
+    "graph": {
+      "defaultDirection": {
+        "helper": "Direzione del layout per i grafici di Dag e Asset che non 
hai impostato singolarmente.",
+        "label": "Direzione predefinita del grafico"
+      },
+      "taskGroupsExpanded": {
+        "helper": "Espandi i gruppi di Task nei Dag in cui non hai salvato una 
selezione di gruppi. Le selezioni esistenti restano.",
+        "label": "Espandi i gruppi di Task per impostazione predefinita"
+      },
+      "title": "Grafico"
+    },
+    "marking": {
+      "taskSelection": {
+        "helper": "Opzioni selezionate per impostazione predefinita quando 
marchi lo stato di un'istanza di Task.",
+        "label": "Selezione predefinita per la marcatura"
+      },
+      "title": "Marcatura"
+    },
+    "search": {
+      "matchAnywhere": {
+        "helper": "$t(search.advanced.description) Le scelte di ogni barra di 
ricerca e i link condivisi hanno comunque la precedenza.",
+        "label": "Corrispondenza ovunque per impostazione predefinita"
+      },
+      "title": "Ricerca"
+    },
+    "taskInstance": {
+      "defaultTab": {
+        "helper": "Scheda mostrata per prima quando apri un'istanza di Task. I 
link a una scheda specifica aprono comunque quella scheda.",
+        "label": "Scheda predefinita dell'istanza di Task"
+      },
+      "title": "Istanza di Task"
+    },
+    "title": "Impostazioni"
+  },
+  "shortcuts": {
+    "categories": {
+      "code": "Codice",
+      "dagView": "Vista del Dag",
+      "filters": "Filtri",
+      "global": "Globali",
+      "logs": "Log",
+      "navigation": "Navigazione",
+      "runActions": "Azioni su run e Task",
+      "search": "Ricerca"
+    },
+    "descriptions": {
+      "clearRun": "Pulisci $t(dagRun_one)",
+      "clearTaskInstance": "Pulisci $t(taskInstance_one)",
+      "downloadLogs": "Scarica i Log",
+      "focusFilterSearch": "Vai alla ricerca dei filtri",
+      "focusLogSearch": "Cerca nei Log",
+      "focusSearch": "Vai alla ricerca",
+      "markRunFailed": "Marca $t(dagRun_one) come fallito",
+      "markRunSuccess": "Marca $t(dagRun_one) come successo",
+      "markTaskFailed": "Marca $t(task_one) come fallito",
+      "markTaskGroupFailed": "Marca $t(taskGroup_one) come fallito",
+      "markTaskGroupSuccess": "Marca $t(taskGroup_one) come successo",
+      "markTaskSuccess": "Marca $t(task_one) come successo",
+      "navigateTasks": "Naviga $t(task_other)",
+      "openGraphFilters": "Apri i filtri del grafico",
+      "scrollBottom": "Vai in fondo",
+      "scrollTop": "Vai in cima",
+      "searchDags": "Cercare $t(dag_other)",
+      "selectGridCellRange": "Seleziona un intervallo di 
$t(taskInstance_other) o $t(taskGroup_other)",
+      "showHelp": "Mostra $t(shortcuts.title)",
+      "toggleExpand": "Espandi o comprimi tutti i gruppi",
+      "toggleFullscreen": "Attiva o disattiva la schermata intera",
+      "toggleGraphGrid": "Passa da grafico a griglia",
+      "toggleGridCellSelection": "Aggiungi o togli una $t(taskInstance_one) o 
un $t(taskGroup_one) dalla selezione",
+      "toggleLogLevel": "Attiva o disattiva i livelli di Log",
+      "toggleSource": "Attiva o disattiva la sorgente",
+      "toggleTaskGroup": "Espandi o comprimi $t(taskGroup_one)",
+      "toggleTimestamp": "Attiva o disattiva i timestamp",
+      "toggleWrap": "Attiva o disattiva $t(wrap.wrap)"
+    },
+    "empty": "In questa pagina non ci sono scorciatoie da tastiera.",
+    "title": "Scorciatoie da tastiera"
+  },
   "showDetailsPanel": "Mostra il Pannello dei Dettagli",
+  "signedInAs": "Accesso effettuato come",
+  "slot": "Slot",
+  "slot_many": "Slots",
+  "slot_one": "Slot",
+  "slot_other": "Slots",
+  "slot_zero": "Nessuno slot",
   "source": {
     "hide": "Nascondi Sorgente",
     "hotkey": "s",
@@ -209,10 +443,13 @@
   "startDate": "Data di Inizio",
   "state": "Stato",
   "states": {
+    "awaiting_input": "In attesa di input",
     "deferred": "In Attesa",
     "failed": "Fallito",
     "no_status": "Nessun Stato",
     "none": "Nessun Stato",
+    "open": "Aperto",
+    "pending": "In sospeso",
     "planned": "Pianificato",
     "queued": "In Coda",
     "removed": "Rimosso",
@@ -225,6 +462,9 @@
     "up_for_retry": "Da Riavviare",
     "upstream_failed": "Upstream Fallito"
   },
+  "switchDag": "Cambia $t(dag_one)",
+  "switchDagRun": "Cambia $t(dagRun_one)",
+  "switchMapIndex": "Cambia $t(mapIndex)",
   "table": {
     "completedAt": "Completato il",
     "createdAt": "Creato il",
@@ -236,30 +476,49 @@
     "filterReset_zero": "Nessun filtro da resettare",
     "from": "Da",
     "maxActiveRuns": "Numero massimo di Runs attive",
+    "noResultsFound": "Nessun risultato",
     "noTagsFound": "Nessuna etichetta trovata",
+    "noTeamsFound": "Nessun Team trovato",
+    "ownerPlaceholder": "Filtra per proprietario",
     "tagMode": {
       "all": "Tutti",
       "any": "Qualunque"
     },
     "tagPlaceholder": "Filtra per etichetta",
-    "to": "A"
+    "to": "A",
+    "updatedAt": "Aggiornato il"
   },
   "task": {
+    "dependsOnPast": "Dipende dal passato",
     "documentation": "Documentazione del Task",
     "lastInstance": "Ultima Istanza",
     "operator": "Operatore",
-    "triggerRule": "Regola di Trigger"
+    "retries": "Tentativi",
+    "triggerRule": "Regola di Trigger",
+    "waitForDownstream": "Attendi il Downstream"
   },
   "task_many": "Tasks",
   "task_one": "Task",
   "task_other": "Tasks",
   "task_zero": "Nessun task",
+  "taskGroup": {
+    "documentation": "Documentazione del gruppo di Task"
+  },
+  "taskGroup_many": "Gruppi di Task",
+  "taskGroup_one": "Gruppo di Task",
+  "taskGroup_other": "Gruppi di Task",
+  "taskGroup_zero": "Nessun gruppo di Task",
   "taskId": "ID del Task",
   "taskInstance": {
+    "additionalAttributes": "Attributi aggiuntivi dell'istanza di Task",
     "dagVersion": "Versione del Dag",
     "executor": "Executor",
     "executorConfig": "Configurazione dell'Executor",
     "hostname": "Nome delHost",
+    "id": "ID",
+    "iteration": "Iterazione",
+    "loopDecision": "Decisione",
+    "loopIterations": "Iterazioni eseguite",
     "maxTries": "Numero massimo di Tentativi",
     "pid": "PID",
     "pool": "Pool",
@@ -267,12 +526,21 @@
     "priorityWeight": "Peso di Priorità",
     "queue": "Coda",
     "queuedWhen": "In Coda il",
+    "renderedMapIndex": "Map Index renderizzato",
+    "retryAt": "Riprova il",
     "scheduledWhen": "Programmato il",
+    "stateReason": "Motivo dello stato",
+    "stateReasonSummary": {
+      "failed": "Interrotto al tentativo {{tryNumber}} di {{totalTries}}",
+      "upForRetry": "Nuovo tentativo dopo il tentativo {{tryNumber}} di 
{{totalTries}}"
+    },
+    "trigger": "Trigger",
     "triggerer": {
       "assigned": "Triggerer Assegnato",
       "class": "Classe del Trigger",
       "createdAt": "Creato il",
       "id": "ID del Trigger",
+      "job": "Job del Triggerer",
       "latestHeartbeat": "Ultimo Heartbeat del Trigger",
       "title": "Info del Trigger"
     },
@@ -282,10 +550,23 @@
   "taskInstance_one": "Istanza di Task",
   "taskInstance_other": "Istanze di Task",
   "taskInstance_zero": "Nessuna istanza di task",
+  "teams": {
+    "more_many": "e {{count, number}} di altri",
+    "more_one": "e {{count, number}} altro",
+    "more_other": "e {{count, number}} altri",
+    "more_zero": "e nessun altro",
+    "none": "Nessun Team",
+    "title": "Team"
+  },
   "timeRange": {
+    "anyTime": "Qualsiasi momento",
+    "in": "fra",
+    "last7Days": "Ultimi 7 giorni",
     "last12Hours": "Ultimi 12 Ore",
     "last24Hours": "Ultimi 24 Ore",
+    "last30Days": "Ultimi 30 giorni",
     "lastHour": "Ultima Ora",
+    "latestRun": "Ultimo run",
     "pastWeek": "Settimana Scorsa"
   },
   "timestamp": {
@@ -301,6 +582,13 @@
     "utc": "UTC (Tempo Coordinato Universale)"
   },
   "toaster": {
+    "bulkClear": {
+      "error": "Pulizia in massa di {{resourceName}} fallita",
+      "success": {
+        "description": "{{count, number}} {{resourceName}} sono stati puliti 
con successo. Chiavi: {{keys}}",
+        "title": "Richiesta di pulizia in massa di {{resourceName}} inviata"
+      }
+    },
     "bulkDelete": {
       "error": "Eliminazione in Massa di {{resourceName}} Fallita",
       "success": {
@@ -308,6 +596,13 @@
         "title": "Eliminazione in Massa di {{resourceName}} Richiesta Inviata"
       }
     },
+    "bulkUpdate": {
+      "error": "Aggiornamento in massa di {{resourceName}} fallito",
+      "success": {
+        "description": "{{count, number}} {{resourceName}} sono stati 
aggiornati con successo. Chiavi: {{keys}}",
+        "title": "Richiesta di aggiornamento in massa di {{resourceName}} 
inviata"
+      }
+    },
     "create": {
       "error": "Creazione di {{resourceName}} Fallita",
       "success": {
@@ -337,14 +632,33 @@
       }
     }
   },
+  "tokenGeneration": {
+    "apiToken": "Token API",
+    "cliToken": "Token CLI",
+    "errorDescription": "Si è verificato un errore durante la generazione del 
token. Riprova.",
+    "errorTitle": "Generazione del token fallita",
+    "generate": "Genera",
+    "selectType": "Seleziona il tipo di token da generare.",
+    "title": "Genera token",
+    "tokenExpiresIn": "Questo token scade fra {{duration}}.",
+    "tokenGenerated": "Il token è stato generato.",
+    "tokenShownOnce": "Questo token viene mostrato una sola volta. Copialo 
ora."
+  },
   "total": "Totale {{state}}",
   "triggered": "Triggered",
   "tryNumber": "Numero di Tentativo",
+  "unpause": "Riprendi",
   "user": "Utente",
+  "validation": {
+    "mustBeAtLeast": "Deve essere almeno {{min}}.",
+    "mustBeValidNumber": "Deve essere un numero valido."
+  },
+  "value": "Valore",
   "wrap": {
     "hotkey": "w",
     "tooltip": "Premi {{hotkey}} per abilitare il wrap",
     "unwrap": "Disabilita il wrap",
     "wrap": "Abilita il wrap"
-  }
+  },
+  "yes": "Sì"
 }
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/it/components.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/it/components.json
index 6d97b28d7fd..722a1db742d 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/it/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/it/components.json
@@ -1,21 +1,40 @@
 {
   "backfill": {
-    "affected_many": "{{count, number}} runs verranno attivati.",
+    "affected_many": "{{count, number}} di runs verranno attivati.",
     "affected_one": "1 run verrà attivato.",
     "affected_other": "{{count, number}} runs verranno attivati.",
     "affected_zero": "Nessun run verrà attivato.",
     "affectedNone": "Nessun run corrispondente ai criteri selezionati.",
     "allRuns": "Tutti i Run",
     "backwards": "Run all'indietro",
+    "completed": "Completato",
     "dateRange": "Intervallo di Date",
     "errorStartDateBeforeEndDate": "La Data di Inizio deve essere precedente 
alla Data di Fine",
+    "exceptionReason": {
+      "alreadyExists": "Esiste già",
+      "inFlight": "In corso",
+      "unknown": "Sconosciuto"
+    },
     "maxRuns": "Numero massimo di Runs attive",
     "missingAndErroredRuns": "Run Mancanti ed Errati",
     "missingRuns": "Run Mancanti",
+    "notCreatedReason": "Motivo della mancata creazione",
+    "overrideExistingParams": "Sovrascrivi i parametri dei run esistenti",
+    "partitionRange": "Intervallo di partizioni",
+    "partitionsAffected_many": "Verrà applicato il backfill a {{count, 
number}} di partizioni:",
+    "partitionsAffected_one": "Verrà applicato il backfill a 1 partizione:",
+    "partitionsAffected_other": "Verrà applicato il backfill a {{count, 
number}} partizioni:",
+    "partitionsAffected_zero": "Nessuna partizione a cui applicare il 
backfill:",
+    "partitionsNone": "Nessuna partizione corrisponde all'intervallo 
selezionato.",
+    "permissionDenied": "Dry run fallito: l'utente non ha il permesso di 
creare backfill.",
     "reprocessBehavior": "Comportamento di Reprocesso",
     "run": "Correre Backfill",
+    "running": "In esecuzione",
+    "scheduleNotBackfillable": "La programmazione di questo Dag non supporta i 
backfill",
+    "schedulerPriorityHint": "In ogni ciclo dello scheduler i run di backfill 
del Dag vengono ordinati dopo quelli che non sono backfill. I run di backfill 
possono restare in coda più a lungo se sono presenti altri run.",
     "selectDescription": "Esegui questo Dag per un intervallo di date",
     "selectLabel": "Backfill",
+    "status": "Stato",
     "title": "Correre Backfill",
     "toaster": {
       "success": {
@@ -26,7 +45,8 @@
     "validation": {
       "datesRequired": "Devi fornire sia la Data di Inizio che la Data di 
Fine.",
       "startBeforeEnd": "La Data di Inizio deve essere precedente o uguale 
alla Data di Fine."
-    }
+    },
+    "viewSlots": "Vedi gli slot del Backfill #{{id}}"
   },
   "banner": {
     "backfillInProgress": "Backfill in corso",
@@ -43,10 +63,7 @@
     "invalidJson": "Formato JSON non valido: {{errorMessage}}"
   },
   "dagWarnings": {
-    "error_many": "{{count, number}} Errori",
     "error_one": "1 Errore",
-    "error_other": "{{count, number}} Errori",
-    "error_zero": "Nessun errore",
     "errorAndWarning": "1 Errore e {{warningText}}",
     "types": {
       "asset conflict": "Conflitto di Asset",
@@ -55,39 +72,50 @@
       "runtime varying value": "Valore variabile a runtime",
       "task group cycle": "Ciclo nel gruppo di task"
     },
-    "warning_many": "{{count, number}} Avvisi",
+    "warning_many": "{{count, number}} di Avvisi",
     "warning_one": "1 Avviso",
     "warning_other": "{{count, number}} Avvisi",
     "warning_zero": "Nessun avviso"
   },
+  "dateRangeFilter": {
+    "validation": {
+      "invalidDateFormat": "Formato della data non valido.",
+      "invalidTimeFormat": "Formato dell'ora non valido.",
+      "startBeforeEnd": "Data e ora di inizio devono precedere data e ora di 
fine"
+    }
+  },
   "durationChart": {
     "duration": "Durata (secondi)",
-    "lastDagRun_many": "Ultimi {{count, number}} Runs del Dag",
+    "lastDagRun_many": "Ultimi {{count, number}} di Runs del Dag",
     "lastDagRun_one": "Ultimo Run del Dag",
     "lastDagRun_other": "Ultimi {{count, number}} Runs del Dag",
     "lastDagRun_zero": "Nessun run del Dag",
-    "lastTaskInstance_many": "Ultime {{count, number}} Istanze di Task",
+    "lastTaskInstance_many": "Ultime {{count, number}} di Istanze di Task",
     "lastTaskInstance_one": "Ultima Istanza di Task",
     "lastTaskInstance_other": "Ultime {{count, number}} Istanze di Task",
     "lastTaskInstance_zero": "Nessuna istanza di task",
+    "medianTotalDuration": "Totale: {{duration}}",
     "queuedDuration": "Durata in coda",
     "runAfter": "Esegui dopo",
     "runDuration": "Durata del Run"
   },
   "fileUpload": {
-    "files_many": "{{count, number}} file",
+    "files_many": "{{count, number}} di file",
     "files_one": "1 file",
     "files_other": "{{count, number}} file",
     "files_zero": "Nessun file"
   },
   "flexibleForm": {
+    "durationPlaceholder": "Inserisci la durata in formato ISO 8601",
     "placeholder": "Seleziona Valore",
     "placeholderArray": "Inserisci ogni stringa su una nuova riga",
     "placeholderExamples": "Inizia a digitare per vedere le opzioni",
     "placeholderMulti": "Seleziona uno o più valori",
+    "validationErrorArrayElement": "Valori {{type}} non validi: {{values}}",
     "validationErrorArrayNotArray": "Il valore deve essere un array.",
     "validationErrorArrayNotNumbers": "Tutti gli elementi dell'array devono 
essere numeri.",
     "validationErrorArrayNotObject": "Tutti gli elementi dell'array devono 
essere oggetti.",
+    "validationErrorDuration": "Formato di durata ISO 8601 non valido",
     "validationErrorRequired": "Questo campo è obbligatorio"
   },
   "graph": {
@@ -99,11 +127,18 @@
     "downloadImageError": "Impossibile scaricare l'immagine del grafico.",
     "downloadImageErrorTitle": "Scaricamento Fallito",
     "otherDagRuns": "+Altri Runs del Dag",
-    "taskCount_many": "{{count, number}} Tasks",
+    "taskCount_many": "{{count, number}} di Tasks",
     "taskCount_one": "{{count, number}} Task",
     "taskCount_other": "{{count, number}} Tasks",
     "taskCount_zero": "Nessun task",
-    "taskGroup": "Task Group"
+    "taskGroup": "Task Group",
+    "zoomToTask": "Zoom sul Task selezionato"
+  },
+  "jsonPreview": {
+    "items_many": "{{count, number}} di elementi",
+    "items_one": "1 elemento",
+    "items_other": "{{count, number}} elementi",
+    "items_zero": "Nessun elemento"
   },
   "limitedList": "+{{count, number}} altro",
   "limitedList.allItems": "Tutti i {{count, number}} elementi:",
@@ -114,7 +149,7 @@
   "limitedList.clickToInteract": "Fai clic su un'etichetta per filtrare i Dag",
   "limitedList.clickToOpenFull": "Fai clic su \"+{{count, number}} altro\" per 
visualizzare tutto",
   "limitedList.copyPasteText": "Puoi copiare e incollare il testo sopra",
-  "limitedList.showingItems_many": "Mostrando {{count, number}} elementi",
+  "limitedList.showingItems_many": "Mostrando {{count, number}} di elementi",
   "limitedList.showingItems_one": "Mostrando 1 elemento",
   "limitedList.showingItems_other": "Mostrando {{count, number}} elementi",
   "limitedList.showingItems_zero": "Mostrando 0 elementi",
@@ -122,27 +157,79 @@
     "file": "File",
     "location": "linea {{line}} in {{name}}"
   },
+  "passwordToggle": {
+    "hide": "Nascondi il valore",
+    "show": "Mostra il valore"
+  },
+  "pausedDag": {
+    "drain": "Drena",
+    "drainDescription": "I run non terminati continuano, ma non vengono creati 
run programmati. I backfill in pausa restano in pausa. Il Dag torna in pausa 
quando tutti i run non terminati finiscono.",
+    "keepPaused": "Tieni in pausa",
+    "keepPausedDescription": "I run nuovi e quelli non terminati attendono 
finché il Dag non viene ripreso.",
+    "title": "Il Dag è in pausa",
+    "unfinishedRunsWillRun_many": "{{count, number}} di run del Dag non 
terminati verranno avviati o ripresi.",
+    "unfinishedRunsWillRun_one": "1 run del Dag non terminato verrà avviato o 
ripreso.",
+    "unfinishedRunsWillRun_other": "{{count, number}} run del Dag non 
terminati verranno avviati o ripresi.",
+    "unfinishedRunsWillRun_zero": "Nessun run del Dag non terminato verrà 
avviato o ripreso.",
+    "unpause": "Riprendi",
+    "unpauseDescription": "Il Dag diventa attivo: i run non terminati 
continuano e la programmazione riprende. I backfill in pausa restano in pausa."
+  },
   "reparseDag": "Reparse Dag",
+  "slowestTaskInstances": {
+    "empty": "Nessuna istanza di Task completata in questo intervallo",
+    "title": "Istanze di Task più lente"
+  },
+  "sort": "ordina",
+  "sortMultiColumnHint": "Tieni premuto Maiusc e fai clic per ordinare per più 
colonne",
   "sortedAscending": "ordinato in ordine crescente",
   "sortedDescending": "ordinato in ordine decrescente",
   "sortedUnsorted": "non ordinato",
   "taskTries": "Tentativi di Task",
+  "taskTryPlaceholder": "Tentativo del Task",
+  "team": {
+    "selector": {
+      "helperText": "Facoltativo. Limita l'uso a un Team specifico.",
+      "label": "Team",
+      "placeHolder": "Seleziona un Team"
+    }
+  },
   "toggleCardView": "Mostra la vista in card",
   "toggleTableView": "Mostra la vista in tabella",
   "triggerDag": {
     "button": "Trigger",
+    "dagStartEndDate": {
+      "both": "Data di inizio del Dag: {{startDate}}, data di fine: 
{{endDate}}",
+      "end": "Data di fine del Dag: {{endDate}}",
+      "noTaskWillRun": "Nessun Task verrà eseguito.",
+      "start": "Data di inizio del Dag: {{startDate}}"
+    },
+    "dataInterval": "Intervallo dei dati",
+    "dataIntervalAuto": "Dedotto dalla data logica e dalla programmazione",
+    "dataIntervalManual": "Specifica manualmente",
+    "editConfigAndTrigger": "Modifica la configurazione e attiva",
+    "intervalEnd": "Fine",
+    "intervalStart": "Inizio",
     "loading": "Caricamento informazioni del Dag...",
     "loadingFailed": "Impossibile caricare le informazioni del Dag. Per 
favore, riprova.",
+    "manualRunDenied": "I run manuali non sono consentiti per questo Dag",
+    "partitionKeyHelp": "Facoltativo: vale solo per i Dag partizionati",
+    "recentConfig": "Configurazioni recenti",
+    "recentConfigPlaceholder": "Seleziona una configurazione recente",
     "runIdHelp": "Opzionale - verrà generato se non fornito",
     "selectDescription": "Triggera un singolo run di questo Dag",
     "selectLabel": "Singolo Run",
     "title": "Trigger del Dag",
     "toaster": {
+      "error": {
+        "title": "Attivazione del Dag fallita"
+      },
       "success": {
         "description": "Il run del Dag è stato attivato con successo.",
         "title": "Run del Dag attivato"
       }
-    }
+    },
+    "triggerAgainWithConfig": "Attiva di nuovo con questa configurazione",
+    "triggerOptions": "Opzioni di attivazione"
   },
   "trimText": {
     "details": "Dettagli",
@@ -157,7 +244,9 @@
     "versionId": "ID della Versione"
   },
   "versionSelect": {
+    "allVersions": "Tutte le versioni",
     "dagVersion": "Versione del Dag",
+    "placeholder": "Seleziona la versione",
     "versionCode": "v{{versionCode}}"
   }
 }
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/it/dag.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/it/dag.json
index fbb085ed308..d9b2548e42b 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/it/dag.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/it/dag.json
@@ -1,4 +1,5 @@
 {
+  "allMapIndexes": "Tutti i Map Index",
   "allRuns": "Tutti i Run",
   "blockingDeps": {
     "dependency": "Dipendenza",
@@ -6,6 +7,7 @@
     "title": "Dipendenze che bloccano la Task da essere pianificata"
   },
   "calendar": {
+    "backfill": "Backfill",
     "daily": "Giornaliero",
     "hourly": "Orario",
     "legend": {
@@ -34,23 +36,79 @@
       "wednesday": "Mer"
     }
   },
+  "callbacks": {
+    "callback_many": "Callbacks",
+    "callback_one": "Callback",
+    "callback_other": "Callbacks",
+    "callback_zero": "Nessun Callback",
+    "columns": {
+      "alertName": "Avviso di scadenza",
+      "callback": "Callback",
+      "deadlineTime": "Ora della scadenza",
+      "missedBy": "Scostamento",
+      "type": "Tipo"
+    },
+    "types": {
+      "executor": "Sincrono",
+      "triggerer": "Asincrono"
+    }
+  },
   "code": {
     "bundleUrl": "URL del Bundle",
     "noCode": "Nessun Codice Trovato",
     "parseDuration": "Durata del parsing",
     "parsedAt": "Parsato il:"
   },
+  "deadlineAlerts": {
+    "completionRule": "Deve completarsi entro {{interval}} da {{reference}}",
+    "completionRuleDynamic": "Deve completarsi entro un intervallo variabile 
misurato da {{reference}}",
+    "count_many": "{{count, number}} di scadenze",
+    "count_one": "{{count, number}} scadenza",
+    "count_other": "{{count, number}} scadenze",
+    "count_zero": "Nessuna scadenza",
+    "referenceType": {
+      "AverageRuntimeDeadline": "runtime medio",
+      "DagRunLogicalDateDeadline": "data logica",
+      "DagRunQueuedAtDeadline": "ora di messa in coda"
+    }
+  },
+  "deadlineStatus": {
+    "actual": "Effettivo",
+    "expected": "Atteso",
+    "finishedEarly": "Terminato {{duration}} prima della scadenza",
+    "finishedLate": "Terminato {{duration}} dopo la scadenza",
+    "label": "Scadenza",
+    "met": "Rispettata",
+    "missed": "Non rispettata",
+    "missedCount_many": "{{count, number}} di scadenze non rispettate",
+    "missedCount_one": "{{count, number}} scadenza non rispettata",
+    "missedCount_other": "{{count, number}} scadenze non rispettate",
+    "missedCount_zero": "Nessuna scadenza non rispettata",
+    "mixedCount": "{{missedCount, number}} non rispettate, {{upcomingCount, 
number}} imminenti",
+    "stillRunning": "Ancora in esecuzione",
+    "upcoming": "Imminenti",
+    "upcomingCount_many": "{{count, number}} di scadenze imminenti",
+    "upcomingCount_one": "{{count, number}} scadenza imminente",
+    "upcomingCount_other": "{{count, number}} scadenze imminenti",
+    "upcomingCount_zero": "Nessuna scadenza imminente"
+  },
   "extraLinks": "Extra Links",
   "grid": {
     "buttons": {
+      "newerRuns": "Run più recenti",
+      "olderRuns": "Run più vecchi",
       "resetToLatest": "Resetta al più recente",
       "toggleGroup": "Attiva/Disattiva gruppo"
-    }
+    },
+    "runTypeLegend": "Legenda dei tipi di run"
   },
   "header": {
     "buttons": {
       "advanced": "Avanzato",
       "dagDocs": "Documentazione sul Dag"
+    },
+    "status": {
+      "deactivated": "Disattivato"
     }
   },
   "logs": {
@@ -59,19 +117,59 @@
     "critical": "CRITICO",
     "debug": "DEBUG",
     "error": "ERRORE",
-    "fullscreen": {
-      "button": "Schermo Intero",
-      "tooltip": "Premi {{hotkey}} per schermo intero"
-    },
     "info": "INFO",
     "noTryNumber": "Nessun numero di tentativo",
+    "search": {
+      "matchCount": "{{current, number}} di {{total, number}}",
+      "nextMatch": "Corrispondenza successiva",
+      "noMatches": "Nessuna corrispondenza",
+      "placeholder": "Cercare nei Log...",
+      "previousMatch": "Corrispondenza precedente"
+    },
     "settings": "Impostazioni Log",
+    "tryNotStarted": "Questo tentativo non è ancora iniziato.",
+    "viewFailedTry": "Vedi i Log del tentativo fallito {{tryNumber}}",
     "viewInExternal": "Visualizza i logs in {{name}} (tentativo {{attempt}})",
+    "viewPreviousTry": "Vedi i Log del tentativo precedente {{tryNumber}}",
+    "waitingToRetry": "Il tentativo {{tryNumber}} è in attesa di un nuovo 
tentativo.",
     "warning": "AVVISO"
   },
-  "navigation": {
-    "navigation": "Navigazione: Shift+{{arrow}}",
-    "toggleGroup": "Attiva/Disattiva gruppo: Spazio"
+  "loop": {
+    "history": {
+      "capLabel": "Limite: {{max}}",
+      "iterationsAxis": "Iterazioni",
+      "stats": {
+        "capHits": "Hanno raggiunto il limite",
+        "medianIterations": "Mediana delle iterazioni"
+      },
+      "title": "Iterazioni per run"
+    },
+    "iterationLabel": "Iterazione {{index}}",
+    "iterations": "Iterazioni",
+    "outcome": "Esito",
+    "reason": {
+      "cap_reached": "Ha raggiunto il limite di iterazioni ({{max}})",
+      "failed": "Fallito all'iterazione {{index}}",
+      "iteration_failed": "L'iterazione {{index}} è fallita in {{taskId}}",
+      "ran_to_cap": "Ha eseguito tutte le {{max}} iterazioni consentite",
+      "removed": "Rimosso",
+      "running": "In esecuzione",
+      "skipped": "Saltato",
+      "stopped_early": "Si è fermato prima, all'iterazione {{index}}"
+    },
+    "rules": {
+      "behaviour": "Comportamento",
+      "boundedFor": "Esegue un numero fisso di iterazioni",
+      "exitCriteria": "Criterio di uscita",
+      "maxIterations": "Numero massimo di iterazioni",
+      "whileUntil": "Si ripete finché {{criteria}}"
+    }
+  },
+  "notFound": {
+    "back": "Indietro",
+    "backToDags": "Torna ai Dag",
+    "message": "Il Dag \"{{dagId}}\" non esiste.",
+    "title": "Dag non trovato"
   },
   "overview": {
     "buttons": {
@@ -94,6 +192,10 @@
       "assetEvent_other": "Eventi di Asset Creati",
       "assetEvent_zero": "Nessun evento di asset creato"
     },
+    "deadlines": {
+      "showAll": "Mostra tutte",
+      "title": "Scadenze"
+    },
     "failedLogs": {
       "hideLogs": "Nascondi Logs",
       "showLogs": "Mostra Logs",
@@ -112,16 +214,49 @@
       "label": "Numero di Runs del Dag"
     },
     "dependencies": {
-      "label": "Dipendenze",
-      "options": {
-        "allDagDependencies": "Tutte le Dipendenze del Dag",
-        "externalConditions": "Condizioni Esterne",
-        "onlyTasks": "Solo le Task"
-      },
-      "placeholder": "Dipendenze"
+      "allDagDependencies": "Tutte le dipendenze del Dag"
     },
     "graphDirection": {
       "label": "Direzione del Grafico"
+    },
+    "graphFilters": {
+      "clearFilters": "Pulisci i filtri",
+      "durationGte": "Durata minima (s)",
+      "durationGteHint": "Per i Task mappati misura l'intervallo totale di 
tutte le istanze",
+      "mapIndex": "Map index minimo",
+      "mapIndexHint": "Mostra i Task mappati espansi almeno fino a questo 
indice",
+      "selectStatus": "Seleziona lo stato",
+      "selectTaskGroup": "Seleziona il gruppo di Task",
+      "title": "Filtri dei Task"
+    },
+    "showVersionIndicator": {
+      "label": "Mostra l'indicatore di versione",
+      "options": {
+        "hideAll": "Nascondi tutto",
+        "showAll": "Mostra tutto",
+        "showBundleVersion": "Mostra la versione del Bundle",
+        "showDagVersion": "Mostra la versione del Dag"
+      }
+    },
+    "taskStreamFilter": {
+      "activeFilter": "Filtro attivo",
+      "clearFilter": "Pulisci il filtro",
+      "clickTask": "Fai clic su un Task per usarlo come radice del filtro",
+      "depth": "Profondità",
+      "direction": "Direzione",
+      "label": "Filtro",
+      "mode": "Modalità",
+      "modeTooltip": "La modalità statica mantiene la vista corrente quando 
passi ad altri Task. La modalità di attraversamento aggiorna il filtro attivo 
sul Task su cui fai clic, per seguire il Dag più facilmente.",
+      "modes": {
+        "static": "Statica",
+        "traverse": "Attraversamento"
+      },
+      "options": {
+        "both": "Sia upstream sia downstream",
+        "downstream": "Downstream",
+        "upstream": "Upstream"
+      },
+      "selectedTask": "Task selezionato"
     }
   },
   "paramsFailed": "Impossibile caricare i parametri",
@@ -142,6 +277,7 @@
     "auditLog": "Registro di Controllo (Logs)",
     "backfills": "Backfills",
     "calendar": "Calendario",
+    "callbacks": "Callbacks",
     "code": "Codice",
     "details": "Dettagli",
     "logs": "Logs",
@@ -154,11 +290,112 @@
     "requiredActions": "Azioni Richieste",
     "runs": "Run",
     "taskInstances": "Istanze di Task",
+    "taskStateStore": "Store di stato del Task",
     "tasks": "Tasks",
+    "versions": "Versioni",
     "xcom": "XCom"
   },
   "taskGroups": {
     "collapseAll": "Collassa tutti i gruppi di task",
     "expandAll": "Espandi tutti i gruppi di task"
+  },
+  "taskStateStore": {
+    "add": "Aggiungi store di stato del Task",
+    "clearAll": {
+      "resource": "tutto lo store di stato dei Task",
+      "title": "Cancella tutto lo store di stato dei Task",
+      "warning": "Lo store di stato dei Task verrà azzerato. I Task che lo 
usano per seguire lavoro esterno non potranno riprenderlo senza rieseguire 
dall'inizio."
+    },
+    "delete": "Elimina lo store di stato del Task",
+    "deleteWarning": "Il Task perderà questa memoria persistente. Se usa 
questa chiave per seguire lavoro esterno (per esempio un ID di lavoro esterno), 
non potrà riprenderlo.",
+    "edit": "Modifica lo store di stato del Task",
+    "emptyStore": "Lo store di stato del Task memorizza valori che restano tra 
un tentativo e l'altro. I worker possono scrivere nello store di stato del Task 
tramite il Task SDK.",
+    "entry_many": "Voci",
+    "entry_one": "Voce",
+    "entry_other": "Voci",
+    "entry_zero": "Nessuna voce",
+    "expiresAt": {
+      "column": "Scade il",
+      "custom": "Personalizzata",
+      "default": "Predefinita ({{interval}})",
+      "label": "Scadenza",
+      "never": "Mai"
+    },
+    "title": "Store di stato del Task"
+  },
+  "versions": {
+    "base": "Confronta da",
+    "categories": {
+      "asset": "Asset",
+      "authorization": "Autorizzazione",
+      "callback": "Callback",
+      "deadline": "Scadenza",
+      "dependency": "Dipendenza",
+      "metadata": "Metadati",
+      "param": "Parametro",
+      "provenance": "Provenienza",
+      "schedule": "Programmazione",
+      "task": "Task",
+      "unknown": "Sconosciuto"
+    },
+    "codeAccess": "I valori richiedono l'accesso al codice del Dag",
+    "columns": {
+      "after": "Dopo",
+      "before": "Prima",
+      "category": "Categoria",
+      "impact": "Impatto",
+      "operation": "Operazione",
+      "path": "Percorso"
+    },
+    "heading": "Versione {{base}} → Versione {{target}}",
+    "impacts": {
+      "authorization": "Autorizzazione",
+      "execution": "Esecuzione",
+      "metadata": "Metadati",
+      "provenance": "Provenienza",
+      "unknown": "Sconosciuto"
+    },
+    "limitReached": {
+      "description": "Ci sono più modifiche di quante ne consenta il limite 
Massimo di modifiche. Alza il limite per vedere il resto.",
+      "descriptionDefault": "Ci sono più modifiche di quante ne consenta il 
limite predefinito. Alza Massimo di modifiche per vedere il resto.",
+      "title": "Sono mostrate solo le prime {{limit, number}} modifiche"
+    },
+    "maxChanges": "Massimo di modifiche",
+    "maxChangesDefault": "Predefinito",
+    "noChanges": "Queste versioni hanno lo stesso stato.",
+    "operations": {
+      "added": "Aggiunto",
+      "changed": "Modificato",
+      "removed": "Rimosso"
+    },
+    "pathOccurrences_many": "{{count, number}} di modifiche condividono questo 
percorso",
+    "pathOccurrences_one": "{{count, number}} modifica condivide questo 
percorso",
+    "pathOccurrences_other": "{{count, number}} modifiche condividono questo 
percorso",
+    "pathOccurrences_zero": "Nessuna modifica condivide questo percorso",
+    "pathOccurrencesAtLeast_many": "Almeno {{count, number}} di modifiche 
condividono questo percorso",
+    "pathOccurrencesAtLeast_one": "Almeno {{count, number}} modifica condivide 
questo percorso",
+    "pathOccurrencesAtLeast_other": "Almeno {{count, number}} modifiche 
condividono questo percorso",
+    "pathOccurrencesAtLeast_zero": "Nessuna modifica condivide questo 
percorso",
+    "record_many": "Record",
+    "record_one": "Record",
+    "record_other": "Record",
+    "record_zero": "Nessun record",
+    "schemaChange": "Schema serializzato {{baseSchema}} → {{targetSchema}}",
+    "selectPrompt": "Seleziona due versioni per vedere che cosa è cambiato.",
+    "summary_many": "{{count, number}} di modifiche",
+    "summary_one": "{{count, number}} modifica",
+    "summary_other": "{{count, number}} modifiche",
+    "summary_zero": "Nessuna modifica",
+    "summaryAtLeast_many": "Almeno {{count, number}} di modifiche",
+    "summaryAtLeast_one": "Almeno {{count, number}} modifica",
+    "summaryAtLeast_other": "Almeno {{count, number}} modifiche",
+    "summaryAtLeast_zero": "Nessuna modifica",
+    "target": "Confronta con",
+    "unavailable": {
+      "description": "Non è stato possibile confrontare queste versioni. 
Motivo:",
+      "title": "Confronto non disponibile",
+      "withoutReason": "Non è stato possibile confrontare queste versioni."
+    },
+    "valuesHidden": "Valori nascosti"
   }
 }
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/it/dags.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/it/dags.json
index 5af8b24da40..648c9dbb68c 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/it/dags.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/it/dags.json
@@ -6,6 +6,11 @@
       "warning": "Questo rimuoverà tutti i metadati relativi al Dag, compresi 
i Run e le Task."
     }
   },
+  "draining": {
+    "badgeTooltip": "Questo Dag va in pausa quando terminano i run in corso.",
+    "label": "In drenaggio",
+    "tooltip": "Drenaggio di {{dagDisplayName}} — va in pausa quando terminano 
i run in corso. Fai clic per riprendere."
+  },
   "favoriteDag": "Dag Preferito",
   "filters": {
     "allRunTypes": "Tutti i Tipi di Run",
@@ -15,14 +20,37 @@
       "favorite": "Preferito",
       "unfavorite": "Rimuovi dai preferiti"
     },
+    "favoriteState": "Stato preferito",
+    "favoriteStatePlaceholder": "Seleziona lo stato preferito…",
+    "hasImportErrors": "Ha errori di importazione",
+    "noTimetableTypesFound": "Nessun tipo di programmazione trovato",
     "paused": {
       "active": "Attivo",
       "all": "Tutti",
       "paused": "In Pausa"
     },
-    "runIdPatternFilter": "Cercare Dag Runs"
+    "pausedPlaceholder": "Seleziona lo stato di pausa…",
+    "pausedState": "Stato di pausa",
+    "requiresHitlAction": "Richiede un'azione HITL",
+    "runIdPatternFilter": "Cercare Dag Runs",
+    "runState": "Stato del run",
+    "runStatePlaceholder": "Seleziona lo stato del run…",
+    "timetableType": "Tipo di programmazione"
+  },
+  "folders": {
+    "all": "Tutti i Dag",
+    "empty": "Nessuna cartella",
+    "hide": "Nascondi le cartelle",
+    "show": "Mostra le cartelle",
+    "title": "Cartelle"
   },
   "ownerLink": "Link dell'Owner per {{owner}}",
+  "recentTaskStateCounts": {
+    "description": "Stato dei Task di tutti i run del Dag in corso o, se non 
ce n'è nessuno, del run più recente. Puoi disattivarlo nelle impostazioni 
utente.",
+    "label": "Task recenti",
+    "loading": "Caricamento dei conteggi di stato dei Task recenti",
+    "tooltip": "{{state}}: {{formattedCount}} — fai clic per filtrare i Task"
+  },
   "runAndTaskActions": {
     "affectedTasks": {
       "noItemsFound": "Nessuna task trovata.",
@@ -34,6 +62,15 @@
       "error": "Impossibile pulire {{type}}",
       "title": "Pulisci {{type}}"
     },
+    "clearAllMapped": {
+      "button": "Pulisci tutti i Task mappati",
+      "buttonTooltip": "Premi shift+c per pulire tutte le istanze di Task 
mappate",
+      "title": "Pulisci tutte le istanze di Task mappate"
+    },
+    "confirmationDialog": {
+      "description": "Il Task è nello stato {{state}}, avviato dall'utente 
{{user}} alle {{time}}. \nNon puoi pulire questo Task finché l'esecuzione non è 
terminata, oppure finché un utente non deseleziona l'opzione \"Impedisci la 
riesecuzione se la task è in esecuzione\" nella finestra di pulizia.",
+      "title": "Impossibile pulire l'istanza di Task"
+    },
     "delete": {
       "button": "Elimina {{type}}",
       "dialog": {
@@ -53,25 +90,47 @@
         "failed": "Premi shift+f per marcare come fallito",
         "success": "Premi shift+s per marcare come successo"
       },
+      "skippedInfo": "Marcare un'istanza di Task come saltata registra che non 
è stata eseguita di proposito. I Task downstream vengono comunque valutati in 
base alle regole di trigger: con la regola predefinita \"all_success\" verranno 
saltati anch'essi. Si possono saltare solo le istanze che non hanno ancora 
iniziato l'esecuzione, e viene toccata solo questa istanza.",
       "title": "Marca {{type}} come {{state}}"
     },
     "options": {
       "downstream": "Downstream",
       "existingTasks": "Pulisci le task esistenti",
       "future": "Futuro",
+      "keepTaskState": "Conserva lo stato del Task e riprendi",
+      "laterIterations": "Iterazioni successive",
       "onlyFailed": "Pulisci solo le task fallite",
       "past": "Passato",
       "preventRunningTasks": "Impedisci la riesecuzione se la task è in 
esecuzione",
       "queueNew": "Inserisci nuove task",
       "runOnLatestVersion": "Esegui con l'ultima versione del bundle",
-      "upstream": "Upstream"
+      "runOnLatestVersionForced": "Usa sempre l'ultima versione: non c'è una 
versione precedente a cui tornare",
+      "upstream": "Upstream",
+      "wholeExpansion": "Espansione completa"
     }
   },
+  "runStateCounts": {
+    "label": "Stati dei run",
+    "loading": "Caricamento dei conteggi di stato dei run",
+    "tooltip": "{{state}}: {{formattedCount}} — fai clic per filtrare i run"
+  },
+  "schedulingActions": {
+    "cancelDrain": "Annulla il drenaggio",
+    "drain": "Drena e poi metti in pausa",
+    "drainPrompt": "Questo Dag ha run in corso. Il drenaggio li lascia 
terminare prima che il Dag vada in pausa; mettere in pausa ora interrompe 
subito la programmazione, senza attenderli.",
+    "pauseNow": "Metti in pausa ora",
+    "pauseSelected": "Pausa / Drenaggio"
+  },
+  "schedulingBanner": {
+    "message": "Questo Dag è in drenaggio. Andrà in pausa quando termineranno 
i run in corso."
+  },
   "search": {
     "advanced": "RiCercare Avanzata",
     "clear": "Pulisci la ricerca",
+    "dagRuns": "Cercare $t(common:dagRun_other)",
     "dags": "Cercare Dag",
     "hotkey": "+K",
+    "mapIndexes": "Cercare $t(common:mapIndex)",
     "tasks": "Cercare Task"
   },
   "sort": {
@@ -79,9 +138,9 @@
       "asc": "Ordina per Nome (A-Z)",
       "desc": "Ordina per Nome (Z-A)"
     },
-    "lastRunStartDate": {
-      "asc": "Ordina per Data di Inizio del Run più Recente (Prima-Ultimo)",
-      "desc": "Ordina per Data di Inizio del Run più Recente (Ultimo-Prima)"
+    "lastRunAfter": {
+      "asc": "Ordina per ultimo run dopo (dal meno recente)",
+      "desc": "Ordina per ultimo run dopo (dal più recente)"
     },
     "lastRunState": {
       "asc": "Ordina per Stato del Run più Recente (A-Z)",
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/it/dashboard.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/it/dashboard.json
index db693995ab2..08468e4115e 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/it/dashboard.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/it/dashboard.json
@@ -1,6 +1,28 @@
 {
+  "alerts": {
+    "seeLessContext": "Vedi meno",
+    "seeMoreContext": "Vedi di più",
+    "showMoreAlerts_many": "+{{count, number}} di altri avvisi",
+    "showMoreAlerts_one": "+{{count, number}} altro avviso",
+    "showMoreAlerts_other": "+{{count, number}} altri avvisi",
+    "showMoreAlerts_zero": "Nessun altro avviso"
+  },
+  "deadlines": {
+    "pending": {
+      "empty": "Nessuna scadenza imminente",
+      "title": "Imminenti"
+    },
+    "recentlyMissed": {
+      "empty": "Nessuna scadenza non rispettata",
+      "title": "Scadenze non rispettate"
+    },
+    "showMore": "Mostra altro",
+    "title": "Scadenze"
+  },
+  "deferredSlotsNotCounted": "Differiti non conteggiati negli slot: {{count, 
number}}",
+  "deferredSlotsNotCountedTooltip": "I Task differiti mostrati nella barra 
sono conteggiati negli slot del Pool. Quelli sotto la barra provengono da Pool 
che non conteggiano i Task differiti negli slot.",
   "favorite": {
-    "favoriteDags_many": "{{count, number}} Dags preferiti",
+    "favoriteDags_many": "Primi {{count, number}} di Dags preferiti",
     "favoriteDags_one": "Primo {{count, number}} Dag preferito",
     "favoriteDags_other": "Primi {{count, number}} Dags preferiti",
     "favoriteDags_zero": "Nessun Dag preferito",
@@ -10,17 +32,35 @@
   "group": "Gruppo",
   "health": {
     "dagProcessor": "Processore del Dag",
+    "degraded": "Degradato",
+    "degradedHint": {
+      "dagProcessor": "Alcuni Dag Bundle configurati non hanno un processore 
di Dag che li analizzi.",
+      "triggerer": "Alcuni Team non hanno un Triggerer che esegua i loro Task 
differiti."
+    },
+    "down": "Non raggiungibile",
     "health": "Salute",
     "healthy": "Sano",
+    "instances": {
+      "bundles": "Bundle",
+      "hostname": "Host",
+      "team": "Team",
+      "title_many": "{{title}} — {{status}} ({{count, number}} istanze)",
+      "title_one": "{{title}} — {{status}} ({{count, number}} istanza)",
+      "title_other": "{{title}} — {{status}} ({{count, number}} istanze)",
+      "title_zero": "{{title}} — {{status}} (nessuna istanza)",
+      "unknownHostname": "Host sconosciuto"
+    },
     "lastHeartbeat": "Ultimo Heartbeat",
     "metaDatabase": "Database di metadati",
     "scheduler": "Pianificatrice",
     "status": "Stato",
     "triggerer": "Triggerer",
-    "unhealthy": "Malato"
+    "unhealthy": "Malato",
+    "unknownStatus": "Sconosciuto"
   },
   "history": "Cronologia",
   "importErrors": {
+    "bundle": "Bundle",
     "dagImportError_many": "Errori di Importazione Dag",
     "dagImportError_one": "Errore di Importazione Dag",
     "dagImportError_other": "Errori di Importazione Dag",
@@ -33,7 +73,8 @@
   "poolSlots": "Slot del Pool",
   "sortBy": {
     "newestFirst": "Più Recenti",
-    "oldestFirst": "Più Vecchi"
+    "oldestFirst": "Più Vecchi",
+    "placeholder": "Ordina per"
   },
   "source": "Fonte",
   "stats": {
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/it/hitl.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/it/hitl.json
index e7fa3cc6bd4..42f237f7438 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/it/hitl.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/it/hitl.json
@@ -1,8 +1,7 @@
 {
   "filters": {
     "body": "Corpo",
-    "createdAtFrom": "Creato da",
-    "createdAtTo": "Creato fino a",
+    "createdAt": "Creato il",
     "response": {
       "all": "Tutte",
       "pending": "In attesa",
@@ -26,9 +25,24 @@
     "received": "Risposta ricevuta il ",
     "respond": "Rispondi",
     "responded_by_user_name": "Risposto da (Nome utente)",
+    "selectAtLeastOne": "Seleziona almeno un'opzione",
     "success": "Risposta di {{taskId}} riuscita",
     "title": "Istanza di Task Umana - {{taskId}}"
   },
+  "review": {
+    "detail": {
+      "selectRequiredAction": "Seleziona un'azione richiesta per vedere i 
dettagli"
+    },
+    "list": {
+      "completedRequiredActions": "Azioni richieste completate ({{count, 
number}})",
+      "loadError": "Impossibile caricare le azioni richieste",
+      "loadingActions": "Caricamento delle azioni richieste...",
+      "pendingRequiredActions": "Azioni richieste in sospeso ({{count, 
number}})"
+    },
+    "openReviewDrawer": "Apri il pannello di revisione",
+    "pageLimitHint": "Qui sono mostrate solo le prime azioni. Usa 
\"$t(review.viewAll)\" per vederle tutte.",
+    "viewAll": "Vedi tutte le azioni richieste"
+  },
   "state": {
     "approvalReceived": "Approvazione ricevuta",
     "approvalRequired": "Approvazione richiesta",

Reply via email to