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 13f230c7185 [RFC] Feat(ui): add italian translation + CODEOWNER
(#52342)
13f230c7185 is described below
commit 13f230c7185b8afa35c59871c88c3f75769b3dec
Author: Aldo <[email protected]>
AuthorDate: Thu Sep 11 11:57:19 2025 -0300
[RFC] Feat(ui): add italian translation + CODEOWNER (#52342)
* feat: add italian translation
* add italian into the dropdown
* add second codeowner
* apply feedback on dark/light mode
* fix articoli irregolari
* fix lint
* reduce gap coverage
* add plurals
* add new keys
* fix static check
---
.github/CODEOWNERS | 1 +
.github/boring-cyborg.yml | 3 +
.../airflow/ui/public/i18n/locales/it/admin.json | 183 +++++++++++
.../airflow/ui/public/i18n/locales/it/assets.json | 30 ++
.../airflow/ui/public/i18n/locales/it/browse.json | 26 ++
.../airflow/ui/public/i18n/locales/it/common.json | 343 +++++++++++++++++++++
.../ui/public/i18n/locales/it/components.json | 150 +++++++++
.../src/airflow/ui/public/i18n/locales/it/dag.json | 162 ++++++++++
.../airflow/ui/public/i18n/locales/it/dags.json | 97 ++++++
.../ui/public/i18n/locales/it/dashboard.json | 49 +++
.../airflow/ui/public/i18n/locales/it/hitl.json | 38 +++
.../airflow/ui/public/i18n/locales/it/tasks.json | 10 +
airflow-core/src/airflow/ui/src/i18n/config.ts | 1 +
dev/i18n/check_translations_completeness.py | 1 +
14 files changed, 1094 insertions(+)
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 1a7fe898951..3a80d90fa42 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -46,6 +46,7 @@ airflow-core/src/airflow/ui/public/i18n/locales/fr/
@pierrejeambrun @vincbeck
airflow-core/src/airflow/ui/public/i18n/locales/he/ @eladkal @shahar1
@romsharon98 # +@Dev-iL
airflow-core/src/airflow/ui/public/i18n/locales/hi/ @vatsrahul1001
airflow-core/src/airflow/ui/public/i18n/locales/hu/ @jscheffl @potiuk #
+@majorosdonat
+airflow-core/src/airflow/ui/public/i18n/locales/it/ @bbovenzi # + @aoelvp94
airflow-core/src/airflow/ui/public/i18n/locales/ko/ @jscheffl @potiuk # +
@choo121600 @kgw7401 @0ne-stone
airflow-core/src/airflow/ui/public/i18n/locales/nl/ @BasPH # + @DjVinnii
airflow-core/src/airflow/ui/public/i18n/locales/pl/ @potiuk @mobuchowski # +
@kacpermuda
diff --git a/.github/boring-cyborg.yml b/.github/boring-cyborg.yml
index b7ea2675340..67c3d343826 100644
--- a/.github/boring-cyborg.yml
+++ b/.github/boring-cyborg.yml
@@ -396,6 +396,9 @@ labelPRBasedOnFilePath:
translation:hu:
- airflow-core/src/airflow/ui/public/i18n/locales/hu/*
+ translation:it:
+ - airflow-core/src/airflow/ui/public/i18n/locales/it/*
+
translation:ko:
- airflow-core/src/airflow/ui/public/i18n/locales/ko/*
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
new file mode 100644
index 00000000000..398f9496f97
--- /dev/null
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/it/admin.json
@@ -0,0 +1,183 @@
+{
+ "columns": {
+ "description": "Descrizione",
+ "key": "Chiave",
+ "name": "Nome",
+ "value": "Valore"
+ },
+ "config": {
+ "columns": {
+ "section": "Sezione"
+ },
+ "title": "Configurazione di Airflow"
+ },
+ "connections": {
+ "add": "Aggiungi Connessione",
+ "columns": {
+ "connectionId": "ID Connessione",
+ "connectionType": "Tipo di Connessione",
+ "host": "Host",
+ "port": "Port"
+ },
+ "connection_many": "Connessioni",
+ "connection_one": "Connessione",
+ "connection_other": "Connessioni",
+ "connection_zero": "Nessuna connessione",
+ "delete": {
+ "deleteConnection_many": "Elimina {{count}} connessioni",
+ "deleteConnection_one": "Elimina 1 connessione",
+ "deleteConnection_other": "Elimina {{count}} connessioni",
+ "deleteConnection_zero": "Nessuna connessione da eliminare",
+ "firstConfirmMessage_many": "Stai per eliminare le seguenti
connessioni:",
+ "firstConfirmMessage_one": "Stai per eliminare la seguente connessione:",
+ "firstConfirmMessage_other": "Stai per eliminare le seguenti
connessioni:",
+ "firstConfirmMessage_zero": "Nessuna connessione da eliminare:",
+ "title": "Elimina Connessione"
+ },
+ "edit": "Modifica Connessione",
+ "form": {
+ "connectionIdRequired": "L'ID della connessione è obbligatorio",
+ "connectionIdRequirement": "L'ID della connessione non può contenere
solo spazi",
+ "connectionTypeRequired": "Il tipo di connessione è obbligatorio",
+ "extraFields": "Campi Extra",
+ "extraFieldsJson": "Campi Extra JSON",
+ "helperText": "Il tipo di connessione è mancante? Assicurati di aver
installato il pacchetto corrispondente di Airflow Providers.",
+ "helperTextForRedactedFields": "I campi redatti ('***') rimarranno
invariati se non modificati.",
+ "selectConnectionType": "Seleziona Tipo di Connessione",
+ "standardFields": "Campi Standard"
+ },
+ "nothingFound": {
+ "description": "Le connessioni definite tramite variabili d'ambiente o
gestori di segreti non sono elencate qui.",
+ "documentationLink": "Scopri di più nella documentazione di Airflow.",
+ "learnMore": "Queste sono risolte in fase di runtime e non sono visibili
nell'interfaccia utente.",
+ "title": "Nessuna connessione trovata!"
+ },
+ "searchPlaceholder": "Cerca Connessioni",
+ "test": "Test Connessione",
+ "testDisabled": "La funzione di test della connessione è disabilitata. Per
favore contatta un amministratore per abilitarla.",
+ "typeMeta": {
+ "error": "Impossibile recuperare il tipo di connessione",
+ "standardFields": {
+ "description": "Descrizione",
+ "host": "Host",
+ "login": "Login",
+ "password": "Password",
+ "port": "Porta",
+ "url_schema": "Schema"
+ }
+ }
+ },
+ "deleteActions": {
+ "button": "Elimina",
+ "modal": {
+ "confirmButton": "Sì, Elimina",
+ "secondConfirmMessage": "Questa azione è permanente e non può essere
annullata.",
+ "thirdConfirmMessage": "Confermi di voler procedere?"
+ },
+ "selected": "Selezionato",
+ "tooltip": "Elimina le connessioni selezionate"
+ },
+ "formActions": {
+ "reset": "Resetta",
+ "save": "Salva"
+ },
+ "plugins": {
+ "columns": {
+ "source": "Fonte"
+ },
+ "importError_many": "Errori di Importazione Plugin",
+ "importError_one": "Errore di Importazione Plugin",
+ "importError_other": "Errori di Importazione Plugin",
+ "importError_zero": "Nessun errore di importazione plugin",
+ "searchPlaceholder": "Cerca per file"
+ },
+ "pools": {
+ "add": "Aggiungi Pool",
+ "deferredSlotsIncluded": "Slots Deferiti Inclusi",
+ "delete": {
+ "title": "Elimina Pool",
+ "warning": "Questo rimuoverà tutti i metadati relativi al pool e
potrebbe influenzare le tare che lo utilizzano."
+ },
+ "edit": "Modifica Pool",
+ "form": {
+ "checkbox": "Seleziona per includere le tare deferite quando si
calcolano gli slot liberi del pool",
+ "description": "Descrizione",
+ "includeDeferred": "Includi Deferiti",
+ "nameMaxLength": "Il nome può contenere un massimo di 256 caratteri",
+ "nameRequired": "Il nome è obbligatorio",
+ "slots": "Slot"
+ },
+ "noPoolsFound": "Nessun pool trovato",
+ "pool_many": "Pools",
+ "pool_one": "Pool",
+ "pool_other": "Pools",
+ "pool_zero": "Nessun pool",
+ "searchPlaceholder": "Cerca Pools",
+ "sort": {
+ "asc": "Nome (A-Z)",
+ "desc": "Nome (Z-A)",
+ "placeholder": "Ordina per"
+ }
+ },
+ "providers": {
+ "columns": {
+ "packageName": "Nome del Pacchetto",
+ "version": "Versione"
+ }
+ },
+ "variables": {
+ "add": "Aggiungi Variabile",
+ "columns": {
+ "isEncrypted": "È Crittografata"
+ },
+ "delete": {
+ "deleteVariable_many": "Elimina {{count}} Variabili",
+ "deleteVariable_one": "Elimina 1 Variabile",
+ "deleteVariable_other": "Elimina {{count}} Variabili",
+ "deleteVariable_zero": "Nessuna variabile da eliminare",
+ "firstConfirmMessage_many": "Stai per eliminare le seguenti variabili:",
+ "firstConfirmMessage_one": "Stai per eliminare la seguente variabile:",
+ "firstConfirmMessage_other": "Stai per eliminare le seguenti variabili:",
+ "firstConfirmMessage_zero": "Nessuna variabile da eliminare:",
+ "title": "Elimina Variabile",
+ "tooltip": "Elimina le variabili selezionate"
+ },
+ "edit": "Modifica Variabile",
+ "export": "Esporta",
+ "exportTooltip": "Esporta le variabili selezionate",
+ "form": {
+ "invalidJson": "JSON non valido",
+ "keyMaxLength": "La chiave può contenere un massimo di 250 caratteri",
+ "keyRequired": "La chiave è obbligatoria",
+ "valueRequired": "Il valore è obbligatorio"
+ },
+ "import": {
+ "button": "Importa",
+ "conflictResolution": "Seleziona la risoluzione dei conflitti delle
variabili",
+ "errorParsingJsonFile": "Errore nell'analisi del file JSON: Carica un
file JSON contenente le variabili (es. {\"key\": \"value\", ...}).",
+ "options": {
+ "fail": {
+ "description": "Fallisce l'importazione se vengono rilevate
variabili esistenti.",
+ "title": "Fallisci"
+ },
+ "overwrite": {
+ "description": "Sovrascrive la variabile in caso di conflitto.",
+ "title": "Sovrascrivi"
+ },
+ "skip": {
+ "description": "Salta l'importazione delle variabili che già
esistono.",
+ "title": "Salta"
+ }
+ },
+ "title": "Importa Variabili",
+ "upload": "Carica un File JSON",
+ "uploadPlaceholder": "Carica un file JSON contenente le variabili (es.
{\"key\": \"value\", ...})"
+ },
+ "noRowsMessage": "Nessuna variabile trovata",
+ "searchPlaceholder": "Cerca Chiavi",
+ "variable_many": "Variabili",
+ "variable_one": "Variabile",
+ "variable_other": "Variabili",
+ "variable_zero": "Nessuna variabile"
+ }
+}
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
new file mode 100644
index 00000000000..c19d3f3c752
--- /dev/null
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/it/assets.json
@@ -0,0 +1,30 @@
+{
+ "consumingDags": "Consuming Dags",
+ "createEvent": {
+ "button": "Create Event",
+ "manual": {
+ "description": "Manually create an Asset Event",
+ "extra": "Asset Event Extra",
+ "label": "Manual"
+ },
+ "materialize": {
+ "description": "Trigger the Dag upstream of this asset",
+ "descriptionWithDag": "Trigger the Dag upstream of this asset:
{{dagName}}",
+ "label": "Materialize",
+ "unpauseDag": "Unpause {{dagName}} on trigger"
+ },
+ "success": {
+ "manualDescription": "Manual asset event creation was successful.",
+ "manualTitle": "Asset Event Created",
+ "materializeDescription": "Upstream Dag {{dagId}} was triggered
successfully.",
+ "materializeTitle": "Materializing Asset"
+ },
+ "title": "Create Asset Event for {{name}}"
+ },
+ "group": "Group",
+ "lastAssetEvent": "Last Asset Event",
+ "name": "Name",
+ "producingTasks": "Producing Tasks",
+ "scheduledDags": "DAG Programmati",
+ "searchPlaceholder": "Search Assets"
+}
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
new file mode 100644
index 00000000000..47b8b64b407
--- /dev/null
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/it/browse.json
@@ -0,0 +1,26 @@
+{
+ "auditLog": {
+ "actions": {
+ "collapseAllExtra": "Collassa tutti i json extra",
+ "expandAllExtra": "Espandi tutti i json extra"
+ },
+ "columns": {
+ "event": "Evento",
+ "extra": "Extra",
+ "user": "Utente",
+ "when": "Quando"
+ },
+ "filters": {
+ "eventType": "Tipo di Evento"
+ },
+ "title": "Registro di Controllo (Logs)"
+ },
+ "xcom": {
+ "columns": {
+ "dag": "DAG",
+ "key": "Chiave",
+ "value": "Valore"
+ },
+ "title": "XCom"
+ }
+}
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
new file mode 100644
index 00000000000..0f8ecb5603d
--- /dev/null
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/it/common.json
@@ -0,0 +1,343 @@
+{
+ "admin": {
+ "Config": "Configurazione",
+ "Connections": "Connessioni",
+ "Plugins": "Plugins",
+ "Pools": "Pools",
+ "Providers": "Provider",
+ "Variables": "Variabili"
+ },
+ "allOperators": "Tutti gli Operatori",
+ "appearance": {
+ "appearance": "Aspetto",
+ "darkMode": "Modalità scura",
+ "lightMode": "Modalità chiara",
+ "systemMode": "Segui impostazioni di sistema"
+ },
+ "asset_many": "Assets",
+ "asset_one": "Asset",
+ "asset_other": "Assets",
+ "asset_zero": "Nessun asset",
+ "assetEvent_many": "Eventi Asset",
+ "assetEvent_one": "Evento Asset",
+ "assetEvent_other": "Eventi Asset",
+ "assetEvent_zero": "Nessun evento asset",
+ "backfill_many": "Backfills",
+ "backfill_one": "Backfill",
+ "backfill_other": "Backfills",
+ "backfill_zero": "Nessun backfill",
+ "browse": {
+ "auditLog": "Registro di Controllo (Logs)",
+ "requiredActions": "Azioni Richieste",
+ "xcoms": "XComs"
+ },
+ "collapseDetailsPanel": "Collassa i Dettagli",
+ "createdAssetEvent_many": "Eventi Asset Creati",
+ "createdAssetEvent_one": "Evento Asset Creato",
+ "createdAssetEvent_other": "Eventi Asset Creati",
+ "createdAssetEvent_zero": "Nessun evento asset creato",
+ "dag_many": "DAGs",
+ "dag_one": "DAG",
+ "dag_other": "DAGs",
+ "dag_zero": "Nessun DAG",
+ "dagDetails": {
+ "catchup": "Catchup",
+ "dagRunTimeout": "Timeout del Run del DAG",
+ "defaultArgs": "Argomenti di Default",
+ "description": "Descrizione",
+ "documentation": "Documentazione del DAG",
+ "fileLocation": "Percorso del File",
+ "hasTaskConcurrencyLimits": "Ha Limiti di Concorrenza dei Task",
+ "lastExpired": "Ultimo Scaduto",
+ "lastParseDuration": "Durata dell'ultimo parsing",
+ "lastParsed": "Ultimo Parsed",
+ "latestDagVersion": "Ultima Versione del DAG",
+ "latestRun": "Ultimo Run del DAG",
+ "maxActiveRuns": "Numero massimo di Runs attive",
+ "maxActiveTasks": "Numero massimo di Tasks attive",
+ "maxConsecutiveFailedDagRuns": "Numero massimo di Runs falliti consecutivi
del DAG",
+ "nextRun": "Prossimo Run",
+ "owner": "Proprietario",
+ "params": "Parametri",
+ "schedule": "Programmazione",
+ "tags": "Tag"
+ },
+ "dagId": "ID del DAG",
+ "dagRun": {
+ "conf": "Conf",
+ "dagVersions": "Versioni del DAG",
+ "dataIntervalEnd": "Data Intervallo Fine",
+ "dataIntervalStart": "Data Intervallo Inizio",
+ "lastSchedulingDecision": "Ultima Decisione di Programmazione",
+ "queuedAt": "In Coda il",
+ "runAfter": "Esegui dopo",
+ "runType": "Tipo di Run",
+ "sourceAssetEvent": "Evento Asset di Origine",
+ "triggeredBy": "Triggered da",
+ "triggeringUser": "Nome Utente che ha Attivato"
+ },
+ "dagRun_many": "Run del DAG",
+ "dagRun_one": "Run del DAG",
+ "dagRun_other": "Run del DAG",
+ "dagRun_zero": "Nessun run del DAG",
+ "dagRunId": "ID del Run del DAG",
+ "dagWarnings": "Avvisi/Errori del DAG",
+ "defaultToGraphView": "Default to vista grafica",
+ "defaultToGridView": "Default to vista griglia",
+ "direction": "Direzione",
+ "docs": {
+ "documentation": "Documentazione",
+ "githubRepo": "Repository GitHub",
+ "restApiReference": "Riferimento API REST"
+ },
+ "duration": "Durata",
+ "endDate": "Data di Fine",
+ "error": {
+ "back": "Indietro",
+ "defaultMessage": "Si è verificato un errore imprevisto",
+ "home": "Home",
+ "notFound": "Pagina non trovata",
+ "title": "Errore"
+ },
+ "expand": {
+ "collapse": "Collassa",
+ "expand": "Espandi",
+ "hotkey": "e",
+ "tooltip": "Premi {{hotkey}} per attivare/disattivare espansione"
+ },
+ "expression": {
+ "all": "Tutti",
+ "and": "E",
+ "any": "Qualunque",
+ "or": "O"
+ },
+ "filters": {
+ "dagDisplayNamePlaceholder": "Filtra per DAG",
+ "keyPlaceholder": "Filtra per chiave XCom",
+ "logicalDateFromPlaceholder": "Data Logica Da",
+ "logicalDateToPlaceholder": "Data Logica A",
+ "mapIndexPlaceholder": "Filtra per Map Index",
+ "runAfterFromPlaceholder": "Esegui Dopo Da",
+ "runAfterToPlaceholder": "Esegui Dopo A",
+ "runIdPlaceholder": "Filtra per ID Run",
+ "taskIdPlaceholder": "Filtra per ID Task",
+ "triggeringUserPlaceholder": "Filtra per utente scatenante"
+ },
+ "logicalDate": "Data Logica",
+ "logout": "Esci",
+ "logoutConfirmation": "Stai per uscire dall'applicazione.",
+ "mapIndex": "Mappa Index",
+ "modal": {
+ "cancel": "Annulla",
+ "confirm": "Conferma",
+ "delete": {
+ "button": "Elimina",
+ "confirmation": "Confermi di voler eliminare {{resourceName}}? Questa
azione non può essere annullata."
+ }
+ },
+ "nav": {
+ "admin": "Amministrazione",
+ "assets": "Asset",
+ "browse": "Sfoglia",
+ "dags": "DAG",
+ "docs": "Documentazione",
+ "home": "Home",
+ "legacyFabViews": "Legacy View",
+ "plugins": "Plugins",
+ "security": "Sicurezza"
+ },
+ "noItemsFound": "Nessun {{modelName}} trovato",
+ "note": {
+ "add": "Aggiungi una nota",
+ "dagRun": "Nota del Run del DAG",
+ "label": "Note",
+ "placeholder": "Aggiungi una nota...",
+ "taskInstance": "Nota dell'Istanza di Task"
+ },
+ "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"
+ },
+ "runId": "ID del Run",
+ "runTypes": {
+ "asset_triggered": "Asset Triggered",
+ "backfill": "Backfill",
+ "manual": "Manuale",
+ "scheduled": "Programmato"
+ },
+ "scroll": {
+ "direction": {
+ "bottom": "In basso",
+ "top": "In alto"
+ },
+ "tooltip": "Premi {{hotkey}} per scorrere a {{direction}}"
+ },
+ "seconds": "{{count}}s",
+ "security": {
+ "actions": "Azioni",
+ "permissions": "Permessi",
+ "resources": "Risorse",
+ "roles": "Ruoli",
+ "users": "Utenti"
+ },
+ "selectLanguage": "Seleziona la Lingua",
+ "showDetailsPanel": "Mostra il Pannello dei Dettagli",
+ "source": {
+ "hide": "Nascondi Sorgente",
+ "hotkey": "s",
+ "show": "Mostra Sorgente"
+ },
+ "sourceAssetEvent_many": "Eventi Asset di Origine",
+ "sourceAssetEvent_one": "Evento Asset di Origine",
+ "sourceAssetEvent_other": "Eventi Asset di Origine",
+ "sourceAssetEvent_zero": "Nessun evento asset di origine",
+ "startDate": "Data di Inizio",
+ "state": "Stato",
+ "states": {
+ "deferred": "In Attesa",
+ "failed": "Fallito",
+ "no_status": "Nessun Stato",
+ "none": "Nessun Stato",
+ "planned": "Pianificato",
+ "queued": "In Coda",
+ "removed": "Rimosso",
+ "restarting": "Riavviato",
+ "running": "In Esecuzione",
+ "scheduled": "Programmato",
+ "skipped": "Saltato",
+ "success": "Successo",
+ "up_for_reschedule": "Da Reschedulare",
+ "up_for_retry": "Da Riavviare",
+ "upstream_failed": "Upstream Fallito"
+ },
+ "table": {
+ "completedAt": "Completato il",
+ "createdAt": "Creato il",
+ "filterByTag": "Filtra DAG per tag",
+ "filterColumns": "Filtra le colonne della tabella",
+ "filterReset_many": "Resetta filtri",
+ "filterReset_one": "Resetta filtro",
+ "filterReset_other": "Resetta filtri",
+ "filterReset_zero": "Nessun filtro da resettare",
+ "from": "Da",
+ "maxActiveRuns": "Numero massimo di Runs attive",
+ "noTagsFound": "Nessun tag trovato",
+ "tagMode": {
+ "all": "Tutti",
+ "any": "Qualunque"
+ },
+ "tagPlaceholder": "Filtra per tag",
+ "to": "A"
+ },
+ "task": {
+ "documentation": "Documentazione del Task",
+ "lastInstance": "Ultima Istanza",
+ "operator": "Operatore",
+ "triggerRule": "Regola di Trigger"
+ },
+ "task_many": "Tasks",
+ "task_one": "Task",
+ "task_other": "Tasks",
+ "task_zero": "Nessun task",
+ "taskGroup": "Gruppo di Task",
+ "taskId": "ID del Task",
+ "taskInstance": {
+ "dagVersion": "Versione del DAG",
+ "executor": "Executor",
+ "executorConfig": "Configurazione dell'Executor",
+ "hostname": "Nome delHost",
+ "maxTries": "Numero massimo di Tentativi",
+ "pid": "PID",
+ "pool": "Pool",
+ "poolSlots": "Slot del Pool",
+ "priorityWeight": "Peso di Priorità",
+ "queue": "Coda",
+ "queuedWhen": "In Coda il",
+ "scheduledWhen": "Programmato il",
+ "triggerer": {
+ "assigned": "Triggerer Assegnato",
+ "class": "Classe del Trigger",
+ "createdAt": "Creato il",
+ "id": "ID del Trigger",
+ "latestHeartbeat": "Ultimo Heartbeat del Trigger",
+ "title": "Info del Trigger"
+ },
+ "unixname": "Nome Unix"
+ },
+ "taskInstance_many": "Istanze di Task",
+ "taskInstance_one": "Istanza di Task",
+ "taskInstance_other": "Istanze di Task",
+ "taskInstance_zero": "Nessuna istanza di task",
+ "timeRange": {
+ "last12Hours": "Ultimi 12 Ore",
+ "last24Hours": "Ultimi 24 Ore",
+ "lastHour": "Ultima Ora",
+ "pastWeek": "Settimana Scorsa"
+ },
+ "timestamp": {
+ "hide": "Nascondi Timestamp",
+ "hotkey": "t",
+ "show": "Mostra Timestamp"
+ },
+ "timezone": "Fuso Orario",
+ "timezoneModal": {
+ "current-timezone": "Ora corrente in",
+ "placeholder": "Seleziona un fuso orario",
+ "title": "Seleziona il Fuso Orario",
+ "utc": "UTC (Tempo Coordinato Universale)"
+ },
+ "toaster": {
+ "bulkDelete": {
+ "error": "Eliminazione in Massa di {{resourceName}} Fallita",
+ "success": {
+ "description": "{{count}} {{resourceName}} sono stati eliminati con
successo. Chiavi: {{keys}}",
+ "title": "Eliminazione in Massa di {{resourceName}} Richiesta Inviata"
+ }
+ },
+ "create": {
+ "error": "Creazione di {{resourceName}} Fallita",
+ "success": {
+ "description": "{{resourceName}} è stato creato con successo.",
+ "title": "Creazione di {{resourceName}} Richiesta Inviata"
+ }
+ },
+ "delete": {
+ "error": "Eliminazione di {{resourceName}} Fallita",
+ "success": {
+ "description": "{{resourceName}} è stato eliminato con successo.",
+ "title": "Eliminazione di {{resourceName}} Richiesta Inviata"
+ }
+ },
+ "import": {
+ "error": "Importazione di {{resourceName}} Fallita",
+ "success": {
+ "description": "{{count}} {{resourceName}} sono stati importati con
successo.",
+ "title": "Importazione di {{resourceName}} Richiesta Inviata"
+ }
+ },
+ "update": {
+ "error": "Aggiornamento di {{resourceName}} Fallita",
+ "success": {
+ "description": "{{resourceName}} è stato aggiornato con successo.",
+ "title": "Aggiornamento di {{resourceName}} Richiesta Inviata"
+ }
+ }
+ },
+ "total": "Totale {{state}}",
+ "triggered": "Triggered",
+ "tryNumber": "Numero di Tentativo",
+ "user": "Utente",
+ "wrap": {
+ "hotkey": "w",
+ "tooltip": "Premi {{hotkey}} per abilitare il wrap",
+ "unwrap": "Disabilita il wrap",
+ "wrap": "Abilita il wrap"
+ }
+}
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
new file mode 100644
index 00000000000..ed4e21766ba
--- /dev/null
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/it/components.json
@@ -0,0 +1,150 @@
+{
+ "backfill": {
+ "affected_many": "{{count}} runs verranno attivati.",
+ "affected_one": "1 run verrà attivato.",
+ "affected_other": "{{count}} runs verranno attivati.",
+ "affected_zero": "Nessun run verrà attivato.",
+ "affectedNone": "Nessun run corrispondente ai criteri selezionati.",
+ "allRuns": "Tutti i Run",
+ "backwards": "Run all'indietro",
+ "dateRange": "Intervallo di Date",
+ "dateRangeFrom": "Da",
+ "dateRangeTo": "A",
+ "errorStartDateBeforeEndDate": "La Data di Inizio deve essere precedente
alla Data di Fine",
+ "maxRuns": "Numero massimo di Runs attive",
+ "missingAndErroredRuns": "Run Mancanti ed Errati",
+ "missingRuns": "Run Mancanti",
+ "reprocessBehavior": "Comportamento di Reprocesso",
+ "run": "Correre Backfill",
+ "selectDescription": "Esegui questo DAG per un intervallo di date",
+ "selectLabel": "Backfill",
+ "title": "Correre Backfill",
+ "toaster": {
+ "success": {
+ "description": "Backfill jobs sono stati attivati con successo.",
+ "title": "Backfill generato"
+ }
+ },
+ "tooltip": "Backfill richiede un programma",
+ "unpause": "Sospendi {{dag_display_name}} al trigger",
+ "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."
+ }
+ },
+ "banner": {
+ "backfillInProgress": "Backfill in corso",
+ "cancel": "Annulla backfill",
+ "pause": "Sospendi backfill",
+ "unpause": "Sospendi backfill"
+ },
+ "clipboard": {
+ "copy": "Copia"
+ },
+ "close": "Chiudi",
+ "configForm": {
+ "advancedOptions": "Opzioni Avanzate",
+ "configJson": "Configurazione JSON",
+ "invalidJson": "Formato JSON non valido: {{errorMessage}}"
+ },
+ "dagWarnings": {
+ "error_many": "{{count}} Errori",
+ "error_one": "1 Errore",
+ "error_other": "{{count}} Errori",
+ "error_zero": "Nessun errore",
+ "errorAndWarning": "1 Errore e {{warningText}}",
+ "warning_many": "{{count}} Avvisi",
+ "warning_one": "1 Avviso",
+ "warning_other": "{{count}} Avvisi",
+ "warning_zero": "Nessun avviso"
+ },
+ "durationChart": {
+ "duration": "Durata (secondi)",
+ "lastDagRun_many": "Ultimi {{count}} Run del DAG",
+ "lastDagRun_one": "Ultimo Run del DAG",
+ "lastDagRun_other": "Ultimi {{count}} Run del DAG",
+ "lastDagRun_zero": "Nessun run del DAG",
+ "lastTaskInstance_many": "Ultime {{count}} Istanze di Task",
+ "lastTaskInstance_one": "Ultima Istanza di Task",
+ "lastTaskInstance_other": "Ultime {{count}} Istanze di Task",
+ "lastTaskInstance_zero": "Nessuna istanza di task",
+ "queuedDuration": "Durata in coda",
+ "runAfter": "Esegui dopo",
+ "runDuration": "Durata del Run"
+ },
+ "fileUpload": {
+ "files_many": "{{count}} file",
+ "files_one": "1 file",
+ "files_other": "{{count}} file",
+ "files_zero": "Nessun file"
+ },
+ "flexibleForm": {
+ "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",
+ "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.",
+ "validationErrorRequired": "Questo campo è obbligatorio"
+ },
+ "graph": {
+ "directionDown": "Da Superiore a Inferiore",
+ "directionLeft": "Da Destra a Sinistra",
+ "directionRight": "Da Sinistra a Destra",
+ "directionUp": "Da Inferiore a Superiore",
+ "downloadImage": "Scarica l'immagine del grafico",
+ "downloadImageError": "Impossibile scaricare l'immagine del grafico.",
+ "downloadImageErrorTitle": "Scaricamento Fallito",
+ "otherDagRuns": "+Altri Run del DAG",
+ "taskCount_many": "{{count}} Tasks",
+ "taskCount_one": "{{count}} Task",
+ "taskCount_other": "{{count}} Tasks",
+ "taskCount_zero": "Nessun task",
+ "taskGroup": "Task Group"
+ },
+ "limitedList": "+{{count}} altro",
+ "logs": {
+ "file": "File",
+ "location": "linea {{line}} in {{name}}"
+ },
+ "reparseDag": "Reparse Dag",
+ "sortedAscending": "ordinato in ordine crescente",
+ "sortedDescending": "ordinato in ordine decrescente",
+ "sortedUnsorted": "non ordinato",
+ "taskTries": "Tentativi di Task",
+ "toggleCardView": "Mostra la vista in card",
+ "toggleTableView": "Mostra la vista in tabella",
+ "triggerDag": {
+ "button": "Trigger",
+ "loading": "Caricamento informazioni del DAG...",
+ "loadingFailed": "Impossibile caricare le informazioni del DAG. Per
favore, riprova.",
+ "runIdHelp": "Opzionale - verrà generato se non fornito",
+ "selectDescription": "Triggera un singolo run di questo DAG",
+ "selectLabel": "Singolo Run",
+ "title": "Trigger del DAG",
+ "toaster": {
+ "success": {
+ "description": "Il run del DAG è stato attivato con successo.",
+ "title": "Run del DAG attivato"
+ }
+ },
+ "unpause": "Sospendi {{dagDisplayName}} al trigger"
+ },
+ "trimText": {
+ "details": "Dettagli",
+ "empty": "Vuoto",
+ "noContent": "Nessun contenuto disponibile."
+ },
+ "versionDetails": {
+ "bundleLink": "Link del Bundle",
+ "bundleName": "Nome del Bundle",
+ "bundleVersion": "Versione del Bundle",
+ "createdAt": "Creato il",
+ "versionId": "ID della Versione"
+ },
+ "versionSelect": {
+ "dagVersion": "Versione del DAG",
+ "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
new file mode 100644
index 00000000000..24dbeba3a07
--- /dev/null
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/it/dag.json
@@ -0,0 +1,162 @@
+{
+ "allRuns": "Tutti i Run",
+ "blockingDeps": {
+ "dependency": "Dipendenza",
+ "reason": "Motivo",
+ "title": "Dipendenze che bloccano la Task da essere pianificata"
+ },
+ "calendar": {
+ "daily": "Giornaliero",
+ "hourly": "Orario",
+ "legend": {
+ "less": "Meno",
+ "more": "Più"
+ },
+ "navigation": {
+ "nextMonth": "Mese successivo",
+ "nextYear": "Anno successivo",
+ "previousMonth": "Mese precedente",
+ "previousYear": "Anno precedente"
+ },
+ "noData": "Nessun dato disponibile",
+ "noRuns": "Nessun run",
+ "totalRuns": "Run Totali",
+ "week": "Settimana {{weekNumber}}",
+ "weekdays": {
+ "friday": "Ven",
+ "monday": "Lun",
+ "saturday": "Sab",
+ "sunday": "Dom",
+ "thursday": "Gio",
+ "tuesday": "Mar",
+ "wednesday": "Mer"
+ }
+ },
+ "code": {
+ "bundleUrl": "URL del Bundle",
+ "noCode": "Nessun Codice Trovato",
+ "parseDuration": "Durata del parsing",
+ "parsedAt": "Parsato il:"
+ },
+ "extraLinks": "Extra Links",
+ "grid": {
+ "buttons": {
+ "resetToLatest": "Resetta al più recente",
+ "toggleGroup": "Attiva/Disattiva gruppo"
+ }
+ },
+ "header": {
+ "buttons": {
+ "advanced": "Avanzato",
+ "dagDocs": "Documentazione DAG"
+ }
+ },
+ "logs": {
+ "allLevels": "Tutti i Livelli di Log",
+ "allSources": "Tutte le Fonti",
+ "critical": "CRITICO",
+ "debug": "DEBUG",
+ "error": "ERRORE",
+ "fullscreen": {
+ "button": "Schermo Intero",
+ "tooltip": "Premi {{hotkey}} per schermo intero"
+ },
+ "info": "INFO",
+ "noTryNumber": "Nessun numero di tentativo",
+ "settings": "Impostazioni Log",
+ "viewInExternal": "Visualizza i logs in {{name}} (tentativo {{attempt}})",
+ "warning": "AVVISO"
+ },
+ "navigation": {
+ "navigation": "Navigazione: Shift+{{arrow}}",
+ "toggleGroup": "Attiva/Disattiva gruppo: Spazio"
+ },
+ "overview": {
+ "buttons": {
+ "failedRun_many": "Run falliti",
+ "failedRun_one": "Run fallito",
+ "failedRun_other": "Run falliti",
+ "failedRun_zero": "Nessun Run fallito",
+ "failedTask_many": "Task falliti",
+ "failedTask_one": "Task fallito",
+ "failedTask_other": "Task falliti",
+ "failedTask_zero": "Nessun Task fallito",
+ "failedTaskInstance_many": "Istanze di Task fallite",
+ "failedTaskInstance_one": "Istanza di Task fallita",
+ "failedTaskInstance_other": "Istanze di Task fallite",
+ "failedTaskInstance_zero": "Nessuna istanza di Task fallita"
+ },
+ "charts": {
+ "assetEvent_many": "Eventi di Asset Creati",
+ "assetEvent_one": "Evento di Asset Creato",
+ "assetEvent_other": "Eventi di Asset Creati",
+ "assetEvent_zero": "Nessun evento di asset creato"
+ },
+ "failedLogs": {
+ "hideLogs": "Nascondi Logs",
+ "showLogs": "Mostra Logs",
+ "title": "Logs delle Task fallite recenti",
+ "viewFullLogs": "Visualizza i logs completi"
+ }
+ },
+ "panel": {
+ "buttons": {
+ "options": "Opzioni",
+ "showGantt": "Mostra Gantt",
+ "showGraphShortcut": "Mostra Grafico (Premi g)",
+ "showGridShortcut": "Mostra Griglia (Premi g)"
+ },
+ "dagRuns": {
+ "label": "Numero di Run del DAG"
+ },
+ "dependencies": {
+ "label": "Dipendenze",
+ "options": {
+ "allDagDependencies": "Tutte le Dipendenze del DAG",
+ "externalConditions": "Condizioni Esterne",
+ "onlyTasks": "Solo le Task"
+ },
+ "placeholder": "Dipendenze"
+ },
+ "graphDirection": {
+ "label": "Direzione del Grafico"
+ }
+ },
+ "paramsFailed": "Impossibile caricare i parametri",
+ "parse": {
+ "toaster": {
+ "error": {
+ "description": "La richiesta di parsing del DAG è fallita. Potrebbero
esserci richieste di parsing in sospeso da processare.",
+ "title": "Parsing del DAG fallito"
+ },
+ "success": {
+ "description": "Il DAG dovrebbe essere riparsat presto.",
+ "title": "Richiesta di riparsing inviata con successo"
+ }
+ }
+ },
+ "tabs": {
+ "assetEvents": "Eventi di Asset",
+ "auditLog": "Registro di Controllo (Logs)",
+ "backfills": "Backfills",
+ "calendar": "Calendario",
+ "code": "Codice",
+ "details": "Dettagli",
+ "logs": "Logs",
+ "mappedTaskInstances_many": "Istanze di Task [{{count}}]",
+ "mappedTaskInstances_one": "Istanza di Task [{{count}}]",
+ "mappedTaskInstances_other": "Istanze di Task [{{count}}]",
+ "mappedTaskInstances_zero": "Nessuna istanza di task mappata",
+ "overview": "Panoramica",
+ "renderedTemplates": "Template Renderizzato",
+ "requiredActions": "Azioni Richieste",
+ "runs": "Run",
+ "taskInstances": "Istanze di Task",
+ "tasks": "Tasks",
+ "xcom": "XCom"
+ },
+ "taskGroups": {
+ "collapseAll": "Collassa tutti i gruppi di task",
+ "expandAll": "Espandi tutti i gruppi di task"
+ }
+}
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
new file mode 100644
index 00000000000..23443f1ce67
--- /dev/null
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/it/dags.json
@@ -0,0 +1,97 @@
+{
+ "assetSchedule": "{{count}} di {{total}} assets aggiornati",
+ "dagActions": {
+ "delete": {
+ "button": "Elimina DAG",
+ "warning": "Questo rimuoverà tutti i metadati relativi al DAG, compresi
i Run e le Task."
+ }
+ },
+ "favoriteDag": "DAG Preferito",
+ "filters": {
+ "allRunTypes": "Tutti i Tipi di Run",
+ "allStates": "Tutti gli Stati",
+ "favorite": {
+ "all": "Tutti",
+ "favorite": "Preferito",
+ "unfavorite": "Rimuovi dai preferiti"
+ },
+ "paused": {
+ "active": "Attivo",
+ "all": "Tutti",
+ "paused": "In Pausa"
+ },
+ "runIdPatternFilter": "Cerca DAG Runs",
+ "triggeringUserNameFilter": "Cerca per Utente che ha Attivato"
+ },
+ "ownerLink": "Link dell'Owner per {{owner}}",
+ "runAndTaskActions": {
+ "affectedTasks": {
+ "noItemsFound": "Nessuna task trovata.",
+ "title": "Task interessati: {{count}}"
+ },
+ "clear": {
+ "button": "Pulisci {{type}}",
+ "buttonTooltip": "Premi shift+c per pulire",
+ "error": "Impossibile pulire {{type}}",
+ "title": "Pulisci {{type}}"
+ },
+ "delete": {
+ "button": "Elimina {{type}}",
+ "dialog": {
+ "resourceName": "{{type}} {{id}}",
+ "title": "Elimina {{type}}",
+ "warning": "Questo rimuoverà tutti i metadati relativi a {{type}}."
+ },
+ "error": "Errore nell'eliminazione di {{type}}",
+ "success": {
+ "description": "La richiesta di eliminazione di {{type}} è stata
completata con successo.",
+ "title": "{{type}} Eliminato con Successo"
+ }
+ },
+ "markAs": {
+ "button": "Marca {{type}} come...",
+ "buttonTooltip": {
+ "failed": "Premi shift+f per marcare come fallito",
+ "success": "Premi shift+s per marcare come successo"
+ },
+ "title": "Marca {{type}} come {{state}}"
+ },
+ "options": {
+ "downstream": "Downstream",
+ "existingTasks": "Pulisci le task esistenti",
+ "future": "Futuro",
+ "onlyFailed": "Pulisci solo le task fallite",
+ "past": "Passato",
+ "queueNew": "Inserisci nuove task",
+ "runOnLatestVersion": "Esegui con l'ultima versione del bundle",
+ "upstream": "Upstream"
+ }
+ },
+ "search": {
+ "advanced": "Ricerca Avanzata",
+ "clear": "Pulisci la ricerca",
+ "dags": "Cerca DAG",
+ "hotkey": "+K",
+ "tasks": "Cerca Task"
+ },
+ "sort": {
+ "displayName": {
+ "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)"
+ },
+ "lastRunState": {
+ "asc": "Ordina per Stato del Run più Recente (A-Z)",
+ "desc": "Ordina per Stato del Run più Recente (Z-A)"
+ },
+ "nextDagRun": {
+ "asc": "Ordina per Next DAG Run (Prima-Ultimo)",
+ "desc": "Ordina per Next DAG Run (Ultimo-Prima)"
+ },
+ "placeholder": "Ordina per"
+ },
+ "unfavoriteDag": "Rimuovi DAG dai Preferiti"
+}
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
new file mode 100644
index 00000000000..12a236e561b
--- /dev/null
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/it/dashboard.json
@@ -0,0 +1,49 @@
+{
+ "favorite": {
+ "favoriteDags_many": "{{count}} DAGs preferiti",
+ "favoriteDags_one": "Primo {{count}} DAG preferito",
+ "favoriteDags_other": "Primi {{count}} DAGs preferiti",
+ "favoriteDags_zero": "Nessun DAG preferito",
+ "noDagRuns": "Non ci sono ancora DagRun per questo dag.",
+ "noFavoriteDags": "Nessun preferito ancora. Clicca sull'icona stella
accanto a un Dag nella lista per aggiungerlo ai tuoi preferiti."
+ },
+ "group": "Gruppo",
+ "health": {
+ "dagProcessor": "Processore DAG",
+ "health": "Salute",
+ "healthy": "Sano",
+ "lastHeartbeat": "Ultimo Heartbeat",
+ "metaDatabase": "Database di metadati",
+ "scheduler": "Pianificatrice",
+ "status": "Stato",
+ "triggerer": "Triggerer",
+ "unhealthy": "Malato"
+ },
+ "history": "Cronologia",
+ "importErrors": {
+ "dagImportError_many": "Errori di Importazione DAG",
+ "dagImportError_one": "Errore di Importazione DAG",
+ "dagImportError_other": "Errori di Importazione DAG",
+ "dagImportError_zero": "Nessun errore di importazione DAG",
+ "searchByFile": "Cerca per file",
+ "timestamp": "Timestamp"
+ },
+ "managePools": "Gestisci Pools",
+ "noAssetEvents": "Nessun evento di asset trovato.",
+ "poolSlots": "Slot del Pool",
+ "sortBy": {
+ "newestFirst": "Più Recenti",
+ "oldestFirst": "Più Vecchi"
+ },
+ "source": "Fonte",
+ "stats": {
+ "activeDags": "DAG Attivi",
+ "failedDags": "DAG Falliti",
+ "queuedDags": "DAG In Attesa",
+ "requiredActions": "Azioni Richieste",
+ "runningDags": "DAG In Esecuzione",
+ "stats": "Statistiche"
+ },
+ "uri": "Uri",
+ "welcome": "Benvenuto"
+}
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
new file mode 100644
index 00000000000..5a76d6035d7
--- /dev/null
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/it/hitl.json
@@ -0,0 +1,38 @@
+{
+ "filters": {
+ "response": {
+ "all": "Tutte",
+ "pending": "In attesa",
+ "received": "Ricevute"
+ }
+ },
+ "requiredAction_many": "Azioni richieste",
+ "requiredAction_one": "Azione richiesta",
+ "requiredAction_other": "Azioni richieste",
+ "requiredAction_zero": "Nessuna azione richiesta",
+ "requiredActionCount_many": "Azioni richieste ({{count}})",
+ "requiredActionCount_one": "Azione richiesta ({{count}})",
+ "requiredActionCount_other": "Azioni richieste ({{count}})",
+ "requiredActionCount_zero": "Nessuna azione richiesta",
+ "requiredActionState": "Stato dell'Azione richiesta",
+ "response": {
+ "error": "Errore nella Risposta",
+ "optionsDescription": "Scegli le tue opzioni per questa istanza di task",
+ "optionsLabel": "Opzioni",
+ "received": "Risposta ricevuta il ",
+ "respond": "Rispondi",
+ "success": "Risposta di {{taskId}} riuscita",
+ "title": "Istanza di Task Umana - {{taskId}}"
+ },
+ "state": {
+ "approvalReceived": "Approvazione ricevuta",
+ "approvalRequired": "Approvazione richiesta",
+ "choiceReceived": "Scelta ricevuta",
+ "choiceRequired": "Scelta richiesta",
+ "noResponseReceived": "Nessuna risposta ricevuta",
+ "rejectionReceived": "Rifiuto ricevuto",
+ "responseReceived": "Risposta ricevuta",
+ "responseRequired": "Risposta richiesta"
+ },
+ "subject": "Oggetto"
+}
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/it/tasks.json
b/airflow-core/src/airflow/ui/public/i18n/locales/it/tasks.json
new file mode 100644
index 00000000000..fe9b2b2c83f
--- /dev/null
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/it/tasks.json
@@ -0,0 +1,10 @@
+{
+ "mapped": "Mappato",
+ "notMapped": "Non mappato",
+ "retries": "Tentativi",
+ "searchTasks": "Cerca attività",
+ "selectMapped": "Seleziona mappato",
+ "selectOperator": "Seleziona operatore",
+ "selectRetryValues": "Seleziona valori di Retry",
+ "selectTriggerRules": "Seleziona regole di Trigger"
+}
diff --git a/airflow-core/src/airflow/ui/src/i18n/config.ts
b/airflow-core/src/airflow/ui/src/i18n/config.ts
index f4d2d07e230..671f74f6212 100644
--- a/airflow-core/src/airflow/ui/src/i18n/config.ts
+++ b/airflow-core/src/airflow/ui/src/i18n/config.ts
@@ -31,6 +31,7 @@ export const supportedLanguages = [
{ code: "he", name: "עברית" },
{ code: "hi", name: "हिन्दी" },
{ code: "hu", name: "Magyar" },
+ { code: "it", name: "Italiano" },
{ code: "ko", name: "한국어" },
{ code: "nl", name: "Nederlands" },
{ code: "pl", name: "Polski" },
diff --git a/dev/i18n/check_translations_completeness.py
b/dev/i18n/check_translations_completeness.py
index f2469a3b425..0386aaa3c47 100755
--- a/dev/i18n/check_translations_completeness.py
+++ b/dev/i18n/check_translations_completeness.py
@@ -59,6 +59,7 @@ PLURAL_SUFFIXES = {
"he": ["_one", "_two", "_other"],
"hi": MOST_COMMON_PLURAL_SUFFIXES,
"hu": MOST_COMMON_PLURAL_SUFFIXES,
+ "it": ["_zero", "_one", "_many", "_other"],
"ko": ["_other"],
"nl": MOST_COMMON_PLURAL_SUFFIXES,
"pl": ["_one", "_few", "_many", "_other"],