Переглянути джерело

feat(locale): add it locale

David Z 2 роки тому
батько
коміт
6f12bc733f

+ 1 - 0
src/lib/dayjs.js

@@ -4,6 +4,7 @@ import 'dayjs/locale/zh';
 import 'dayjs/locale/zh-tw';
 import 'dayjs/locale/vi';
 import 'dayjs/locale/fr';
+import 'dayjs/locale/it';
 
 dayjs.extend(relativeTime);
 

+ 762 - 0
src/locales/it/blocks.json

@@ -0,0 +1,762 @@
+{
+  "collection": {
+    "blocks": {
+      "export-result": {
+        "name": "Esporta risultato",
+        "description": "Esporta il risultato della raccolta come JSON"
+      }
+    }
+  },
+  "workflow": {
+    "blocks": {
+      "base": {
+        "title": "Blocchi",
+        "moveToGroup": "Sposta il blocco nel gruppo di blocchi",
+        "selector": "Selettore elemento",
+        "selectorOptions": "Opzioni del selettore",
+        "timeout": "Timeout (millisecondi)",
+        "noPermission": "Automa non ha permessi sufficienti per eseguire questa azione",
+        "grantPermission": "Autorizza",
+        "action": "Azione",
+        "element": {
+          "select": "Seleziona un elemento",
+          "verify": "Verifica il selettore"
+        },
+        "settings": {
+          "title": "Impostazioni del blocco",
+          "line": {
+            "title": "Linee",
+            "label": "Etichetta",
+            "animated": "Animato",
+            "select": "Seleziona linea",
+            "to": "Linea al blocco {name}",
+            "lineColor": "Colore"
+          }
+        },
+        "toggle": {
+          "enable": "Abilita blocco",
+          "disable": "Disabilita blocco"
+        },
+        "onError": {
+          "info": "Le regole verranno applicate al verificarsi di un errore sul blocco",
+          "button": "In caso di errore",
+          "title": "Al verificarsi di un errore",
+          "retry": "Ritenta l'azione",
+          "fallbackTitle": "Verrà eseguito al verificarsi di un errore nel blocco",
+          "times": {
+            "name": "Volte",
+            "description": "Il numero di volte in cui riprovare l'azione"
+          },
+          "interval": {
+            "name": "Intervallo",
+            "description": "L'intervallo di tempo da attendere tra ogni tentativo",
+            "second": "secondo/i"
+          },
+          "toDo": {
+            "error": "Lancia un errore",
+            "continue": "Continua l'esecuzione",
+            "fallback": "Esegui il fallback",
+            "restart": "Riavvia il flusso"
+          },
+          "insertData": {
+            "name": "Inserisci dati"
+          }
+        },
+        "table": {
+          "checkbox": "Inserisci in tabella",
+          "select": "Seleziona colonna",
+          "extraRow": {
+            "checkbox": "Aggiungi riga extra",
+            "placeholder": "Valore",
+            "title": "Valore della riga extra"
+          }
+        },
+        "findElement": {
+          "placeholder": "Trova elemento per",
+          "options": {
+            "cssSelector": "Selettore CSS",
+            "xpath": "XPath"
+          }
+        },
+        "markElement": {
+          "title": "Ogni elemento verrà selezionato una volta sola",
+          "text": "Contrassegna l'elemento"
+        },
+        "multiple": {
+          "title": "Seleziona più elementi",
+          "text": "Multipli"
+        },
+        "waitSelector": {
+          "title": "Attendi il selettore",
+          "timeout": "Timeout del selettore (ms)"
+        },
+        "downloads": {
+          "onConflict": {
+            "uniquify": "Diversifica",
+            "overwrite": "Sovrascrivi",
+            "prompt": "Visualizza"
+          }
+        }
+      },
+      "wait-connections": {
+        "name": "Attendi connessioni",
+        "description": "Attendi tutte le connessioni prima di passare al blocco successivo",
+        "specificFlow": "Continua solo un flusso specifico",
+        "selectFlow": "Seleziona flusso"
+      },
+      "cookie": {
+        "name": "Cookie",
+        "description": "Ottieni, imposta o rimuovi cookie",
+        "types": {
+          "get": "Ottieni cookie",
+          "set": "Imposta cookie",
+          "remove": "Rimuovi cookie",
+          "getAll": "Ottieni tutti i cookie"
+        }
+      },
+      "note": {
+        "name": "Annotazioni"
+      },
+      "slice-variable": {
+        "name": "Taglia variabile",
+        "description": "Estrae una sezione del valore di una variabile",
+        "start": "Indice di inizio",
+        "end": "Indice di fine"
+      },
+      "workflow-state": {
+        "name": "Stato workflow",
+        "description": "Gestisci gli stati dei workflow",
+        "actions": {
+          "stop": "Interrompi i workflow"
+        }
+      },
+      "regex-variable": {
+        "name": "Variabile RegEx",
+        "description": "Confronta il valore di una variabile con un'espressione regolare"
+      },
+      "data-mapping": {
+        "source": "Sorgente",
+        "destination": "Destinazione",
+        "name": "Mappatura dati",
+        "edit": "Modifica mappa dei dati",
+        "dataSource": "Sorgente dei dati",
+        "description": "Mappa i dati di una variabile o di una tabella",
+        "addSource": "Aggiungi sorgente",
+        "addDestination": "Aggiungi destinazione"
+      },
+      "sort-data": {
+        "name": "Ordina dati",
+        "description": "Ordina gli elementi dei dati",
+        "property": "Ordina per proprietà dell'elemento",
+        "addProperty": "Aggiungi proprietà"
+      },
+      "increase-variable": {
+        "name": "Incrementa variabile",
+        "description": "Incrementa il valore di una variabile di una quantità specifica",
+        "increase": "Incrementa di"
+      },
+      "notification": {
+        "name": "notifica",
+        "description": "Visualizza una notifica",
+        "title": "Titolo",
+        "message": "Messaggio",
+        "imageUrl": "URL dell'immagine (opzionale)",
+        "iconUrl": "URL dell'icona (opzionale)"
+      },
+      "delete-data": {
+        "name": "Elimina dati",
+        "description": "Elimina tabella o dati variabili",
+        "from": "Dati da",
+        "allColumns": "[Tutte le colonne]"
+      },
+      "log-data": {
+        "name": "Ottieni dati di log",
+        "description": "Ottieni i dati dei log più recenti di un workflow",
+        "data": "Dati di log"
+      },
+      "tab-url": {
+        "name": "Ottieni URL scheda",
+        "description": "Ottieni l'URL della scheda",
+        "select": "Seleziona scheda",
+        "types": {
+          "active-tab": "Scheda attiva",
+          "all": "Tutte le schede"
+        }
+      },
+      "reload-tab": {
+        "name": "Ricarica scheda",
+        "description": "Ricarica la scheda attiva"
+      },
+      "press-key": {
+        "name": "Premi tasto",
+        "description": "Premi un tasto o una combinazione",
+        "target": "Elemento target (opzionale)",
+        "key": "Tasto",
+        "detect": "Rileva tasto",
+        "actions": {
+          "press-key": "Premi un tasto",
+          "multiple-keys": "Premi una combinazione di tasti"
+        }
+      },
+      "save-assets": {
+        "name": "Salva risorse",
+        "description": "Salva le risorse (immagine, video, audio o file) da un elemento o URL",
+        "filename": "Nome file (opzionale)",
+        "contentTypes": {
+          "title": "Tipo",
+          "element": "Elemento multimediale (immagine, audio o video)",
+          "url": "URL"
+        }
+      },
+      "handle-dialog": {
+        "name": "Gestisci dialogo",
+        "description": "Accetta o chiude una finestra di dialogo avviata da JavaScript (alert, confirm, prompt o onbeforeunload)",
+        "accept": "Accetta finestra di dialogo",
+        "promptText": {
+          "label": "Testo del prompt (opzionale)",
+          "description": "Il testo da inserire nella finestra di dialogo del prompt prima di accettare"
+        }
+      },
+      "handle-download": {
+        "name": "Gestici download",
+        "description": "Gestisci il file da scaricare",
+        "timeout": "Timeout (millisecondi)",
+        "noPermission": "Automa non dispone del permesso per accedere ai download",
+        "onConflict": "In caso di conflitto",
+        "waitFile": "Attendi il download del file"
+      },
+      "insert-data": {
+        "name": "Inserisci dati",
+        "description": "Inserisci dati in una tabella o variabile"
+      },
+      "clipboard": {
+        "name": "Appunti",
+        "description": "Ottieni il testo copiato dagli appunti",
+        "data": "Dati degli appunti",
+        "noPermission": "Automa non dispone del permesso per accedere agli appunti",
+        "grantPermission": "Autorizza",
+        "copySelection": "Copia il testo selezionato sulla pagina",
+        "types": {
+          "get": "Ottieni i dati degli appunti",
+          "insert": "Inserisci testo negli appunti"
+        }
+      },
+      "hover-element": {
+        "name": "Hover elemento",
+        "description": "Passa il mouse sopra un elemento"
+      },
+      "create-element": {
+        "name": "Crea elemento",
+        "description": "Crea un elemento da inserire nella pagina",
+        "edit": "Modifica elemento",
+        "wrap": "Avvolgi l'elemento dentro",
+        "insertEl": {
+          "title": "Inserisci elemento",
+          "items": {
+            "before": "Come first child",
+            "after": "Come last child",
+            "next-sibling": "Come next sibling",
+            "prev-sibling": "Come previous sibling",
+            "replace": "Sostituisci l'elemento target"
+          }
+        }
+      },
+      "upload-file": {
+        "name": "Carica file",
+        "description": "Carica un file in un elemento <input type=\"file\">",
+        "filePath": "URL o percorso del file",
+        "addFile": "Aggiungi file",
+        "onlyURL": "Nel browser Firefox è supportato solo il caricamento di file da un URL",
+        "requirement": "Leggi i requisiti prima di usare questo blocco",
+        "noFileAccess": "Automa non ha accesso ai file"
+      },
+      "browser-event": {
+        "name": "Evento browser",
+        "description": "Esegue il blocco successivo quando si verifica l'evento specificato",
+        "events": "Eventi",
+        "timeout": "Timeout (millisecondi)",
+        "activeTabLoaded": "Scheda attiva",
+        "setAsActiveTab": "Imposta come scheda attiva"
+      },
+      "blocks-group-2": {
+        "name": "@:workflow.blocks.blocks-group.name 2",
+        "description": "@:workflow.blocks.blocks-group.description"
+      },
+      "blocks-group": {
+        "name": "Gruppo blocchi",
+        "groupName": "Nome gruppo",
+        "description": "Raggruppa dei blocchi insieme",
+        "dropText": "Trascina e rilascia un blocco qui",
+        "cantAdd": "Non è possibile aggiungere il blocco \"{blockName}\" al gruppo"
+      },
+      "trigger": {
+        "name": "Trigger",
+        "description": "Blocco da cui inizierà l'esecuzione del workflow",
+        "addTime": "Aggiungi l'ora",
+        "selectDay": "Seleziona il giorno",
+        "timeExist": "Hai già aggiunto un trigger alle ore {time} del giorno {day}",
+        "fixedDelay": "Delay fisso",
+        "contextMenus": {
+          "noPermission": "Questo trigger richiede il permesso \"contextMenus\" per funzionare",
+          "grantPermission": "Autorizza",
+          "appearIn": "Apparirà in",
+          "contextName": "Nome del workflow nel menu contestuale"
+        },
+        "days": [
+          "Domenica",
+          "Lunedì",
+          "Martedì",
+          "Mercoledì",
+          "Giovedì",
+          "Venerdì",
+          "Sabato"
+        ],
+        "useRegex": "Usa regex",
+        "shortcut": {
+          "tooltip": "Registra scorciatoia",
+          "stopRecord": "Termina registrazione",
+          "checkboxTitle": "Esegui la scorciatoia da tastiera anche all'interno di ​​un elemento di input",
+          "checkbox": "Rileva anche negli input",
+          "note": "Nota: la scorciatoia da tastiera funziona solo mentre si è su una pagina web"
+        },
+        "forms": {
+          "triggerWorkflow": "Attiva workflow",
+          "interval": "Intervallo (minuti)",
+          "delay": "Delay (minuti)",
+          "date": "Data",
+          "time": "Ora",
+          "url": "URL o Regex",
+          "shortcut": "Scorciatoia",
+          "cron-expression": "Espressione Cron"
+        },
+        "element-change": {
+          "target": "Seleziona elemento da osservare",
+          "optionsInfo": "Quale variazione dell'elemento attiverà il workflow",
+          "targetWebsite": "Il Match Pattern del sito web in cui si trova l'elemento target (clicca per vedere più esempi di Match Pattern)",
+          "baseEl": {
+            "title": "Elemento base (opzionale)",
+            "description": "Automa ricomincerà ad osservare l'elemento target quando questo elemento cambia"
+          },
+          "subtree": {
+            "title": "Includi sottoalbero",
+            "description": "Estendi il monitoraggio all'intero sottoalbero dell'elemento target"
+          },
+          "childList": {
+            "title": "Elenco elementi figlio",
+            "description": "Monitora l'aggiunta di nuovi elementi figlio o la rimozione di quelli esistenti"
+          },
+          "attributes": {
+            "title": "Attributi",
+            "description": "Osserva le modifiche ai valori degli attributi dell'elemento target"
+          },
+          "attributeFilter": {
+            "title": "Filtro attributi",
+            "separate": "Usa le virgole (,) per separare i nomi degli attributi",
+            "description": "Monitora solo attributi specifici (lascia vuoto per monitorare tutti)"
+          },
+          "characterData": {
+            "title": "Character data",
+            "description": "Monitora modifiche ai character data/testo all'interno dell'elemento target"
+          }
+        },
+        "items": {
+          "manual": "Manualmente",
+          "interval": "Intervallo",
+          "cron-job": "Cron job",
+          "date": "In una data specifica",
+          "context-menu": "Menu contestuale",
+          "element-change": "Alla variazione di un elemento",
+          "specific-day": "In un giorno specifico",
+          "visit-web": "Quando si visita un sito web",
+          "on-startup": "All'avvio del browser",
+          "keyboard-shortcut": "Scorciatoia da tastiera"
+        }
+      },
+      "execute-workflow": {
+        "name": "Esegui workflow",
+        "overwriteNote": "Questo sovrascriverà i dati globali del workflow selezionato",
+        "select": "Seleziona workflow",
+        "executeId": "Esegui ID (opzionale)",
+        "description": "",
+        "insertAllVars": "Usa tutte le variabili del workflow corrente",
+        "insertVars": "Inserisci le variabili del workflow corrente",
+        "useCommas": "Usa le virgole per separare i nomi delle variabili"
+      },
+      "google-sheets": {
+        "name": "Google Sheets",
+        "description": "Leggi o aggiorna dati di Google Sheets",
+        "previewData": "Anteprima dei dati",
+        "firstRow": "Usa la prima riga come chiavi",
+        "keysAsFirstRow": "Usa le chiavi come prima riga",
+        "insertData": "Inserisci dati",
+        "valueInputOption": "Opzione di immissione del valore",
+        "insertDataOption": "Opzione di inserimento dati",
+        "rangeToSearch": "Intervallo da ricercare",
+        "dataFrom": {
+          "label": "Dati da",
+          "options": {
+            "data-columns": "Tabella",
+            "custom": "Personalizzato"
+          }
+        },
+        "refKey": {
+          "label": "Chiave di riferimento (opzionale)",
+          "placeholder": "Nome chiave"
+        },
+        "spreadsheetId": {
+          "label": "ID foglio di calcolo",
+          "link": "Scopri come ottenere l'ID del foglio di calcolo"
+        },
+        "range": {
+          "label": "Intervallo",
+          "link": "Clicca per vedere più esempi"
+        },
+        "select": {
+          "get": "Ottieni i valori delle celle",
+          "getRange": "Ottieni un intervallo",
+          "update": "Aggiorna i valori delle celle",
+          "append": "Aggiungi valori alle celle",
+          "clear": "Cancella i valori delle celle"
+        }
+      },
+      "active-tab": {
+        "name": "Scheda attiva",
+        "description": "Imposta la scheda in cui ti trovi come scheda attiva"
+      },
+      "proxy": {
+        "name": "Proxy",
+        "description": "Imposta il proxy del browser",
+        "clear": "Cancella tutti i proxy",
+        "bypass": {
+          "label": "Elenco dei bypass",
+          "note": "Usa le virgole (,) per separare gli URL"
+        }
+      },
+      "new-window": {
+        "name": "Nuova finestra",
+        "description": "Crea una nuova finestra",
+        "top": "Top",
+        "left": "Left",
+        "height": "Altezza",
+        "width": "Larghezza",
+        "note": "Nota: usa 0 per disabilitare",
+        "position": "Posizione finestra",
+        "size": "Dimensione finestra",
+        "windowState": {
+          "placeholder": "Stato finestra",
+          "options": {
+            "normal": "Normale",
+            "minimized": "Minimizzato",
+            "maximized": "Massimizzato",
+            "fullscreen": "Schermo intero"
+          }
+        },
+        "incognito": {
+          "text": "Apri come finestra in incognito",
+          "note": "Devi prima abilitare 'Consenti modalità di navigazione in incognito' per questa estensione"
+        }
+      },
+      "go-back": {
+        "name": "Torna indietro",
+        "description": "Torna alla pagina precedente"
+      },
+      "forward-page": {
+        "name": "Vai avanti",
+        "description": "Vai alla pagina successiva"
+      },
+      "close-tab": {
+        "name": "Chiudi scheda/finestra",
+        "description": "",
+        "url": "Match Pattern",
+        "activeTab": "Chiudi scheda attiva",
+        "allWindows": "Chiudi tutte le finestre"
+      },
+      "event-click": {
+        "name": "Clicca elemento",
+        "description": ""
+      },
+      "delay": {
+        "name": "Delay",
+        "description": "Aggiungi un delay per ritardare l'esecuzione del blocco successivo",
+        "input": {
+          "title": "Delay in millisecondi",
+          "placeholder": "(millisecondi)"
+        }
+      },
+      "parameter-prompt": {
+        "name": "Prompt parametri"
+      },
+      "get-text": {
+        "name": "Ottieni testo",
+        "description": "Ottieni testo da un elemento",
+        "checkbox": "Inserisci in tabella",
+        "includeTags": "Includi tag HTML",
+        "prefixText": {
+          "placeholder": "Prefisso del testo",
+          "title": "Aggiungi un prefisso al testo"
+        },
+        "suffixText": {
+          "placeholder": "Suffisso del testo",
+          "title": "Aggiungi un suffisso al testo"
+        }
+      },
+      "export-data": {
+        "name": "Esporta dati",
+        "description": "Esporta i dati del workflow",
+        "exportAs": "Esporta come",
+        "refKey": "Chiave di riferimento",
+        "bomHeader": "Aggiungi UTF-8 BOM",
+        "dataToExport": {
+          "placeholder": "Dati da esportare",
+          "options": {
+            "data-columns": "Tabella",
+            "google-sheets": "Google Sheets",
+            "variable": "Variabile"
+          }
+        }
+      },
+      "element-scroll": {
+        "name": "Scorri elemento",
+        "description": "",
+        "scrollY": "Scorri verticalmente",
+        "scrollX": "Scorri orizzontalmente",
+        "intoView": "Scorri in vista",
+        "smooth": "Scorrimento fluido",
+        "incScrollX": "Incrementa lo scorrimento orizzontale",
+        "incScrollY": "Incrementa lo scorrimento verticale"
+      },
+      "switch-tab": {
+        "name": "Cambia scheda",
+        "description": "Passa da una scheda all'altra",
+        "matchPattern": "Match Pattern",
+        "url": "URL della nuova scheda",
+        "createIfNoMatch": "Crea se non c'è corrispondenza"
+      },
+      "new-tab": {
+        "name": "Nuova scheda",
+        "description": "",
+        "url": "URL della nuova scheda",
+        "customUserAgent": "Usa un User-Agent personalizzato",
+        "activeTab": "Imposta come scheda attiva",
+        "tabToGroup": "Aggiungi scheda a un gruppo",
+        "waitTabLoaded": "Attendi il caricamento",
+        "updatePrevTab": {
+          "title": "Usa la scheda aperta in precedenza invece di crearne una nuova",
+          "text": "Aggiorna la scheda aperta prima"
+        }
+      },
+      "link": {
+        "name": "Link",
+        "description": "Apri elemento di collegamento"
+      },
+      "attribute-value": {
+        "name": "Valore attributo",
+        "description": "Ottieni il valore dell'attributo di un elemento",
+        "forms": {
+          "name": "Nome attributo",
+          "checkbox": "Inserisci in tabella",
+          "column": "Seleziona colonna",
+          "extraRow": {
+            "checkbox": "Aggiungi riga extra",
+            "placeholder": "Valore",
+            "title": "Valore della riga extra"
+          }
+        }
+      },
+      "forms": {
+        "name": "Moduli",
+        "description": "",
+        "selected": "Selezionato",
+        "type": "Tipo di modulo",
+        "getValue": "Ottini il valore del modulo",
+        "text-field": {
+          "name": "Campo di testo",
+          "value": "Valore",
+          "clearValue": "Cancella il valore del modulo",
+          "delay": {
+            "placeholder": "Delay",
+            "label": "Delay di battitura (ms) (0 per disabilitare)"
+          }
+        },
+        "select": {
+          "name": "Select"
+        },
+        "radio": {
+          "name": "Radio"
+        },
+        "checkbox": {
+          "name": "Checkbox"
+        }
+      },
+      "repeat-task": {
+        "name": "Ripeti operazione",
+        "description": "",
+        "times": "volte",
+        "repeatFrom": "Ripeti da"
+      },
+      "javascript-code": {
+        "name": "Codice JavaScript",
+        "description": "Esegui il tuo codice JavaScript nella pagina web",
+        "availabeFuncs": "Metodi disponibili:",
+        "removeAfterExec": "Rimuovi dopo l'esecuzione del blocco",
+        "everyNewTab": "Esegui in ogni nuova scheda",
+        "context": {
+          "name": "Contesto di esecuzione",
+          "items": {
+            "website": "Scheda attiva",
+            "background": "Background"
+          }
+        },
+        "modal": {
+          "tabs": {
+            "code": "Codice JavaScript",
+            "preloadScript": "Script di precaricamento"
+          }
+        },
+        "timeout": {
+          "placeholder": "Timeout (millisecondi)",
+          "title": "Timeout di esecuzione del codice JavaScript"
+        }
+      },
+      "trigger-event": {
+        "name": "Innesca evento",
+        "description": "",
+        "selectEvent": "Seleziona evento"
+      },
+      "conditions": {
+        "name": "Condizioni",
+        "add": "Aggiungi percorso",
+        "retryConditions": "Riprova se non si verifica nessuna condizione",
+        "description": "Blocco condizionale",
+        "refresh": "Aggiorna le connessioni delle condizioni",
+        "fallbackTitle": "Viene eseguito quando tutti i confronti non soddisfano il requisito",
+        "equals": "Equivale",
+        "gt": "Maggiore di",
+        "gte": "Maggiore o uguale",
+        "lt": "Minore di",
+        "lte": "Minore o uguale",
+        "ne": "Non equivale",
+        "contains": "Contiene"
+      },
+      "element-exists": {
+        "name": "Esiste elemento",
+        "description": "Controlla se esiste un elemento",
+        "selector": "Selettore elemento",
+        "fallbackTitle": "Viene eseguito quando l'elemento non esiste",
+        "throwError": "Lancia un errore se non esiste",
+        "tryFor": {
+          "title": "Quante volte provare a verificare se l'elemento esiste",
+          "label": "Prova per"
+        },
+        "timeout": {
+          "label": "Timeout (millisecondi)",
+          "title": "Timeout per ogni tentativo"
+        }
+      },
+      "webhook": {
+        "name": "Richiesta HTTP",
+        "description": "Effettua una richiesta HTTP",
+        "contentType": "Tipo di contenuto",
+        "method": "Metodo di richiesta",
+        "url": "URL di richiesta",
+        "fallback": "Viene eseguito quando la richiesta HTTP ha esito negativo",
+        "buttons": {
+          "header": "Aggiungi header"
+        },
+        "timeout": {
+          "placeholder": "Timeout",
+          "title": "Timeout di esecuzione della richiesta HTTP (ms)"
+        },
+        "tabs": {
+          "headers": "Intestazioni",
+          "body": "Corpo",
+          "response": "Risposta"
+        }
+      },
+      "while-loop": {
+        "name": "Ciclo while",
+        "description": "Esegue i blocchi fintantoché si verifica la condizione",
+        "editCondition": "Modifica condizione",
+        "fallback": "Viene eseguito quando la condizione risulta falsa"
+      },
+      "loop-elements": {
+        "name": "Itera elementi",
+        "description": "Itera gli elementi",
+        "loadMore": "Carica altri elementi",
+        "scrollToBottom": "Scorri fino in fondo",
+        "actions": {
+          "none": "Nessuna azione",
+          "click-element": "Clicca un elemento",
+          "scroll": "Scorri verso il basso",
+          "click-link": "Clicca un link"
+        }
+      },
+      "loop-data": {
+        "name": "Itera dati",
+        "description": "Itera una tabella o dei dati personalizzati",
+        "loopId": "ID ciclo",
+        "refKey": "Chiave di riferimento",
+        "startIndex": "Inizia dall'indice",
+        "resumeLastWorkflow": "Riprendi l'ultimo workflow",
+        "reverse": "Inverti l'ordine del ciclo",
+        "modal": {
+          "fileTooLarge": "File troppo grande per essere modificato",
+          "maxFile": "La dimensione massima del file è di 1MB",
+          "options": {
+            "firstRow": "Usa la prima riga come chiavi"
+          }
+        },
+        "buttons": {
+          "clear": "Cancella dati",
+          "insert": "Inserisci dati",
+          "import": "Importa file"
+        },
+        "maxLoop": {
+          "title": "Numero massimo di dati da iterare",
+          "label": "Numero massimo di cicli (0 per disabilitare)"
+        },
+        "loopThrough": {
+          "placeholder": "Itera attraverso",
+          "fromNumber": "Dal numero",
+          "toNumber": "Al numero",
+          "options": {
+            "numbers": "Numeri",
+            "variable": "Variabile",
+            "data-columns": "Tabella",
+            "table": "Tabella",
+            "custom-data": "Dati personalizzati",
+            "google-sheets": "Google Sheets",
+            "elements": "Elementi"
+          }
+        }
+      },
+      "loop-breakpoint": {
+        "name": "Breakpoint ciclo",
+        "description": "Per indicare il punto di interruzione del blocco Itera Dati"
+      },
+      "take-screenshot": {
+        "name": "Effettua screenshot",
+        "fullPage": "Cattura la schermata dell'intera pagina",
+        "description": "Cattura la schermata della scheda attiva",
+        "imageQuality": "Qualità dell'immagine",
+        "saveToColumn": "Inserisci in tabella",
+        "saveToComputer": "Salva sul computer",
+        "types": {
+          "title": "Cattura",
+          "page": "Una pagina",
+          "fullpage": "Una pagina intera",
+          "element": "Un elemento"
+        }
+      },
+      "switch-to": {
+        "name": "Cambia frame",
+        "description": "Passa dalla finestra principale a un iframe",
+        "iframeSelector": "Selettore elemento",
+        "windowTypes": {
+          "main": "Finestra principale",
+          "iframe": "Iframe"
+        }
+      }
+    }
+  }
+}

