瀏覽代碼

Merge pull request #957 from alqmc/fix-selectorSettings

fix: selectorSettings show  only selectorType is cssSelector(#956)
Ahmad Kholid 2 年之前
父節點
當前提交
910d64aa02

+ 1 - 1
src/components/newtab/shared/SharedLogsTable.vue

@@ -98,7 +98,7 @@
             <span
             <span
               :class="statusColors[log.status]"
               :class="statusColors[log.status]"
               :title="log.status === 'error' ? getErrorMessage(log) : null"
               :title="log.status === 'error' ? getErrorMessage(log) : null"
-              class="inline-block py-1 w-16 text-center text-sm rounded-md dark:text-black"
+              class="inline-block py-1 w-24 text-center text-sm rounded-md dark:text-black"
             >
             >
               {{ t(`logStatus.${log.status}`) }}
               {{ t(`logStatus.${log.status}`) }}
             </span>
             </span>

+ 6 - 1
src/content/elementSelector/App.vue

@@ -80,7 +80,12 @@
           @highlight="toggleHighlightElement"
           @highlight="toggleHighlightElement"
           @execute="state.isExecuting = $event"
           @execute="state.isExecuting = $event"
         />
         />
-        <div v-if="state.showSettings && !state.hide" class="mt-4">
+        <div
+          v-if="
+            state.showSettings && state.selectorType === 'css' && !state.hide
+          "
+          class="mt-4"
+        >
           <p class="font-semibold mb-4">Selector settings</p>
           <p class="font-semibold mb-4">Selector settings</p>
           <ul class="space-y-4">
           <ul class="space-y-4">
             <li>
             <li>

+ 1 - 0
src/lib/dayjs.js

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

+ 66 - 67
src/locales/en/blocks.json

@@ -15,7 +15,7 @@
         "selector": "Element selector",
         "selector": "Element selector",
         "selectorOptions": "Selector options",
         "selectorOptions": "Selector options",
         "timeout": "Timeout (milliseconds)",
         "timeout": "Timeout (milliseconds)",
-        "noPermission": "Automa don't have enough permission to do this action",
+        "noPermission": "Automa doesn't have enough permissions to perform this action",
         "grantPermission": "Grant permission",
         "grantPermission": "Grant permission",
         "action": "Action",
         "action": "Action",
         "element": {
         "element": {
@@ -26,16 +26,16 @@
           "title": "Block settings",
           "title": "Block settings",
           "line": {
           "line": {
             "title": "Lines",
             "title": "Lines",
-            "label": "Line label",
+            "label": "Label",
             "animated": "Animated",
             "animated": "Animated",
             "select": "Select line",
             "select": "Select line",
             "to": "Line to {name} block",
             "to": "Line to {name} block",
-            "lineColor": "Line color"
+            "lineColor": "Color"
           }
           }
         },
         },
         "toggle": {
         "toggle": {
           "enable": "Enable block",
           "enable": "Enable block",
-          "disable": "Disable block",
+          "disable": "Disable block"
         },
         },
         "onError": {
         "onError": {
           "info": "These rules will apply when an error occurs on the block",
           "info": "These rules will apply when an error occurs on the block",
@@ -45,7 +45,7 @@
           "fallbackTitle": "Will execute when an error occurs in the block",
           "fallbackTitle": "Will execute when an error occurs in the block",
           "times": {
           "times": {
             "name": "Times",
             "name": "Times",
-            "description": "The number of times to retry the action",
+            "description": "The number of times to retry the action"
           },
           },
           "interval": {
           "interval": {
             "name": "Interval",
             "name": "Interval",
@@ -152,7 +152,7 @@
       },
       },
       "increase-variable": {
       "increase-variable": {
         "name": "Increase variable",
         "name": "Increase variable",
-        "description": "Increase the value of a variable by specific amount",
+        "description": "Increase the value of a variable by a specific amount",
         "increase": "Increase by"
         "increase": "Increase by"
       },
       },
       "notification": {
       "notification": {
@@ -210,11 +210,11 @@
       },
       },
       "handle-dialog": {
       "handle-dialog": {
         "name": "Handle dialog",
         "name": "Handle dialog",
-        "description": "Accepts or dismisses a JavaScript initiated dialog (alert, confirm, prompt, or onbeforeunload).",
+        "description": "Accepts or dismisses a JavaScript initiated dialog (alert, confirm, prompt, or onbeforeunload)",
         "accept": "Accept dialog",
         "accept": "Accept dialog",
         "promptText": {
         "promptText": {
           "label": "Prompt text (optional)",
           "label": "Prompt text (optional)",
-          "description": "The text to enter into the dialog prompt before accepting"
+          "description": "The text to enter into the prompt dialog before accepting"
         }
         }
       },
       },
       "handle-download": {
       "handle-download": {
@@ -266,13 +266,13 @@
         "description": "Upload file into <input type=\"file\"> element",
         "description": "Upload file into <input type=\"file\"> element",
         "filePath": "URL or File path",
         "filePath": "URL or File path",
         "addFile": "Add file",
         "addFile": "Add file",
-        "onlyURL": "Only support upload files from an URL in the Firefox browser",
-        "requirement": "See the requirement before using this block",
-        "noFileAccess": "Automa doesn't have file access"
+        "onlyURL": "Only uploading files from a URL is supported in the Firefox browser",
+        "requirement": "Read the requirements before using this block",
+        "noFileAccess": "Automa doesn't have access to files"
       },
       },
       "browser-event": {
       "browser-event": {
         "name": "Browser event",
         "name": "Browser event",
-        "description": "Execute the next block when the event is triggered",
+        "description": "Executes the next block when the specified event is triggered",
         "events": "Events",
         "events": "Events",
         "timeout": "Timeout (milliseconds)",
         "timeout": "Timeout (milliseconds)",
         "activeTabLoaded": "Active tab",
         "activeTabLoaded": "Active tab",
@@ -287,14 +287,14 @@
         "groupName": "Group name",
         "groupName": "Group name",
         "description": "Grouping blocks",
         "description": "Grouping blocks",
         "dropText": "Drag & drop a block here",
         "dropText": "Drag & drop a block here",
-        "cantAdd": "Can't add \"{blockName}\" block to the group."
+        "cantAdd": "Can't add \"{blockName}\" block to the group"
       },
       },
       "trigger": {
       "trigger": {
         "name": "Trigger",
         "name": "Trigger",
         "description": "Block where the workflow will start executing",
         "description": "Block where the workflow will start executing",
         "addTime": "Add time",
         "addTime": "Add time",
         "selectDay": "Select day",
         "selectDay": "Select day",
-        "timeExist": "You alread add {time} on {day}",
+        "timeExist": "You already added a trigger at {time} on {day}",
         "fixedDelay": "Fixed delay",
         "fixedDelay": "Fixed delay",
         "contextMenus": {
         "contextMenus": {
           "noPermission": "This trigger requires \"contextMenus\" permission to be working",
           "noPermission": "This trigger requires \"contextMenus\" permission to be working",
@@ -317,7 +317,7 @@
           "stopRecord": "Stop recording",
           "stopRecord": "Stop recording",
           "checkboxTitle": "Execute shortcut even when you're in an input element",
           "checkboxTitle": "Execute shortcut even when you're in an input element",
           "checkbox": "Active while in input",
           "checkbox": "Active while in input",
-          "note": "Note: keyboard shortcut only working when you're on a webpage"
+          "note": "Note: keyboard shortcut only works when you're on a webpage"
         },
         },
         "forms": {
         "forms": {
           "triggerWorkflow": "Trigger workflow",
           "triggerWorkflow": "Trigger workflow",
@@ -335,7 +335,7 @@
           "targetWebsite": "The Match Pattern of the website where the target element is (click to see more Match Pattern examples)",
           "targetWebsite": "The Match Pattern of the website where the target element is (click to see more Match Pattern examples)",
           "baseEl": {
           "baseEl": {
             "title": "Base element (optional)",
             "title": "Base element (optional)",
-            "description": "Automa will restart observing the target element when this element changed"
+            "description": "Automa will restart observing the target element when this element changes"
           },
           },
           "subtree": {
           "subtree": {
             "title": "Include subtree",
             "title": "Include subtree",
@@ -343,21 +343,21 @@
           },
           },
           "childList": {
           "childList": {
             "title": "Child list",
             "title": "Child list",
-            "description": "Monitor for the addition of new child elements or removal of existing child elements"
+            "description": "Monitor the addition of new child elements or the removal of existing ones"
           },
           },
           "attributes": {
           "attributes": {
             "title": "Attributes",
             "title": "Attributes",
-            "description": "Watch for changes to the value of attributes on the target element"
+            "description": "Watch for changes to the attribute values of the target element"
           },
           },
           "attributeFilter": {
           "attributeFilter": {
             "title": "Attribute filter",
             "title": "Attribute filter",
-            "separate": "Use commas(,) to separate attribute name",
+            "separate": "Use commas (,) to separate attribute names",
             "description": "Only monitor specific attributes (leave blank to monitor all)"
             "description": "Only monitor specific attributes (leave blank to monitor all)"
           },
           },
           "characterData": {
           "characterData": {
             "title": "Character data",
             "title": "Character data",
             "description": "Monitor changes to the character data/text within the target element"
             "description": "Monitor changes to the character data/text within the target element"
-          },
+          }
         },
         },
         "items": {
         "items": {
           "manual": "Manually",
           "manual": "Manually",
@@ -365,9 +365,9 @@
           "cron-job": "Cron job",
           "cron-job": "Cron job",
           "date": "On a specific date",
           "date": "On a specific date",
           "context-menu": "Context menu",
           "context-menu": "Context menu",
-          "element-change": "When element change",
+          "element-change": "On element change",
           "specific-day": "On a specific day",
           "specific-day": "On a specific day",
-          "visit-web": "When visit a website",
+          "visit-web": "When visiting a website",
           "on-startup": "On browser startup",
           "on-startup": "On browser startup",
           "keyboard-shortcut": "Keyboard shortcut"
           "keyboard-shortcut": "Keyboard shortcut"
         }
         }
@@ -378,12 +378,12 @@
         "select": "Select workflow",
         "select": "Select workflow",
         "executeId": "Execute Id (optional)",
         "executeId": "Execute Id (optional)",
         "description": "",
         "description": "",
-        "insertAllVars": "Insert all current workflow variables",
+        "insertAllVars": "Use all current workflow variables",
         "insertVars": "Insert current workflow variables",
         "insertVars": "Insert current workflow variables",
         "useCommas": "Use commas to separate the variable name"
         "useCommas": "Use commas to separate the variable name"
       },
       },
       "google-sheets": {
       "google-sheets": {
-        "name": "Google sheets",
+        "name": "Google Sheets",
         "description": "Read or update Google Sheets data",
         "description": "Read or update Google Sheets data",
         "previewData": "Preview data",
         "previewData": "Preview data",
         "firstRow": "Use the first row as keys",
         "firstRow": "Use the first row as keys",
@@ -409,7 +409,7 @@
         },
         },
         "range": {
         "range": {
           "label": "Range",
           "label": "Range",
-          "link": "Click to see more example"
+          "link": "Click to see more examples"
         },
         },
         "select": {
         "select": {
           "get": "Get spreadsheet cell values",
           "get": "Get spreadsheet cell values",
@@ -421,12 +421,12 @@
       },
       },
       "active-tab": {
       "active-tab": {
         "name": "Active tab",
         "name": "Active tab",
-        "description": "Set current tab that you're in as an active tab"
+        "description": "Set the tab you're in as the active tab"
       },
       },
       "proxy": {
       "proxy": {
         "name": "Proxy",
         "name": "Proxy",
         "description": "Set the proxy of the browser",
         "description": "Set the proxy of the browser",
-        "clear": "Clear all proxy",
+        "clear": "Clear all proxies",
         "bypass": {
         "bypass": {
           "label": "Bypass list",
           "label": "Bypass list",
           "note": "Use commas (,) to separate URL"
           "note": "Use commas (,) to separate URL"
@@ -452,8 +452,8 @@
           }
           }
         },
         },
         "incognito": {
         "incognito": {
-          "text": "Set as incognito window",
-          "note": "You must enable 'Allow in incognito' for this extension to use the option"
+          "text": "Set as an incognito window",
+          "note": "You must enable 'Allow in incognito' for this extension first"
         }
         }
       },
       },
       "go-back": {
       "go-back": {
@@ -477,10 +477,10 @@
       },
       },
       "delay": {
       "delay": {
         "name": "Delay",
         "name": "Delay",
-        "description": "Add delay before executing the next block",
+        "description": "Add a delay before executing the next block",
         "input": {
         "input": {
-          "title": "Delay in millisecond",
-          "placeholder": "(millisecond)"
+          "title": "Delay in milliseconds",
+          "placeholder": "(milliseconds)"
         }
         }
       },
       },
       "parameter-prompt": {
       "parameter-prompt": {
@@ -510,9 +510,9 @@
           "placeholder": "Data to export",
           "placeholder": "Data to export",
           "options": {
           "options": {
             "data-columns": "Table",
             "data-columns": "Table",
-            "google-sheets": "Google sheets",
+            "google-sheets": "Google Sheets",
             "variable": "Variable"
             "variable": "Variable"
-          },
+          }
         }
         }
       },
       },
       "element-scroll": {
       "element-scroll": {
@@ -529,17 +529,17 @@
         "name": "Switch tab",
         "name": "Switch tab",
         "description": "Switch between tab",
         "description": "Switch between tab",
         "matchPattern": "Match Patterns",
         "matchPattern": "Match Patterns",
-        "url": "URL for the new tab",
+        "url": "New tab URL",
         "createIfNoMatch": "Create if there's no match"
         "createIfNoMatch": "Create if there's no match"
       },
       },
       "new-tab": {
       "new-tab": {
         "name": "New tab",
         "name": "New tab",
         "description": "",
         "description": "",
-        "url": "New Tab URL",
+        "url": "New tab URL",
         "customUserAgent": "Use custom User-Agent",
         "customUserAgent": "Use custom User-Agent",
         "activeTab": "Set as active tab",
         "activeTab": "Set as active tab",
-        "tabToGroup": "Add tab to group",
-        "waitTabLoaded": "Wait till tab loaded",
+        "tabToGroup": "Add tab to a group",
+        "waitTabLoaded": "Wait until the tab is loaded",
         "updatePrevTab": {
         "updatePrevTab": {
           "title": "Use the previously opened new tab instead of creating a new one",
           "title": "Use the previously opened new tab instead of creating a new one",
           "text": "Update previously opened tab"
           "text": "Update previously opened tab"
@@ -551,7 +551,7 @@
       },
       },
       "attribute-value": {
       "attribute-value": {
         "name": "Attribute value",
         "name": "Attribute value",
-        "description": "Get value of an element attribute",
+        "description": "Get the value of an element attribute",
         "forms": {
         "forms": {
           "name": "Attribute name",
           "name": "Attribute name",
           "checkbox": "Insert to table",
           "checkbox": "Insert to table",
@@ -596,10 +596,10 @@
       },
       },
       "javascript-code": {
       "javascript-code": {
         "name": "JavaScript code",
         "name": "JavaScript code",
-        "description": "Execute your javascript code in the web page",
+        "description": "Execute your JavaScript code in the web page",
         "availabeFuncs": "Available functions:",
         "availabeFuncs": "Available functions:",
-        "removeAfterExec": "Remove after block executed",
-        "everyNewTab": "Execute every new tab",
+        "removeAfterExec": "Remove after block execution",
+        "everyNewTab": "Execute in every new tab",
         "context": {
         "context": {
           "name": "Execution context",
           "name": "Execution context",
           "items": {
           "items": {
@@ -615,7 +615,7 @@
         },
         },
         "timeout": {
         "timeout": {
           "placeholder": "Timeout (milliseconds)",
           "placeholder": "Timeout (milliseconds)",
-          "title": "Javascript code execution timeout"
+          "title": "JavaScript code execution timeout"
         }
         }
       },
       },
       "trigger-event": {
       "trigger-event": {
@@ -625,11 +625,11 @@
       },
       },
       "conditions": {
       "conditions": {
         "name": "Conditions",
         "name": "Conditions",
-        "add": "Add condition",
-        "retryConditions": "Retry if all conditions are not met",
+        "add": "Add path",
+        "retryConditions": "Retry if no conditions are met",
         "description": "Conditional block",
         "description": "Conditional block",
-        "refresh": "Refresh conditions connections",
-        "fallbackTitle": "Execute when all comparisons don't meet the requirement",
+        "refresh": "Refresh condition connections",
+        "fallbackTitle": "Executes when all comparisons don't meet the requirement",
         "equals": "Equals",
         "equals": "Equals",
         "gt": "Greater than",
         "gt": "Greater than",
         "gte": "Greater than or equal",
         "gte": "Greater than or equal",
@@ -640,12 +640,12 @@
       },
       },
       "element-exists": {
       "element-exists": {
         "name": "Element exists",
         "name": "Element exists",
-        "description": "Check if an element is exists",
+        "description": "Check if an element exists",
         "selector": "Element selector",
         "selector": "Element selector",
-        "fallbackTitle": "Execute when element doesn't exists",
+        "fallbackTitle": "Executes when the element doesn't exist",
         "throwError": "Throw an error if doesn't exist",
         "throwError": "Throw an error if doesn't exist",
         "tryFor": {
         "tryFor": {
-          "title": "How many times to try to check if element exist",
+          "title": "How many times to try to check if the element exists",
           "label": "Try for"
           "label": "Try for"
         },
         },
         "timeout": {
         "timeout": {
@@ -656,17 +656,16 @@
       "webhook": {
       "webhook": {
         "name": "HTTP request",
         "name": "HTTP request",
         "description": "Make an HTTP Request",
         "description": "Make an HTTP Request",
-        "url": "The Post receive URL",
         "contentType": "Content type",
         "contentType": "Content type",
         "method": "Request method",
         "method": "Request method",
         "url": "Request URL",
         "url": "Request URL",
-        "fallback": "Execute when failed or error making an HTTP request",
+        "fallback": "Executes when the HTTP request fails",
         "buttons": {
         "buttons": {
           "header": "Add header"
           "header": "Add header"
         },
         },
         "timeout": {
         "timeout": {
           "placeholder": "Timeout",
           "placeholder": "Timeout",
-          "title": "Http request execution timeout(ms)"
+          "title": "HTTP request execution timeout (ms)"
         },
         },
         "tabs": {
         "tabs": {
           "headers": "Headers",
           "headers": "Headers",
@@ -676,9 +675,9 @@
       },
       },
       "while-loop": {
       "while-loop": {
         "name": "While loop",
         "name": "While loop",
-        "description": "Execute blocks while the condition is met",
+        "description": "Executes blocks while the condition is met",
         "editCondition": "Edit condition",
         "editCondition": "Edit condition",
-        "fallback": "Execute when the condition is false"
+        "fallback": "Executes when the condition is false"
       },
       },
       "loop-elements": {
       "loop-elements": {
         "name": "Loop elements",
         "name": "Loop elements",
@@ -687,15 +686,15 @@
         "scrollToBottom": "Scroll to bottom",
         "scrollToBottom": "Scroll to bottom",
         "actions": {
         "actions": {
           "none": "None",
           "none": "None",
-          "click-element": "Click an element to load more",
-          "scroll": "Scroll down to load more",
-          "click-link": "Click a link to load more"
+          "click-element": "Click an element",
+          "scroll": "Scroll down",
+          "click-link": "Click a link"
         }
         }
       },
       },
       "loop-data": {
       "loop-data": {
         "name": "Loop data",
         "name": "Loop data",
-        "description": "Iterate through table or your custom data",
-        "loopId": "Loop id",
+        "description": "Iterate through a table or your custom data",
+        "loopId": "Loop ID",
         "refKey": "Reference key",
         "refKey": "Reference key",
         "startIndex": "Start from index",
         "startIndex": "Start from index",
         "resumeLastWorkflow": "Resume last workflow",
         "resumeLastWorkflow": "Resume last workflow",
@@ -713,7 +712,7 @@
           "import": "Import file"
           "import": "Import file"
         },
         },
         "maxLoop": {
         "maxLoop": {
-          "title": "Max numbers of data to loop",
+          "title": "Max number of data to loop",
           "label": "Max data to loop (0 to disable)"
           "label": "Max data to loop (0 to disable)"
         },
         },
         "loopThrough": {
         "loopThrough": {
@@ -726,14 +725,14 @@
             "data-columns": "Table",
             "data-columns": "Table",
             "table": "Table",
             "table": "Table",
             "custom-data": "Custom data",
             "custom-data": "Custom data",
-            "google-sheets": "Google sheets",
+            "google-sheets": "Google Sheets",
             "elements": "Elements"
             "elements": "Elements"
           }
           }
         }
         }
       },
       },
       "loop-breakpoint": {
       "loop-breakpoint": {
         "name": "Loop breakpoint",
         "name": "Loop breakpoint",
-        "description": "To tell where loop data block must stop"
+        "description": "To indicate where the Loop Data block must stop"
       },
       },
       "take-screenshot": {
       "take-screenshot": {
         "name": "Take screenshot",
         "name": "Take screenshot",
@@ -744,15 +743,15 @@
         "saveToComputer": "Save screenshot to computer",
         "saveToComputer": "Save screenshot to computer",
         "types": {
         "types": {
           "title": "Take a screenshot of",
           "title": "Take a screenshot of",
-          "page": "Page",
-          "fullpage": "Full page",
+          "page": "A page",
+          "fullpage": "A full page",
           "element": "An element"
           "element": "An element"
         }
         }
       },
       },
       "switch-to": {
       "switch-to": {
         "name": "Switch frame",
         "name": "Switch frame",
-        "description": "Switch between main window and iframe",
-        "iframeSelector": "Iframe element selector",
+        "description": "Switch between the main window and an iframe",
+        "iframeSelector": "Element selector",
         "windowTypes": {
         "windowTypes": {
           "main": "Main window",
           "main": "Main window",
           "iframe": "Iframe"
           "iframe": "Iframe"

+ 4 - 4
src/locales/en/common.json

@@ -50,10 +50,10 @@
     "noData": "No data to show",
     "noData": "No data to show",
     "noTriggerBlock": "Can't find a trigger block",
     "noTriggerBlock": "Can't find a trigger block",
     "useDynamicData": "Learn how to add dynamic data",
     "useDynamicData": "Learn how to add dynamic data",
-    "delete": "Are you sure want to delete \"{name}\"?",
-    "empty": "Oppss... It's looks like you don't have any items",
-    "maxSizeExceeded": "The file size is the exceeded maximum allowed",
-    "notSaved": "Do you really want to leave? you have unsaved changes!",
+    "delete": "Are you sure you want to delete \"{name}\"?",
+    "empty": "Oops... It looks like you don't have any items",
+    "maxSizeExceeded": "The file size has exceeded the maximum allowed",
+    "notSaved": "Do you really want to leave? You have unsaved changes!",
     "somethingWrong": "Something went wrong",
     "somethingWrong": "Something went wrong",
     "limitExceeded": "You have exceeded the limit"
     "limitExceeded": "You have exceeded the limit"
   },
   },

+ 47 - 47
src/locales/en/newtab.json

@@ -20,7 +20,7 @@
     },
     },
     "categories": {
     "categories": {
       "my": "My Packages",
       "my": "My Packages",
-      "installed": "Installed Packages",
+      "installed": "Installed Packages"
     }
     }
   },
   },
   "scheduledWorkflow": {
   "scheduledWorkflow": {
@@ -52,7 +52,7 @@
     "add": "Add credential",
     "add": "Add credential",
     "use": {
     "use": {
       "title": "Used credentials",
       "title": "Used credentials",
-      "description": "This workflow using these credentials"
+      "description": "This workflow uses these credentials"
     }
     }
   },
   },
   "workflowPermissions": {
   "workflowPermissions": {
@@ -100,7 +100,7 @@
   },
   },
   "running": {
   "running": {
     "start": "Started on {date}",
     "start": "Started on {date}",
-    "message": "This only display the last 5 logs"
+    "message": "This only displays the last 5 logs"
   },
   },
   "settings": {
   "settings": {
     "theme": "Theme",
     "theme": "Theme",
@@ -125,7 +125,7 @@
       }
       }
     },
     },
     "deleteLog": {
     "deleteLog": {
-      "title": "Auto delete workflow logs",
+      "title": "Auto-delete workflow logs",
       "after": "Delete after",
       "after": "Delete after",
       "deleteAfter": {
       "deleteAfter": {
         "never": "Never",
         "never": "Never",
@@ -135,7 +135,7 @@
     "language": {
     "language": {
       "label": "Language",
       "label": "Language",
       "helpTranslate": "Can't find your language? Help translate.",
       "helpTranslate": "Can't find your language? Help translate.",
-      "reloadPage": "Reload the page to take effect"
+      "reloadPage": "Reload the page for the change to take effect"
     },
     },
     "menu": {
     "menu": {
       "backup": "Backup Workflows",
       "backup": "Backup Workflows",
@@ -149,7 +149,7 @@
       "invalidPassword": "Invalid password",
       "invalidPassword": "Invalid password",
       "workflowsAdded": "{count} workflows have been added",
       "workflowsAdded": "{count} workflows have been added",
       "name": "Backup workflows",
       "name": "Backup workflows",
-      "needSignin": "You need to sign in to your account first",
+      "needSignin": "You need to sign in first",
       "backup": {
       "backup": {
         "button": "Backup",
         "button": "Backup",
         "encrypt": "Encrypt with password"
         "encrypt": "Encrypt with password"
@@ -183,7 +183,7 @@
   "workflow": {
   "workflow": {
     "previewMode": {
     "previewMode": {
       "title": "Preview mode",
       "title": "Preview mode",
-      "description": "You're in preview mode, changes you made won't be saved"
+      "description": "You're in preview mode, changes you've made won't be saved"
     },
     },
     "pinWorkflow": {
     "pinWorkflow": {
       "pin": "Pin workflow",
       "pin": "Pin workflow",
@@ -225,33 +225,33 @@
     "host": {
     "host": {
       "title": "Host workflow",
       "title": "Host workflow",
       "set": "Set as host workflow",
       "set": "Set as host workflow",
-      "id": "Host Id",
+      "id": "Host ID",
       "add": "Add hosted workflow",
       "add": "Add hosted workflow",
       "sync": {
       "sync": {
         "title": "Sync",
         "title": "Sync",
         "description": "Sync with host workflow"
         "description": "Sync with host workflow"
       },
       },
       "messages": {
       "messages": {
-        "hostExist": "You already add this host",
-        "notFound": "Can't find hosted workflow with \"{id}\" id"
-      },
+        "hostExist": "You have already added this host",
+        "notFound": "Can't find a hosted workflow with the ID \"{id}\""
+      }
     },
     },
     "type": {
     "type": {
       "local": "Local",
       "local": "Local",
       "shared": "Shared",
       "shared": "Shared",
-      "host": "Host",
+      "host": "Host"
     },
     },
     "unpublish": {
     "unpublish": {
       "title": "Unpublish workflow",
       "title": "Unpublish workflow",
       "button": "Unpublish",
       "button": "Unpublish",
-      "body": "Are you sure want to unpublish \"{name}\" workflow?"
+      "body": "Are you sure you want to unpublish the workflow \"{name}\"?"
     },
     },
     "share": {
     "share": {
       "url": "Share URL",
       "url": "Share URL",
       "publish": "Publish",
       "publish": "Publish",
       "sharedAs": "Shared as \"{name}\"",
       "sharedAs": "Shared as \"{name}\"",
       "title": "Share workflow",
       "title": "Share workflow",
-      "download": "Add workflow to local",
+      "download": "Save workflow to local",
       "edit": "Edit description",
       "edit": "Edit description",
       "fetchLocal": "Fetch local workflow",
       "fetchLocal": "Fetch local workflow",
       "update": "Update",
       "update": "Update",
@@ -266,7 +266,7 @@
       "title": "Protect workflow",
       "title": "Protect workflow",
       "remove": "Remove protection",
       "remove": "Remove protection",
       "button": "Protect",
       "button": "Protect",
-      "note": "Note: you must remember this password, this password will be required to edit and delete the workflow later on."
+      "note": "Note: this password will be required later on to edit or delete the workflow."
     },
     },
     "locked": {
     "locked": {
       "title": "This Workflow is Protected",
       "title": "This Workflow is Protected",
@@ -281,7 +281,7 @@
     },
     },
     "table": {
     "table": {
       "title": "Table | Tables",
       "title": "Table | Tables",
-      "placeholder": "Search or add column",
+      "placeholder": "Search or add a column",
       "select": "Select column",
       "select": "Select column",
       "column": {
       "column": {
         "name": "Column name",
         "name": "Column name",
@@ -303,15 +303,15 @@
     },
     },
     "settings": {
     "settings": {
       "saveLog": "Save workflow log",
       "saveLog": "Save workflow log",
-      "executedBlockOnWeb": "Show executed block on web page",
+      "executedBlockOnWeb": "Show executed block on the web page",
       "notification": {
       "notification": {
         "title": "Workflow notification",
         "title": "Workflow notification",
-        "description": "Show workflow status(success or failed) after it executed",
-        "noPermission": "Automa requires \"notifications\" permission to make this work"
+        "description": "Show workflow status (success or failed) after it executed",
+        "noPermission": "This option requires \"notifications\" permission to work"
       },
       },
       "publicId": {
       "publicId": {
-        "title": "Workflow public Id",
-        "description": "Use this public id to execute workflow using JS custom event"
+        "title": "Workflow public ID",
+        "description": "Set a public ID to execute the workflow via a JavaScript custom event"
       },
       },
       "defaultColumn": {
       "defaultColumn": {
         "title": "Insert into the default column",
         "title": "Insert into the default column",
@@ -325,11 +325,11 @@
       "clearCache": {
       "clearCache": {
         "title": "Clear cache",
         "title": "Clear cache",
         "description": "Clear cache (state and loop index) of the workflow",
         "description": "Clear cache (state and loop index) of the workflow",
-        "info": "Successful clear workflow cache",
+        "info": "Successfully cleared workflow cache",
         "btn": "Clear"
         "btn": "Clear"
       },
       },
       "reuseLastState": {
       "reuseLastState": {
-        "title": "Reuse last workflow state",
+        "title": "Reuse last workflow's state",
         "description": "Use the state data (table, variables, and global data) from the last executed workflow"
         "description": "Use the state data (table, variables, and global data) from the last executed workflow"
       },
       },
       "debugMode": {
       "debugMode": {
@@ -339,11 +339,11 @@
       "restartWorkflow": {
       "restartWorkflow": {
         "for": "Restart for",
         "for": "Restart for",
         "times": "Times",
         "times": "Times",
-        "description": "Max how many times the workflow will restart"
+        "description": "Max number of times the workflow will restart"
       },
       },
       "onError": {
       "onError": {
         "title": "On workflow error",
         "title": "On workflow error",
-        "description": "Set what to do when an error occurs in the workflow",
+        "description": "Set the action to take if an error occurs in the workflow",
         "items": {
         "items": {
           "keepRunning": "Keep running",
           "keepRunning": "Keep running",
           "stopWorkflow": "Stop workflow",
           "stopWorkflow": "Stop workflow",
@@ -359,8 +359,8 @@
       },
       },
       "tabLoadTimeout": {
       "tabLoadTimeout": {
         "title": "Tab load timeout",
         "title": "Tab load timeout",
-        "description": "Maximum time to load tab in milliseconds, pass 0 to disable the timeout."
-      },
+        "description": "Maximum time to load a tab in milliseconds, input 0 to disable the timeout"
+      }
     }
     }
   },
   },
   "collection": {
   "collection": {
@@ -374,7 +374,7 @@
     "options": {
     "options": {
       "atOnce": {
       "atOnce": {
         "title": "Execute all workflows in the collection at once",
         "title": "Execute all workflows in the collection at once",
-        "description": "Block not gonna executed when using this option"
+        "description": "Blocks will not execute when this option is used"
       }
       }
     },
     },
     "globalData": {
     "globalData": {
@@ -382,8 +382,8 @@
     }
     }
   },
   },
   "log": {
   "log": {
-    "flowId": "Flow Id",
-    "goBack": "Go back to \"{name}\" log",
+    "flowId": "Flow ID",
+    "goBack": "Go back to \"{name}\"'s logs",
     "goWorkflow": "Go to workflow",
     "goWorkflow": "Go to workflow",
     "startedDate": "Started date",
     "startedDate": "Started date",
     "duration": "Duration",
     "duration": "Duration",
@@ -392,7 +392,7 @@
     "deleteSelected": "Delete selected logs",
     "deleteSelected": "Delete selected logs",
     "clearLogs": {
     "clearLogs": {
       "title": "Clear logs",
       "title": "Clear logs",
-      "description": "Are you sure to clear all logs?"
+      "description": "Are you sure you want to clear all logs?"
     },
     },
     "types": {
     "types": {
       "stop": "Workflow is stopped",
       "stop": "Workflow is stopped",
@@ -401,31 +401,31 @@
     "messages": {
     "messages": {
       "url-empty": "URL is empty",
       "url-empty": "URL is empty",
       "invalid-url": "URL is not valid",
       "invalid-url": "URL is not valid",
-      "conditions-empty": "Conditions is empty",
+      "conditions-empty": "Conditions are empty",
       "invalid-proxy-host": "Invalid proxy host",
       "invalid-proxy-host": "Invalid proxy host",
       "workflow-disabled": "Workflow is disabled",
       "workflow-disabled": "Workflow is disabled",
       "selector-empty": "Element selector is empty",
       "selector-empty": "Element selector is empty",
-      "invalid-body": "Content body is not valid JSON",
-      "invalid-active-tab": "\"{url}\" is invalid URL",
-      "empty-spreadsheet-id": "Spreadsheet Id is empty",
+      "invalid-body": "Content body is not a valid JSON",
+      "invalid-active-tab": "\"{url}\" is an invalid URL",
+      "empty-spreadsheet-id": "Spreadsheet ID is empty",
       "invalid-loop-data": "Invalid data to loop through",
       "invalid-loop-data": "Invalid data to loop through",
       "empty-workflow": "You must select a workflow first",
       "empty-workflow": "You must select a workflow first",
-      "active-tab-removed": "Workflow active tab is removed",
+      "active-tab-removed": "Workflow active tab was removed",
       "empty-spreadsheet-range": "Spreadsheet range is empty",
       "empty-spreadsheet-range": "Spreadsheet range is empty",
-      "stop-timeout": "Workflow is stopped because of timeout",
+      "stop-timeout": "Workflow was stopped due to timeout",
       "no-file-access": "Automa doesn't have access to the file",
       "no-file-access": "Automa doesn't have access to the file",
-      "no-workflow": "Can't find workflow with \"{workflowId}\" ID",
-      "no-match-tab": "Can't find a tab with \"{pattern}\" patterns",
-      "no-clipboard-acces": "Don't have permission to access clipboard",
+      "no-workflow": "Can't find a workflow with the ID \"{workflowId}\"",
+      "no-match-tab": "Can't find a tab matching the pattern \"{pattern}\"",
+      "no-clipboard-acces": "Don't have permission to access the clipboard",
       "browser-not-supported": "This feature not supported in {browser} browser",
       "browser-not-supported": "This feature not supported in {browser} browser",
-      "element-not-found": "Can't find an element with \"{selector}\" selector.",
-      "no-permission": "Don't have \"{permission}\" permission to do this action",
-      "not-iframe": "Element with \"{selector}\" selector is not an Iframe element",
-      "iframe-not-found": "Can't find an Iframe element with \"{selector}\" selector.",
+      "element-not-found": "Can't find an element with the selector \"{selector}\"",
+      "no-permission": "Don't have \"{permission}\" permission to perform this action",
+      "not-iframe": "Element with \"{selector}\" selector is not an iframe element",
+      "iframe-not-found": "Can't find an iframe element with the selector \"{selector}\"",
       "workflow-infinite-loop": "Can't execute the workflow to prevent an infinite loop",
       "workflow-infinite-loop": "Can't execute the workflow to prevent an infinite loop",
       "not-debug-mode": "The workflow must run in debug mode for this block to work properly",
       "not-debug-mode": "The workflow must run in debug mode for this block to work properly",
-      "no-iframe-id": "Can't find Frame ID for the iframe element with \"{selector}\" selector",
-      "no-tab": "Can't connect to a tab, use \"New tab\" or \"Active tab\" block before using the \"{name}\" block."
+      "no-iframe-id": "Can't find the Frame ID for the iframe element with the selector \"{selector}\"",
+      "no-tab": "Can't connect to a tab, use \"New tab\" or \"Active tab\" block before using the \"{name}\" block"
     },
     },
     "description": {
     "description": {
       "text": "{status} on {date} in {duration}",
       "text": "{status} on {date} in {duration}",
@@ -437,7 +437,7 @@
     },
     },
     "delete": {
     "delete": {
       "title": "Delete log",
       "title": "Delete log",
-      "description": "Are you sure want to delete all the selected logs?"
+      "description": "Are you sure you want to delete all the selected logs?"
     },
     },
     "exportData": {
     "exportData": {
       "title": "Export data",
       "title": "Export data",

+ 2 - 2
src/locales/en/popup.json

@@ -25,8 +25,8 @@
       "delete": "Delete workflow",
       "delete": "Delete workflow",
       "type": {
       "type": {
         "host": "Host",
         "host": "Host",
-        "local": "Local",
+        "local": "Local"
       }
       }
-    },
+    }
   }
   }
 }
 }

+ 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"
+      }
+    }
+  }
+}

+ 2 - 2
src/popup/pages/Home.vue

@@ -122,8 +122,8 @@
       class="bg-accent fixed bottom-5 left-0 m-4 p-4 rounded-lg dark:text-black text-white shadow-md"
       class="bg-accent fixed bottom-5 left-0 m-4 p-4 rounded-lg dark:text-black text-white shadow-md"
     >
     >
       <p class="leading-tight text-sm">
       <p class="leading-tight text-sm">
-        If the workflow runs for less than 5 minutes, you set it to run in the
-        background in
+        If the workflow runs for less than 5 minutes, set it to run in the
+        background in the
         <a
         <a
           href="https://docs.automa.site/workflow/settings.html#workflow-execution"
           href="https://docs.automa.site/workflow/settings.html#workflow-execution"
           class="font-semibold underline"
           class="font-semibold underline"

+ 3 - 2
src/utils/shared.js

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