+ 70 - 0
src/locales/it/common.json

@@ -0,0 +1,70 @@
+{
+  "common": {
+    "dashboard": "Dashboard",
+    "workflow": "Workflow | Workflow",
+    "collection": "Raccolta | Raccolte",
+    "log": "Log | Log",
+    "block": "Blocco | Blocchi",
+    "schedule": "Programma",
+    "folder": "Cartella | Cartelle",
+    "new": "Nuovo",
+    "docs": "Documentazione",
+    "search": "Cerca",
+    "example": "Esempio | Esempi",
+    "import": "Importa",
+    "export": "Esporta",
+    "rename": "Rinomina",
+    "execute": "Esegui",
+    "delete": "Elimina",
+    "cancel": "Annulla",
+    "settings": "Impostazioni",
+    "options": "Opzioni",
+    "confirm": "Conferma",
+    "name": "Nome",
+    "all": "Tutti",
+    "add": "Aggiungi",
+    "save": "Salva",
+    "data": "dati",
+    "stop": "Interrompi",
+    "action": "Azione | Azioni",
+    "packages": "Pacchetti",
+    "storage": "Archiviazione",
+    "editor": "Editor",
+    "running": "In esecuzione",
+    "globalData": "Dati globali",
+    "fileName": "Nome file",
+    "description": "Descrizione",
+    "disable": "Disabilita",
+    "disabled": "Disabilitato",
+    "enable": "Abilita",
+    "fallback": "Fallback",
+    "update": "Aggiorna",
+    "feature": "Funzione",
+    "duplicate": "Duplica",
+    "password": "Password",
+    "category": "Categoria",
+    "optional": "Opzionale"
+  },
+  "message": {
+    "noBlock": "Nessun blocco",
+    "noData": "Nessun dato da mostrare",
+    "noTriggerBlock": "Impossibile trovare un blocco trigger",
+    "useDynamicData": "Scopri come aggiungere dati dinamici",
+    "delete": "Sei sicuro di voler eliminare \"{name}\"?",
+    "empty": "Ops... Sembra che tu non abbia alcun oggetto",
+    "maxSizeExceeded": "La dimensione del file ha superato il massimo consentito",
+    "notSaved": "Sei sicuro di voler uscire? Ci sono modifiche non salvate!",
+    "somethingWrong": "Qualcosa è andato storto",
+    "limitExceeded": "Hai superato il limite"
+  },
+  "sort": {
+    "sortBy": "Ordina per",
+    "name": "Nome",
+    "createdAt": "Data di creazione"
+  },
+  "logStatus": {
+    "stopped": "interrotto",
+    "error": "errore",
+    "success": "successo"
+  }
+}

+ 473 - 0
src/locales/it/newtab.json

@@ -0,0 +1,473 @@
+{
+  "home": {
+    "viewAll": "Mostra tutto",
+    "communities": "Comunità"
+  },
+  "welcome": {
+    "title": "Benvenuto su Automa! 🎉",
+    "text": "Puoi cominciare leggendo la documentazione o esplorando i workflow nel marketplace di Automa.",
+    "marketplace": "Marketplace"
+  },
+  "packages": {
+    "name": "Pacchetto | Pacchetti",
+    "add": "Aggiungi pacchetto",
+    "icon": "Icona pacchetto",
+    "open": "Apri paccketti",
+    "new": "Nuovo paccketto",
+    "set": "Imposta come pacchetto",
+    "settings": {
+      "asBlock": "Imposta pacchetto come blocco"
+    },
+    "categories": {
+      "my": "I miei pacchetti",
+      "installed": "Pacchetti installati"
+    }
+  },
+  "scheduledWorkflow": {
+    "title": "Workflow programmati",
+    "nextRun": "Prossima esecuzione",
+    "active": "Attivo",
+    "refresh": "Ricarica",
+    "schedule":{
+      "title": "Regola",
+      "types": {
+        "everyDay": "Ogni giorno",
+        "general": "Ogni {time}",
+        "interval": "Ogni {time} minuti"
+      }
+    }
+  },
+  "storage": {
+    "title": "Archiviazione",
+    "table": {
+      "add": "Aggiungi tabella",
+      "createdAt": "Creato alle",
+      "modifiedAt": "Modificato alle",
+      "rowsCount": "Numero di righe",
+      "delete": "Elimina tabella"
+    }
+  },
+  "credential": {
+    "title": "Credenziale | Credenziali",
+    "add": "Aggiungi credenziale",
+    "use": {
+      "title": "Credenziali usate",
+      "description": "Questo workflow utilizza le seguenti credenziali"
+    }
+  },
+  "workflowPermissions": {
+    "title": "Permessi del workflow",
+    "description": "Questo workflow richiede i seguenti permessi per funzionare correttamente",
+    "contextMenus": {
+      "title": "Menu contestuale",
+      "description": "Per eseguire il workflow tramite il menu contestuale"
+    },
+    "clipboardRead": {
+      "title": "Appunti",
+      "description": "Per accedere ai dati degli appunti"
+    },
+    "notifications": {
+      "title": "Notifiche",
+      "description": "Per visualizzare le notifiche"
+    },
+    "downloads": {
+      "title": "Download",
+      "description": "Per salvare e rinominare le risorse delle pagine web"
+    },
+    "cookies": {
+      "title": "Cookie",
+      "description": "Per leggere, impostare o rimuovere i cookie"
+    }
+  },
+  "updateMessage": {
+    "text1": "Automa è stato aggiorno alla versione v{version},",
+    "text2": "scopri le novità."
+  },
+  "workflows": {
+    "folder": {
+      "new": "Nuova cartella",
+      "name": "Nome cartella",
+      "delete": "Elimina cartella",
+      "rename": "Rinomina cartella"
+    }
+  },
+  "auth": {
+    "title": "Autenticazione",
+    "signIn": "Accedi",
+    "username": "Devi prima impostare il tuo nome utente",
+    "clickHere": "Clicca qui",
+    "text": "Per poterlo fare, è necessario aver effettuato l'accesso."
+  },
+  "running": {
+    "start": "Iniziato il {date}",
+    "message": "Questo visualizza solo gli ultimi 5 log"
+  },
+  "settings": {
+    "theme": "Tema",
+    "shortcuts": {
+      "duplicate": "Shortcut già utilizzata da \"{name}\""
+    },
+    "editor": {
+      "title": "Titolo",
+      "curvature": {
+        "title": "Curvatura Linea",
+        "line": "Linea",
+        "reroute": "Reindirizza",
+        "rerouteFirstLast": "Reindirizza il primo e l'ultimo punto"
+      },
+      "arrow": {
+        "title": "Freccia della linea",
+        "description": "Aggiungi una freccia alla fine della linea"
+      },
+      "snapGrid": {
+        "title": "Aggancia alla griglia",
+        "description": "Aggancia alla griglia quando si sposta un blocco"
+      }
+    },
+    "deleteLog": {
+      "title": "Elimina in automatico i log dei workflow",
+      "after": "Elimina dopo",
+      "deleteAfter": {
+        "never": "Mai",
+        "days": "{day} giorni"
+      }
+    },
+    "language": {
+      "label": "Lingua",
+      "helpTranslate": "Non trovi la tua lingua? Aiutaci a tradurre.",
+      "reloadPage": "Ricarica la pagina per rendere effettiva la modifica"
+    },
+    "menu": {
+      "backup": "Backup",
+      "editor": "Editor",
+      "general": "Generale",
+      "shortcuts": "Scorciatoie",
+      "about": "Informazioni"
+    },
+    "backupWorkflows": {
+      "title": "Backup Locale",
+      "invalidPassword": "Password invalida",
+      "workflowsAdded": "Sono stati aggiunti {count} workflow",
+      "name": "Backup dei workflow",
+      "needSignin": "Devi prima effettuare l'accesso",
+      "backup": {
+        "button": "Backup",
+        "encrypt": "Cifra con password"
+      },
+      "restore": {
+        "title": "Ripristina workflow",
+        "button": "Ripristina",
+        "update": "Aggiorna se il workflow esiste"
+      },
+      "cloud": {
+        "buttons": {
+          "local": "Locale",
+          "cloud": "Cloud"
+        },
+        "location": "Posizione",
+        "delete": "Elimina backup",
+        "title": "Backup Cloud",
+        "sync": "Sincronizza",
+        "lastSync": "Ultima sincronizzazione",
+        "lastBackup": "Ultimo backup",
+        "select": "Seleziona i workflow",
+        "storedWorkflows": "Workflow archiviati nel cloud",
+        "selected": "Selezionati",
+        "selectText": "Seleziona i workflow di cui vuoi eseguire il backup",
+        "selectAll": "Seleziona tutto",
+        "deselectAll": "Deseleziona tutto",
+        "needSelectWorkflow": "Devi selezionare i workflow di cui vuoi eseguire il backup"
+      }
+    }
+  },
+  "workflow": {
+    "previewMode": {
+      "title": "Modalità anteprima",
+      "description": "Sei in modalità anteprima, le modifiche apportate non verranno salvate"
+    },
+    "pinWorkflow": {
+      "pin": "Fissa in alto",
+      "unpin": "Rimuovi da in alto",
+      "pinned": "Fissati in alto"
+    },
+    "my": "I miei workflow",
+    "import": "Importa workflow",
+    "new": "Nuovo workflow",
+    "delete": "Elimina workflow",
+    "browse": "Esplora workflow",
+    "name": "Nome workflow",
+    "rename": "Rinomina workflow",
+    "backupCloud": "Esegui backup nel cloud",
+    "add": "Aggiungi workflow",
+    "clickToEnable": "Clicca per abilitare",
+    "toggleSidebar": "Apri/chiudi barra laterale",
+    "cantEdit": "Impossibile modificare il workflow condiviso",
+    "undo": "Annulla",
+    "redo": "Ripeti",
+    "autoAlign": {
+      "title": "Allinea blocchi"
+    },
+    "blocksFolder": {
+      "title": "Cartella dei blocchi",
+      "add": "Aggiungi blocchi alla cartella",
+      "save": "Salva nella cartella"
+    },
+    "searchBlocks": {
+      "title": "Cerca blocchi nell'editor"
+    },
+    "conditionBuilder": {
+      "title": "Costruttore di condizioni",
+      "add": "Aggiungi condizione",
+      "and": "AND",
+      "or": "OR",
+      "topAwait": "Supporta l'await di primo livello e il metodo \"automaRefData\""
+    },
+    "host": {
+      "title": "Ospita workflow",
+      "set": "Imposta il workflow come host",
+      "id": "ID host",
+      "add": "Aggiungi workflow ospitato",
+      "sync": {
+        "title": "Sincronizza",
+        "description": "Sincronizza col workflow dell'host"
+      },
+      "messages": {
+        "hostExist": "Hai già aggiunto questo host",
+        "notFound": "Impossibile trovare un workflow ospitato con l'ID \"{id}\""
+      }
+    },
+    "type": {
+      "local": "Locale",
+      "shared": "Condiviso",
+      "host": "Host"
+    },
+    "unpublish": {
+      "title": "Annulla pubblicazione",
+      "button": "Conferma",
+      "body": "Sei sicuro di voler annullare la pubblicazione del workflow \"{name}\"?"
+    },
+    "share": {
+      "url": "Condividi URL",
+      "publish": "Pubblica",
+      "sharedAs": "Condiviso come \"{name}\"",
+      "title": "Condividi workflow",
+      "download": "Salva workflow in locale",
+      "edit": "Modifica descrizione",
+      "fetchLocal": "Recupera workflow locale",
+      "update": "Aggiorna",
+      "unpublish": "Annulla pubblicazione"
+    },
+    "variables": {
+      "title": "Variabile | Variabili",
+      "name": "Nome variabile",
+      "assign": "Assegna a variabile"
+    },
+    "protect": {
+      "title": "Proteggi workflow",
+      "remove": "Rimuovi protezione",
+      "button": "Proteggi",
+      "note": "Nota: la password verrà richiesta in seguito per modificare o eliminare il workflow."
+    },
+    "locked": {
+      "title": "Questo workflow è protetto",
+      "body": "Inserisci la password per sbloccarlo",
+      "unlock": "Sblocca",
+      "messages": {
+        "incorrect-password": "Password errata"
+      }
+    },
+    "state": {
+      "executeBy": "Eseguito da: \"{name}\""
+    },
+    "table": {
+      "title": "Tabella | Tabelle",
+      "placeholder": "Cerca o aggiungi una colonna",
+      "select": "Seleziona colonna",
+      "column": {
+        "name": "Nome colonna",
+        "type": "Tipo di dato"
+      }
+    },
+    "sidebar": {
+      "workflowIcon": "Icona workflow"
+    },
+    "editor": {
+      "zoomIn": "Ingrandisci",
+      "zoomOut": "Rimpicciolisci",
+      "resetZoom": "Reimposta lo zoom",
+      "duplicate": "Duplica",
+      "copy": "Copia",
+      "paste": "Incolla",
+      "group": "Raggruppa blocchi",
+      "ungroup": "Separa blocchi"
+    },
+    "settings": {
+      "saveLog": "Salva i log del workflow",
+      "executedBlockOnWeb": "Mostra il blocco eseguito sulla pagina web",
+      "notification": {
+        "title": "Notifica del workflow",
+        "description": "Mostra lo stato del workflow (successo o fallito) dopo l'esecuzione",
+        "noPermission": "Questa opzione richiede il permesso \"notifications\" per funzionare"
+      },
+      "publicId": {
+        "title": "ID pubblico del workflow",
+        "description": "Imposta un'ID pubblico per eseguire il workflow tramite un evento personalizzato di JavaScript"
+      },
+      "defaultColumn": {
+        "title": "Inserisci nella colonna predefinita",
+        "description": "Inserisci i dati nella colonna predefinita se nel blocco non è selezionata alcuna colonna",
+        "name": "Nome colonna predefinita"
+      },
+      "autocomplete": {
+        "title": "Autocompletamento",
+        "description": "Abilita l'autocompletamento nel blocco di input (disabilita se rende Automa instabile)"
+      },
+      "clearCache": {
+        "title": "Svuota cache",
+        "description": "Svuota la cache (stato e indice di ciclo) del workflow",
+        "info": "Cache del workflow svuotata correttamente",
+        "btn": "Svuota"
+      },
+      "reuseLastState": {
+        "title": "Riprendi lo stato del workflow precedente",
+        "description": "Usa i dati (tabella, variabili e dati globali) dell'ultimo workflow eseguito"
+      },
+      "debugMode": {
+        "title": "Modalità di debug",
+        "description": "Esegui il workflow usando il protocollo di Chrome DevTools"
+      },
+      "restartWorkflow": {
+        "for": "Riavvia per",
+        "times": "Volte",
+        "description": "Numero massimo di volte in cui si riavvierà il workflow"
+      },
+      "onError": {
+        "title": "In caso di errore nel workflow",
+        "description": "Imposta l'azione da eseguire se si verifica un errore nel workflow",
+        "items": {
+          "keepRunning": "Prosegui",
+          "stopWorkflow": "Interrompi",
+          "restartWorkflow": "Riavvia"
+        }
+      },
+      "timeout": {
+        "title": "Timeout workflow (millisecondi)"
+      },
+      "blockDelay": {
+        "title": "Delay blocco (millisecondi)",
+        "description": "Aggiungi un delay prima dell'esecuzione di ogni blocco"
+      },
+      "tabLoadTimeout": {
+        "title": "Timeout caricamento schede",
+        "description": "Tempo massimo di attesa in millisecondi per il caricamento di una scheda (0 per disabilitare)"
+      }
+    }
+  },
+  "collection": {
+    "description": "Esegui i tuoi workflow in sequenza",
+    "new": "Nuova raccolta",
+    "delete": "Elimina raccolta",
+    "add": "Aggiungi raccolta",
+    "rename": "Rinomina raccolta",
+    "flow": "Flusso",
+    "dragDropText": "Trascina un workflow o blocco qui",
+    "options": {
+      "atOnce": {
+        "title": "Esegui tutti i workflow nella raccolta insieme",
+        "description": "I blocchi non verranno eseguiti quando si usa questa opzione"
+      }
+    },
+    "globalData": {
+      "note": "Questo sovrascriverà i dati globali del workflow"
+    }
+  },
+  "log": {
+    "flowId": "ID flusso",
+    "goBack": "Torna ai log di \"{name}\"",
+    "goWorkflow": "Vai al workflow",
+    "startedDate": "Data di inizio",
+    "duration": "Durata",
+    "selectAll": "Seleziona tutto",
+    "deselectAll": "Deseleziona tutto",
+    "deleteSelected": "Elimina i log selezionati",
+    "clearLogs": {
+      "title": "Svuota log",
+      "description": "Sei sicuro di voler cancellare tutti i log?"
+    },
+    "types": {
+      "stop": "Workflow is stopped",
+      "finish": "Finish"
+    },
+    "messages": {
+      "url-empty": "L'URL è vuoto",
+      "invalid-url": "L'URL non è valido",
+      "conditions-empty": "Le condizioni sono vuote",
+      "invalid-proxy-host": "Host proxy invalido",
+      "workflow-disabled": "Il workflow è disabilitato",
+      "selector-empty": "Il selettore dell'elemento è vuoto",
+      "invalid-body": "Il corpo del contenuto non è un JSON valido",
+      "invalid-active-tab": "\"{url}\" non è un URL valido",
+      "empty-spreadsheet-id": "L'ID del foglio di calcolo è vuoto",
+      "invalid-loop-data": "I dati da iterare non sono validi",
+      "empty-workflow": "Devi prima selezionare un workflow",
+      "active-tab-removed": "La scheda attiva del workflow è stata chiusa",
+      "empty-spreadsheet-range": "L'intervallo del foglio di calcolo è vuoto",
+      "stop-timeout": "Il workflow è stato interrotto a causa dello scadere del timeout",
+      "no-file-access": "Automa non ha accesso al file",
+      "no-workflow": "Impossibile trovare un workflow con l'ID \"{workflowId}\"",
+      "no-match-tab": "Impossibile trovare una scheda che corrisponda al pattern \"{pattern}\"",
+      "no-clipboard-acces": "Automa non dispone del permesso per accedere agli appunti",
+      "browser-not-supported": "Questa funzione non è supportata in un browser {browser}",
+      "element-not-found": "Impossibile trovare un elemento con il selettore \"{selector}\"",
+      "no-permission": "Automa non dispone del permesso \"{permission}\" per eseguire questa azione",
+      "not-iframe": "L'elemento con il selettore \"{selettore}\" non è un elemento iframe",
+      "iframe-not-found": "Impossibile trovare un elemento iframe con il selettore \"{selector}\"",
+      "workflow-infinite-loop": "Impossibile eseguire il workflow per evitare di ripetere un ciclo infinito",
+      "not-debug-mode": "Il workflow deve essere eseguito in modalità di debug affinché questo blocco funzioni correttamente",
+      "no-iframe-id": "Impossibile trovare l'ID frame per l'elemento iframe con il selettore \"{selector}\"",
+      "no-tab": "Impossibile connettersi ad una scheda, usa il blocchi \"Nuova scheda\" o \"Scheda attiva\" prima di usare il blocco \"{name}\""
+    },
+    "description": {
+      "text": "{status} il {date} in {duration}",
+      "status": {
+        "success": "Riuscito",
+        "error": "Fallito",
+        "stopped": "Interrotto"
+      }
+    },
+    "delete": {
+      "title": "Elimina log",
+      "description": "Sei sicuro di voler eliminare tutti i log selezionati?"
+    },
+    "exportData": {
+      "title": "Esporta dati",
+      "types": {
+        "json": "JSON",
+        "csv": "CSV",
+        "plain-text": "Testo semplice"
+      }
+    },
+    "filter": {
+      "title": "Filtra",
+      "byStatus": "Per stato",
+      "byDate": {
+        "title": "Per data",
+        "items": {
+          "lastDay": "Ultimo giorno",
+          "last7Days": "Ultimi sette giorni",
+          "last30Days": "Ultimi trenta giorni"
+        }
+      }
+    }
+  },
+  "components": {
+    "pagination": {
+      "text1": "Visualizzazione di ",
+      "text2": "elementi su {count}",
+      "nextPage": "Pagina successiva",
+      "currentPage": "Pagina corrente",
+      "prevPage": "Pagina precedente",
+      "of": "di {page}"
+    }
+  }
+}

+ 32 - 0
src/locales/it/popup.json

@@ -0,0 +1,32 @@
+{
+  "recording": {
+    "stop": "Termina registrazione",
+    "title": "Registrando"
+  },
+  "home": {
+    "record": {
+      "title": "Registra workflow",
+      "button": "Registra",
+      "name": "Nome workflow",
+      "selectBlock": "Seleziona un blocco da cui iniziare",
+      "anotherBlock": "Impossibile iniziare da questo blocco",
+      "tabs": {
+        "new": "Nuovo workflow",
+        "existing": "Workflow esistente"
+      }
+    },
+    "elementSelector": {
+      "name": "Selettore elemento",
+      "noAccess": "Automa non ha accesso a questo sito"
+    },
+    "workflow": {
+      "new": "Nuovo workflow",
+      "rename": "Rinomina workflow",
+      "delete": "Elimina workflow",
+      "type": {
+        "host": "Host",
+        "local": "Locale"
+      }
+    }
+  }
+}

+ 3 - 2
src/utils/shared.js

@@ -1474,10 +1474,11 @@ export const contentTypes = [
 
 export const supportLocales = [
   { id: 'en', name: 'English' },
+  { id: 'fr', name: 'Français' },
+  { id: 'it', name: 'Italiano' },
+  { id: 'vi', name: 'Tiếng Việt' },
   { id: 'zh', name: '简体中文' },
   { id: 'zh-tw', name: '繁體中文' },
-  { id: 'vi', name: 'Tiếng Việt' },
-  { id: 'fr', name: 'Français' },
 ];
 
 export const communities = [