Browse Source

Merge pull request #1704 from AMendoza180890/main

feat(locale): add ES locale
Ahmad Kholid 1 year ago
parent
commit
e94f03222d
6 changed files with 1433 additions and 0 deletions
  1. 1 0
      src/lib/dayjs.js
  2. 806 0
      src/locales/es/blocks.json
  3. 77 0
      src/locales/es/common.json
  4. 516 0
      src/locales/es/newtab.json
  5. 32 0
      src/locales/es/popup.json
  6. 1 0
      src/utils/shared.js

+ 1 - 0
src/lib/dayjs.js

@@ -7,6 +7,7 @@ import 'dayjs/locale/fr';
 import 'dayjs/locale/it';
 import 'dayjs/locale/uk';
 import 'dayjs/locale/tr';
+import 'dayjs/locale/es';
 
 dayjs.extend(relativeTime);
 

+ 806 - 0
src/locales/es/blocks.json

@@ -0,0 +1,806 @@
+{
+  "collection": {
+    "blocks": {
+      "export-result": {
+        "name": "Exportar los resultados",
+        "description": "Exportar el resultado de la recogida como JSON"
+      }
+    }
+  },
+  "workflow": {
+    "blocks": {
+      "base": {
+        "title": "Bloques",
+        "moveToGroup": "Mover bloque a grupo de bloques",
+        "selector": "Selector de elementos",
+        "selectorOptions": "Opciones de selección",
+        "timeout": "Tiempo de espera (milisegundos)",
+        "noPermission": "Automa no tiene permisos suficientes para realizar esta acción",
+        "grantPermission": "Conceder permiso",
+        "action": "Acción",
+        "element": {
+          "select": "Seleccione un elemento",
+          "verify": "Verificar selector"
+        },
+        "settings": {
+          "title": "Ajustes del bloque",
+          "blockTimeout": {
+            "title": "Tiempo de espera de ejecución del bloque (milisegundo)",
+            "description": "El tiempo máximo de ejecución del bloque (de 0 a desactivar)"
+          },
+          "line": {
+            "title": "Líneas",
+            "label": "Etiqueta",
+            "animated": "Animated",
+            "select": "Seleccionar línea",
+            "to": "Línea a {name} bloque",
+            "lineColor": "Color"
+          }
+        },
+        "toggle": {
+          "enable": "Habilitar bloque",
+          "disable": "Deshabilitar bloque"
+        },
+        "onError": {
+          "info": "Estas normas se aplicarán cuando se produzca un error en el bloque",
+          "button": "error",
+          "title": "En caso de error",
+          "retry": "Reintentar acción",
+          "fallbackTitle": "Se ejecutará cuando se produzca un error en el bloque",
+          "times": {
+            "name": "Tiempo",
+            "description": "El número de veces que se debe reintentar la acción"
+          },
+          "interval": {
+            "name": "Intervalo",
+            "description": "El intervalo de tiempo a esperar entre cada intento",
+            "second": "Segundos"
+          },
+          "toDo": {
+            "error": "Lanzar error",
+            "continue": "Seguir fluyendo",
+            "fallback": "Ejecutar fallback",
+            "restart": "Reiniciar el flujo"
+          },
+          "insertData": {
+            "name": "Insertar datos"
+          }
+        },
+        "table": {
+          "checkbox": "Insertar en tabla",
+          "select": "Seleccionar columna",
+          "extraRow": {
+            "checkbox": "Agregar una fila extra",
+            "placeholder": "Valor",
+            "title": "Valor de la fila extra"
+          }
+        },
+        "findElement": {
+          "placeholder": "Encontrar elemento por",
+          "options": {
+            "cssSelector": "CSS Selector",
+            "xpath": "XPath"
+          }
+        },
+        "markElement": {
+          "title": "Un elemento no se seleccionará si ya se ha seleccionado antes",
+          "text": "Elemento de marca"
+        },
+        "multiple": {
+          "title": "Seleccionar varios elementos",
+          "text": "Multiples"
+        },
+        "waitSelector": {
+          "title": "Esperar al selector",
+          "timeout": "Tiempo de espera del selector (ms)"
+        },
+        "downloads": {
+          "onConflict": {
+            "uniquify": "Uniquify",
+            "overwrite": "Sobrescribir",
+            "prompt": "Prompt"
+          }
+        }
+      },
+      "wait-connections": {
+        "name": "Conexiones de espera",
+        "description": "Esperar todas las conexiones antes de continuar con el siguiente bloque",
+        "specificFlow": "Continuar sólo un flujo específico",
+        "selectFlow": "Seleccionar flujo"
+      },
+      "cookie": {
+        "name": "Cookie",
+        "description": "Obtener, establecer o eliminar cookies",
+        "types": {
+          "get": "Obtener cookie",
+          "set": "Establecer cookie",
+          "remove": "Eliminar cookies",
+          "getAll": "Obtener todas las cookies"
+        },
+        "useJson": "Utilizar el formato JSON"
+      },
+      "note": {
+        "name": "Nota"
+      },
+      "slice-variable": {
+        "name": "Variable de corte",
+        "description": "Extrae una sección del valor de una variable",
+        "start": "Iniciar index",
+        "end": "Finalizar index"
+      },
+      "workflow-state": {
+        "name": "Estado del Flujo de Trabajo",
+        "description": "Gestionar los estados de los flujos de trabajo",
+        "actions": {
+          "stop": "Detener flujos de trabajo"
+        }
+      },
+      "regex-variable": {
+        "name": "RegEx variable",
+        "description": "Comparación de un valor variable con una expresión regular"
+      },
+      "data-mapping": {
+        "source": "Fuente",
+        "destination": "Destino",
+        "name": "mappeando Datos",
+        "edit": "Editar los datos del mapa",
+        "dataSource": "Fuente de Datos",
+        "description": "Asignar datos de una variable o tabla",
+        "addSource": "Añadir fuente",
+        "addDestination": "Añadir destino"
+      },
+      "sort-data": {
+        "name": "Ordenar datos",
+        "description": "Ordenar los elementos de datos",
+        "property": "Ordenar por la propiedad del artículo",
+        "addProperty": "Añadir propiedad"
+      },
+      "increase-variable": {
+        "name": "Aumento variable",
+        "description": "Aumentar el valor de una variable en una cantidad específica",
+        "increase": "Aumentar en"
+      },
+      "notification": {
+        "name": "notificación",
+        "description": "Mostrar una notificación",
+        "title": "Titulo",
+        "message": "Mensaje",
+        "imageUrl": "Imagen URL (opcional)",
+        "iconUrl": "Icono URL (opcional)"
+      },
+      "delete-data": {
+        "name": "Borrar datos",
+        "description": "Borrar datos de tablas o variables",
+        "from": "Datos de",
+        "allColumns": "[All columns]"
+      },
+      "log-data": {
+        "name": "Obtener datos de registro",
+        "description": "Obtener los últimos datos de registro de un flujo de trabajo",
+        "data": "Log data"
+      },
+      "tab-url": {
+        "name": "Get tab URL",
+        "description": "Obtener la URL de la pestaña",
+        "select": "Seleccionar pestaña",
+        "types": {
+          "active-tab": "Pestaña Activa",
+          "all": "All tabs"
+        },
+        "query": {
+          "title": "Query",
+          "matchPatterns": "@:workflow.blocks.switch-tab.matchPattern (opcional)",
+          "tabTitle": "Titulo de la pestaña (opcional)"
+        }
+      },
+      "reload-tab": {
+        "name": "Recargar pestaña",
+        "description": "Recargar la pestaña activa"
+      },
+      "press-key": {
+        "name": "Presionar tecla",
+        "description": "Presionar una tecla o una combinación",
+        "target": "Elemento objetivo (opcional)",
+        "key": "Key",
+        "detect": "Detect key",
+        "actions": {
+          "press-key": "Presione una tecla",
+          "multiple-keys": "Presione muchas teclas"
+        },
+        "press-time": "Tiempo de pulsación (milisegundos)"
+      },
+      "save-assets": {
+        "name": "Guardar activos",
+        "description": "Guardar activos (image, video, audio, or file) de un elemento o URL",
+        "filename": "Nombre del archivo (opcional)",
+        "saveDownloadIds": "Guardar los ID de descarga de los artículos",
+        "contentTypes": {
+          "title": "Type",
+          "element": "Elemento multimedia (imagen, audio o vídeo)",
+          "url": "URL"
+        }
+      },
+      "handle-dialog": {
+        "name": "Handle dialog",
+        "description": "Acepta o rechaza un cuadro de diálogo iniciado por JavaScript (alerta, confirmación, aviso).)",
+        "accept": "Aceptar diálogo",
+        "promptText": {
+          "label": "Prompt text (opcional)",
+          "description": "El texto a introducir en el diálogo antes de aceptar"
+        }
+      },
+      "handle-download": {
+        "name": "Handle download",
+        "description": "Handle downloaded file",
+        "timeout": "Tiempo de espera (milisegundos)",
+        "noPermission": "No tiene permiso para acceder a las descargas",
+        "onConflict": "En conflicto",
+        "waitFile": "Espere a que se descargue el archivo",
+        "downloadId": "ID de descarga de archivos (opcional)",
+        "filePath": "Ruta del archivo"
+      },
+      "insert-data": {
+        "name": "Insertar datos",
+        "description": "Insertar datos en una tabla o variable"
+      },
+      "clipboard": {
+        "name": "Portapapeles",
+        "description": "Obtener el texto copiado del portapapeles",
+        "data": "Datos del Portapapeles",
+        "noPermission": "No tiene permiso para acceder al portapapeles",
+        "grantPermission": "Conceder permiso",
+        "copySelection": "Copiar el texto seleccionado en la página",
+        "types": {
+          "get": "Obtener datos del portapapeles",
+          "insert": "Insertar texto en el portapapeles"
+        }
+      },
+      "hover-element": {
+        "name": "Hover element",
+        "description": "Hover over an element"
+      },
+      "create-element": {
+        "name": "Crear elemento",
+        "description": "Crear un elemento e insertarlo en la página",
+        "edit": "Editar elemento",
+        "wrap": "Envolver el elemento",
+        "insertEl": {
+          "title": "Insertar elemento",
+          "items": {
+            "before": "As first child",
+            "after": "As last child",
+            "next-sibling": "As next sibling",
+            "prev-sibling": "As previous sibling",
+            "replace": "Sustituir elemento de destino"
+          }
+        }
+      },
+      "upload-file": {
+        "name": "Cargar archivo",
+        "description": "Upload file into <input type=\"file\"> element",
+        "filePath": "URL o ruta de archivo",
+        "addFile": "Añadir archivo",
+        "onlyURL": "El navegador Firefox sólo admite la carga de archivos desde una URL.",
+        "requirement": "Lea los requisitos antes de utilizar este bloque",
+        "noFileAccess": "Automa no tiene acceso a los archivos"
+      },
+      "browser-event": {
+        "name": "Evento del navegador",
+        "description": "Ejecuta el siguiente bloque cuando se activa el evento especificado",
+        "events": "Eventos",
+        "timeout": "Tiempo de espera (milisegundos)",
+        "activeTabLoaded": "Pestaña Activa",
+        "setAsActiveTab": "Establecer como Pestaña Activa"
+      },
+      "blocks-group-2": {
+        "name": "@:workflow.blocks.blocks-group.name 2",
+        "description": "@:workflow.blocks.blocks-group.description"
+      },
+      "blocks-group": {
+        "name": "Grupo de Bloques",
+        "groupName": "Nombre del grupo",
+        "description": "Agrupando Bloques",
+        "dropText": "Arrastra y suelta el bloque aquí",
+        "cantAdd": "No se puede añadir \"{blockName}\" bloque al grupo"
+      },
+      "trigger": {
+        "name": "Trigger",
+        "description": "Bloque donde comenzará a ejecutarse el flujo de trabajo",
+        "addTime": "Añadir tiempo",
+        "selectDay": "Seleccionar día",
+        "timeExist": "Ya ha añadido un activador en {time} en {day}",
+        "fixedDelay": "Retraso fijo",
+        "contextMenus": {
+          "noPermission": "Este activador requiere \"contextMenus\" permiso para trabajar",
+          "grantPermission": "Conceder permiso",
+          "appearIn": "Aparecerá en",
+          "contextName": "Nombre del flujo de trabajo en el menú contextual"
+        },
+        "days": [
+          "Domingo",
+          "Lunes",
+          "Martes",
+          "Miércoles",
+          "Jueves",
+          "Viernes",
+          "Sábado"
+        ],
+        "useRegex": "Use regex",
+        "shortcut": {
+          "tooltip": "Atajo de registro",
+          "stopRecord": "Detener la grabación",
+          "checkboxTitle": "Ejecutar acceso directo incluso cuando estás en un elemento de entrada",
+          "checkbox": "Activo en entrada",
+          "note": "Nota: el atajo de teclado sólo funciona cuando estás en una página web"
+        },
+        "forms": {
+          "triggerWorkflow": "Trigger workflow",
+          "interval": "Intervalo (minutos)",
+          "delay": "Retraso (minutos)",
+          "date": "Fecha",
+          "time": "Tiempo",
+          "url": "URL or Regex",
+          "shortcut": "Atajo",
+          "cron-expression": "Expresión Cron"
+        },
+        "element-change": {
+          "target": "Elemento objetivo a observar",
+          "optionsInfo": "Qué mutación de elemento activará el flujo de trabajo",
+          "targetWebsite": "El patrón de coincidencia del sitio web en el que se encuentra el elemento de destino (haga clic para ver más ejemplos de patrones de coincidencia)",
+          "baseEl": {
+            "title": "Base element (opcional)",
+            "description": "Automa reiniciará la observación del elemento de destino cuando este elemento cambie"
+          },
+          "subtree": {
+            "title": "Incluir subárbol",
+            "description": "Ampliar la supervisión a todo el subárbol del elemento de destino"
+          },
+          "childList": {
+            "title": "Child list",
+            "description": "Supervisar la adición de nuevos elementos hijo o la eliminación de los existentes."
+          },
+          "attributes": {
+            "title": "Atributos",
+            "description": "Vigilar los cambios en los valores de los atributos del elemento de destino"
+          },
+          "attributeFilter": {
+            "title": "Filtro de atributos",
+            "separate": "Usa comas (,) Para separar los nombre de los atributos",
+            "description": "Supervisar sólo atributos específicos (dejar en blanco para supervisar todos)"
+          },
+          "characterData": {
+            "title": "Character data",
+            "description": "Supervisar los cambios en los datos de caracteres/texto dentro del elemento de destino."
+          }
+        },
+        "items": {
+          "manual": "Manualmente",
+          "interval": "Intervalo",
+          "cron-job": "Cron job",
+          "date": "En una fecha determinada",
+          "context-menu": "Menú contextual",
+          "element-change": "Al cambiar de elemento",
+          "specific-day": "En un día concreto",
+          "visit-web": "Al visitar un sitio web",
+          "on-startup": "Al iniciar el navegador",
+          "keyboard-shortcut": "Atajo de teclado"
+        }
+      },
+      "execute-workflow": {
+        "name": "Ejecutar flujo de trabajo",
+        "overwriteNote": "Esto sobrescribirá los datos globales del flujo de trabajo seleccionado",
+        "select": "Seleccionar flujo de trabajo",
+        "executeId": "Id de ejecución (opcional)",
+        "description": "",
+        "insertAllVars": "Utilizar todas las variables de flujo de trabajo actuales",
+        "insertVars": "Insertar variables de flujo de trabajo actuales",
+        "useCommas": "Utilice comas para separar el nombre de la variable",
+        "insertAllGlobalData": "Utilizar todo el flujo de trabajo actual globalData"
+      },
+      "google-sheets-drive": {
+        "name": "@:workflow.blocks.google-sheets.name (GDrive)",
+        "description": "@:workflow.blocks.google-sheets.description",
+        "connected": "Connected sheets",
+        "select": "Seleccionar hoja",
+        "connect": "Conectar hoja"
+      },
+      "google-drive": {
+        "name": "Google Drive",
+        "description": "Cargar archivos en Google Drive",
+        "actions": {
+          "upload": "Cargar archivos"
+        }
+      },
+      "google-sheets": {
+        "name": "Hojas de cálculo de Google",
+        "description": "Leer o actualizar datos de Google Sheets",
+        "previewData": "Previsualizar datos",
+        "firstRow": "Utilizar la primera fila como clave",
+        "keysAsFirstRow": "Utilizar llaves como primera fila",
+        "insertData": "Insertar datos",
+        "valueInputOption": "Opción de entrada de valor",
+        "insertDataOption": "Opción de insertar datos",
+        "rangeToSearch": "Rango para iniciar la búsqueda",
+        "dataFrom": {
+          "label": "Data from",
+          "options": {
+            "data-columns": "Table",
+            "custom": "Custom"
+          }
+        },
+        "refKey": {
+          "label": "Clave de referencia (opcional)",
+          "placeholder": "Key name"
+        },
+        "spreadsheetId": {
+          "label": "Id de hoja de cálculo",
+          "link": "Ver cómo obtener el Id de hoja de cálculo"
+        },
+        "range": {
+          "label": "Rango",
+          "link": "Haga clic para ver más ejemplos"
+        },
+        "select": {
+          "get": "Obtener los valores de las celdas de una hoja de cálculo",
+          "getRange": "Obtener rango de hoja de cálculo",
+          "update": "Actualizar los valores de las celdas de una hoja de cálculo",
+          "append": "Añadir valores de celdas de una hoja de cálculo",
+          "clear": "Borrar los valores de las celdas de una hoja de cálculo",
+          "create": "Crear una hoja de cálculo",
+          "add-sheet": "Añadir hoja"
+        }
+      },
+      "active-tab": {
+        "name": "Pestaña Activa",
+        "description": "Establece la pestaña en la que estás como Pestaña Activa"
+      },
+      "proxy": {
+        "name": "Proxy",
+        "description": "Establecer el proxy del navegador",
+        "clear": "Borrar todos los proxies",
+        "bypass": {
+          "label": "Bypass list",
+          "note": "Utilice comas (,) para separar las URL"
+        }
+      },
+      "new-window": {
+        "name": "Nueva ventana",
+        "description": "Crear una nueva ventana",
+        "top": "arriba",
+        "left": "izquierda",
+        "height": "alto",
+        "width": "ancho",
+        "note": "Nota: utilice 0 para desactivar",
+        "position": "Posición de la ventana",
+        "size": "Tamaño de la ventana",
+        "windowState": {
+          "placeholder": "Estado de la ventana",
+          "options": {
+            "normal": "Normal",
+            "minimized": "Minimizado",
+            "maximized": "Maximizado",
+            "fullscreen": "Pantalla completa"
+          }
+        },
+        "incognito": {
+          "text": "Establecer como ventana de incógnito",
+          "note": "Primero debe activar la opción 'Permitir en incógnito' para esta extensión."
+        }
+      },
+      "go-back": {
+        "name": "Volver atrás",
+        "description": "Volver a la página anterior"
+      },
+      "forward-page": {
+        "name": "Seguir adelante",
+        "description": "Pasar a la página siguiente"
+      },
+      "close-tab": {
+        "name": "Cerrar pestaña/ventana",
+        "description": "",
+        "url": "Patrones de coincidencia",
+        "activeTab": "Cerrar Pestaña Activa",
+        "allWindows": "Cerrar todas las ventanas"
+      },
+      "event-click": {
+        "name": "Elemento de clic",
+        "description": ""
+      },
+      "delay": {
+        "name": "Retraso",
+        "description": "Añade un retardo antes de ejecutar el siguiente bloque",
+        "input": {
+          "title": "Retraso en los milisegundos",
+          "placeholder": "(milisegundos)"
+        }
+      },
+      "parameter-prompt": {
+        "name": "Parameter Prompt"
+      },
+      "get-text": {
+        "name": "Obtener texto",
+        "description": "Obtener texto de un elemento",
+        "checkbox": "Insertar en tabla",
+        "includeTags": "Incluir etiquetas HTML",
+        "prefixText": {
+          "placeholder": "Text prefix",
+          "title": "Add prefix to the text"
+        },
+        "suffixText": {
+          "placeholder": "Text suffix",
+          "title": "Add suffix to the text"
+        }
+      },
+      "export-data": {
+        "name": "Exportar datos",
+        "description": "Exportar datos del flujo de trabajo",
+        "exportAs": "Exportar como",
+        "refKey": "Clave de referencia",
+        "bomHeader": "Add UTF-8 BOM",
+        "dataToExport": {
+          "placeholder": "Datos a exportar",
+          "options": {
+            "data-columns": "Table",
+            "google-sheets": "Hojas de cálculo de Google",
+            "variable": "Variable"
+          }
+        }
+      },
+      "element-scroll": {
+        "name": "Elemento de desplazamiento",
+        "description": "",
+        "scrollY": "Desplazamiento vertical",
+        "scrollX": "Desplazamiento horizontal",
+        "intoView": "Desplazarse a la vista",
+        "smooth": "Desplazamiento suave",
+        "incScrollX": "Incremento del desplazamiento horizontal",
+        "incScrollY": "Incrementar el desplazamiento vertical"
+      },
+      "switch-tab": {
+        "name": "Cambiar Pestaña",
+        "description": "Cambiar entre pestañas",
+        "matchPattern": "Match Patterns",
+        "url": "URL de la nueva pestaña",
+        "createIfNoMatch": "Crear si no hay coincidencias"
+      },
+      "new-tab": {
+        "name": "Nueva pestaña",
+        "description": "",
+        "url": "Nueva pestaña URL",
+        "tab-zoom": "Tab zoom",
+        "customUserAgent": "Use custom User-Agent",
+        "activeTab": "Establecer como Pestaña Activa",
+        "tabToGroup": "Agregar pestaña a un grupo",
+        "waitTabLoaded": "Espere a que se cargue la pestaña",
+        "updatePrevTab": {
+          "title": "Utilizar la pestaña abierta anteriormente en lugar de crear una nueva.",
+          "text": "Actualizar pestaña abierta anteriormente"
+        }
+      },
+      "link": {
+        "name": "Link",
+        "description": "Abrir elemento de enlace",
+        "openInNewTab": "Abrir en una nueva pestaña"
+      },
+      "attribute-value": {
+        "name": "Valor del atributo",
+        "description": "Obtener el valor de un atributo de un elemento",
+        "forms": {
+          "name": "Nombre del atributo",
+          "checkbox": "Insertar en tabla",
+          "column": "Seleccionar columna",
+          "value": "Valor del atributo",
+          "action": {
+            "get": "Obtener valor de atributo",
+            "set": "Establecer valor de atributo"
+          },
+          "extraRow": {
+            "checkbox": "Agregar fila extra",
+            "placeholder": "Valor",
+            "title": "Valor de la fila extra"
+          }
+        }
+      },
+      "forms": {
+        "name": "Formuario",
+        "description": "",
+        "selected": "Seleccionado",
+        "type": "Tipo de formulario",
+        "getValue": "Obtener valor del formulario",
+        "text-field": {
+          "name": "Campo de texto",
+          "value": "Valor",
+          "clearValue": "Borrar valor del formulario",
+          "delay": {
+            "placeholder": "Retraso",
+            "label": "Retraso al teclear (milisegundos)(0 para desactivar)"
+          }
+        },
+        "select": {
+          "name": "Select"
+        },
+        "radio": {
+          "name": "Radio"
+        },
+        "checkbox": {
+          "name": "Checkbox"
+        }
+      },
+      "repeat-task": {
+        "name": "Repetir la tarea",
+        "description": "",
+        "times": "tiempo",
+        "repeatFrom": "Repetir desde"
+      },
+      "javascript-code": {
+        "name": "codigo JavaScript",
+        "description": "Ejecute su código JavaScript en la página web",
+        "availabeFuncs": "Funciones disponibles:",
+        "removeAfterExec": "Eliminar tras la ejecución del bloque",
+        "everyNewTab": "Ejecutar en cada nueva pestaña",
+        "context": {
+          "name": "Contexto de ejecución",
+          "items": {
+            "website": "Pestaña Activa",
+            "background": "Background"
+          }
+        },
+        "modal": {
+          "tabs": {
+            "code": "Codigo JavaScript",
+            "preloadScript": "Script de precarga"
+          }
+        },
+        "timeout": {
+          "placeholder": "Tiempo de espera (milisegundos)",
+          "title": "Tiempo de espera de ejecución de código JavaScript"
+        }
+      },
+      "trigger-event": {
+        "name": "Evento desencadenante",
+        "description": "",
+        "selectEvent": "Seleccionar evento"
+      },
+      "conditions": {
+        "name": "Condiciones",
+        "add": "Añadir ruta",
+        "retryConditions": "Reintentar si no se cumplen las condiciones",
+        "description": "Bloque condicional",
+        "refresh": "Actualizar conexiones de condiciones",
+        "fallbackTitle": "Se ejecuta cuando todas las comparaciones no cumplen el requisito",
+        "equals": "Es igual a",
+        "gt": "Mayor que",
+        "gte": "Mayor o igual que",
+        "lt": "Menos de",
+        "lte": "Menor o igual que",
+        "ne": "No es igual",
+        "contains": "Contiene"
+      },
+      "element-exists": {
+        "name": "El elemento existe",
+        "description": "Comprobar si existe un elemento",
+        "selector": "Selector de elementos",
+        "fallbackTitle": "Se ejecuta cuando el elemento no existe",
+        "throwError": "Lanza un error si no existe",
+        "tryFor": {
+          "title": "Cuántas veces hay que intentar comprobar si el elemento existe",
+          "label": "Inténtalo"
+        },
+        "timeout": {
+          "label": "Tiempo de espera (milisegundos)",
+          "title": "Tiempo de espera para cada intento"
+        }
+      },
+      "webhook": {
+        "name": "Solicitud HTTP",
+        "description": "Realizar una solicitud HTTP",
+        "contentType": "Tipo de contenido",
+        "method": "Método de solicitud",
+        "url": "Solicitar URL",
+        "fallback": "Se ejecuta cuando falla la petición HTTP",
+        "buttons": {
+          "header": "Add header"
+        },
+        "timeout": {
+          "placeholder": "Tiempo de espera",
+          "title": "Tiempo de espera de ejecución de la solicitud HTTP (ms)"
+        },
+        "tabs": {
+          "headers": "Headers",
+          "body": "Body",
+          "response": "Respuesta"
+        }
+      },
+      "while-loop": {
+        "name": "Bucle while",
+        "description": "Ejecuta bloques mientras se cumple la condición",
+        "editCondition": "Editar condición",
+        "fallback": "Se ejecuta cuando la condición es falsa"
+      },
+      "loop-elements": {
+        "name": "Elementos de bucle",
+        "description": "Iterar por los elementos",
+        "loadMore": "Cargar más elementos",
+        "scrollToBottom": "Desplácese hasta abajo",
+        "scrollToTop": "Ir arriba",
+        "actions": {
+          "none": "Ninguno",
+          "click-element": "Haga clic en un elemento",
+          "scroll": "Desplácese",
+          "click-link": "Haga clic en un enlace",
+          "scroll-up": "Desplácese hacia arriba"
+        }
+      },
+      "loop-data": {
+        "name": "Datos del bucle",
+        "description": "Iterar a través de una tabla o de sus datos personalizados",
+        "loopId": "ID de bucle",
+        "refKey": "Clave de referencia",
+        "startIndex": "Empezar desde el índice",
+        "resumeLastWorkflow": "Reanudar el último flujo de trabajo",
+        "reverse": "Invertir el orden de los bucles",
+        "modal": {
+          "fileTooLarge": "Archivo demasiado grande para editar",
+          "maxFile": "El tamaño máximo del archivo es de 1 MB",
+          "options": {
+            "firstRow": "Utilizar la primera fila como clave"
+          }
+        },
+        "buttons": {
+          "clear": "Limpiar datos",
+          "insert": "Insertar datos",
+          "import": "Importar fichero"
+        },
+        "maxLoop": {
+          "title": "Número máximo de datos en bucle",
+          "label": "Datos máximos en bucle (0 para desactivar)"
+        },
+        "loopThrough": {
+          "placeholder": "En bucle",
+          "fromNumber": "From number",
+          "toNumber": "Al número",
+          "options": {
+            "numbers": "Números",
+            "variable": "Variable",
+            "data-columns": "Datos en columna",
+            "table": "Cuadro",
+            "custom-data": "Datos personalizados",
+            "google-sheets": "Hojas de cálculo de Google",
+            "elements": "Elementos"
+          }
+        }
+      },
+      "loop-breakpoint": {
+        "name": "Punto de interrupción del bucle",
+        "description": "Para indicar dónde debe detenerse el bloque Loop Data"
+      },
+      "take-screenshot": {
+        "name": "Hacer una captura de pantalla",
+        "fullPage": "Captura de pantalla de página completa",
+        "description": "Haz una captura de pantalla de la Pestaña Activa actual",
+        "imageQuality": "Calidad de la imagen",
+        "saveToColumn": "Insertar una captura de pantalla en una tabla",
+        "saveToComputer": "Guardar captura de pantalla en el ordenador",
+        "types": {
+          "title": "Haga una captura de pantalla de",
+          "page": "Una página",
+          "fullpage": "Una página completa",
+          "element": "Un elemento"
+        }
+      },
+      "switch-to": {
+        "name": "Switch frame",
+        "description": "Cambiar entre la ventana principal y un iframe",
+        "iframeSelector": "Selector de elementos",
+        "windowTypes": {
+          "main": "Ventana principal",
+          "iframe": "Iframe"
+        }
+      },
+      "debugMode": {
+        "title": "Modo depuración",
+        "description": "Ejecutar bloque utilizando el protocolo DevTools de Chrome"
+      }
+    }
+  }
+}

+ 77 - 0
src/locales/es/common.json

@@ -0,0 +1,77 @@
+{
+  "common": {
+    "dashboard": "Dashboard",
+    "workflow": "Flujo de Trabajo | Flujos de Trabajo",
+    "collection": "Coleccion | Colecciones",
+    "log": "Log | Logs",
+    "block": "Bloque | Bloques",
+    "schedule": "Horario",
+    "folder": "Carpeta | Carpetas",
+    "new": "Nuevo",
+    "docs": "Documentacion",
+    "search": "Buscar",
+    "example": "Ejemplo | Ejemplos",
+    "import": "Importar",
+    "export": "Exportar",
+    "rename": "Renombrar",
+    "execute": "Ejecutar",
+    "delete": "Eliminar",
+    "cancel": "Cancelar",
+    "settings": "Ajustes",
+    "options": "Opciones",
+    "confirm": "Confirmar",
+    "name": "Nombre",
+    "all": "Todo",
+    "add": "Agregar",
+    "save": "Guardar",
+    "data": "Dato",
+    "stop": "Detener",
+    "sheet": "Hoja",
+    "pause": "Pausar",
+    "resume": "Resumen",
+    "action": "Accion | Acciones",
+    "packages": "Paquete",
+    "storage": "Almacenamiento",
+    "editor": "editor",
+    "running": "Ejecutando",
+    "globalData": "Datos Globales",
+    "fileName": "Nombre del fichero",
+    "description": "Descripcion",
+    "disable": "Desactivar",
+    "disabled": "Desactivado",
+    "enable": "Habilitar",
+    "fallback": "Respuesta",
+    "update": "Actualizacion",
+    "feature": "Característica",
+    "duplicate": "Duplicado",
+    "password": "Contraseña",
+    "category": "Categoria",
+    "optional": "Opcional",
+    "0disable": "0 para desactivar",
+    "millisecond": "milisegundo | milisegundos"
+  },
+  "message": {
+    "noBlock": "Ningún bloque",
+    "noData": "No hay datos que lo demuestren",
+    "noTriggerBlock": "No puedo encontrar un bloque desencadenador",
+    "useDynamicData": "Aprende a añadir datos dinámicos",
+    "delete": "¿Estás seguro de que quieres borrar \"{name}\"?",
+    "empty": "Ups... Parece que usted no tiene ningún artículo",
+    "maxSizeExceeded": "El tamaño del archivo ha superado el máximo permitido",
+    "notSaved": "¿De verdad quieres irte? ¡Tienes cambios sin guardar!",
+    "somethingWrong": "Algo salió mal",
+    "limitExceeded": "Ha superado el límite"
+  },
+  "sort": {
+    "sortBy": "Ordenar por",
+    "name": "Nombre",
+    "createdAt": "Fecha de creación",
+    "updatedAt": "Última actualización",
+    "mostUsed": "Los más utilizados"
+  },
+  "logStatus": {
+    "stopped": "parado",
+    "error": "error",
+    "success": "éxito"
+  }
+}

+ 516 - 0
src/locales/es/newtab.json

@@ -0,0 +1,516 @@
+{
+  "home": {
+    "viewAll": "Ver todo",
+    "communities": "Comunidades"
+  },
+  "welcome": {
+    "title": "Bienvenido a Automa! 🎉",
+    "text": "Para empezar, lea la documentación o consulte los flujos de trabajo en Automa Marketplace.",
+    "marketplace": "Marketplace"
+  },
+  "packages": {
+    "name": "Package | Packages",
+    "add": "Añadir paquete",
+    "icon": "Icono del paquete",
+    "open": "Abrir paquetes",
+    "new": "Nuevo paquete",
+    "import": "Importar paquete",
+    "set": "Establecer como un paquete",
+    "settings": {
+      "asBlock": "Establecer paquete como bloque"
+    },
+    "categories": {
+      "my": "Mis Paquetes",
+      "installed": "Instalar Paquetes"
+    }
+  },
+  "scheduledWorkflow": {
+    "title": "Flujos de trabajo programados",
+    "nextRun": "Próxima ejecución",
+    "active": "Activar",
+    "refresh": "Refrescar",
+    "schedule":{
+      "title": "Horario",
+      "types": {
+        "everyDay": "Todos los días",
+        "general": "Cada {time}",
+        "interval": "Cada {time} minutos"
+      }
+    }
+  },
+  "storage": {
+    "title": "Almacenamiento",
+    "table": {
+      "add": "Añadir tabla",
+      "edit": "Editar Tabla",
+      "createdAt": "Creado en",
+      "modifiedAt": "Modificado en",
+      "rowsCount": "Recuento de filas",
+      "delete": "Borrar tabla"
+    }
+  },
+  "credential": {
+    "title": "Credencial | Credenciales",
+    "add": "Añadir credencial",
+    "use": {
+      "title": "Credenciales usadas",
+      "description": "Este flujo de trabajo utiliza estas credenciales"
+    }
+  },
+  "workflowPermissions": {
+    "title": "Permisos de flujo de trabajo",
+    "description": "Este flujo de trabajo requiere estos permisos para ejecutarse correctamente",
+    "contextMenus": {
+      "title": "Menú contextual",
+      "description": "Para ejecutar el flujo de trabajo a través del menú contextual"
+    },
+    "clipboardRead": {
+      "title": "Portapapeles",
+      "description": "Para acceder a los datos del portapapeles"
+    },
+    "notifications": {
+      "title": "Notificación",
+      "description": "Para mostrar una notificación"
+    },
+    "downloads": {
+      "title": "Descargar",
+      "description": "Guardar los activos de la página y cambiar el nombre del archivo descargado"
+    },
+    "cookies": {
+      "title": "Cookies",
+      "description": "Leer, establecer, o quitar cookies"
+    }
+  },
+  "updateMessage": {
+    "text1": "Automa ha sido actualizado a v{version},",
+    "text2": "ver las novedades."
+  },
+  "workflows": {
+    "folder": {
+      "new": "Nueva carpeta",
+      "name": "Nombre de la carpeta",
+      "delete": "Eliminar carpeta",
+      "rename": "Cambiar nombre de carpeta"
+    }
+  },
+  "auth": {
+    "title": "Auth",
+    "signIn": "Iniciar sesión",
+    "username": "Primero tienes que configurar tu nombre de usuario",
+    "clickHere": "Pulse aquí",
+    "text": "Tienes que iniciar sesión antes de poder hacerlo."
+  },
+  "running": {
+    "start": "Comenzó el {date}",
+    "message": "Esto sólo muestra los últimos 5 registros"
+  },
+  "settings": {
+    "theme": "Tema",
+    "shortcuts": {
+      "duplicate": "Acceso directo ya utilizado por \"{name}\""
+    },
+    "editor": {
+      "title": "Titulo",
+      "curvature": {
+        "title": "Curvatura de la línea",
+        "line": "Línea",
+        "reroute": "Redirigir",
+        "rerouteFirstLast": "Redirigir primer y último punto"
+      },
+      "arrow": {
+        "title": "Fecha",
+        "description": "Añadir una flecha al final de la línea"
+      },
+      "snapGrid": {
+        "title": "Ajustar a la cuadrícula",
+        "description": "Ajustarse a la cuadrícula al mover un bloque"
+      },
+      "saveWhenExecute": {
+        "title": "Guardado automático al ejecutar el flujo de trabajo",
+        "description": "Los cambios en el flujo de trabajo se guardarán al ejecutarlo"
+      }
+    },
+    "deleteLog": {
+      "title": "Borrado automático de registros de flujo de trabajo",
+      "after": "Borrar después de",
+      "deleteAfter": {
+        "never": "Nunca",
+        "days": "{day} dias"
+      }
+    },
+    "language": {
+      "label": "Idioma",
+      "helpTranslate": "¿No encuentra su idioma? Puedes ayuda a traducir.",
+      "reloadPage": "Recargar la página para que el cambio surta efecto"
+    },
+    "menu": {
+      "backup": "Flujos de trabajo de copia de seguridad",
+      "editor": "Editor",
+      "general": "General",
+      "shortcuts": "Atajos",
+      "about": "Acerca de"
+    },
+    "backupWorkflows": {
+      "title": "Copia de seguridad local",
+      "invalidPassword": "Contraseña no válida",
+      "workflowsAdded": "{count} se han añadido flujos de trabajo",
+      "name": "Flujos de trabajo de copia de seguridad",
+      "needSignin": "Primero tienes que registrarte",
+      "backup": {
+        "button": "Copia de seguridad",
+        "settings": "Configuración de la copia de seguridad",
+        "encrypt": "Cifrar con contraseña",
+        "schedule": "Programar copia de seguridad local"
+      },
+      "restore": {
+        "title": "Restaurar flujos de trabajo",
+        "button": "Restaurar",
+        "update": "Actualizar si el flujo de trabajo existe"
+      },
+      "cloud": {
+        "buttons": {
+          "local": "Local",
+          "cloud": "Nube"
+        },
+        "location": "Ubicación",
+        "delete": "Eliminar copia de seguridad",
+        "title": "Respaldo en la Nube",
+        "sync": "Sincronizar",
+        "lastSync": "Ultima Sincronización",
+        "lastBackup": "Ultimo Respaldo",
+        "select": "Seleccionar flujos de trabajo",
+        "storedWorkflows": "Flujos de trabajo almacenados en la nube",
+        "selected": "Selección",
+        "selectText": "Seleccione los flujos de trabajo de los que desea hacer una copia de seguridad",
+        "selectAll": "Seleccionar todo",
+        "deselectAll": "Deseleccionar todo",
+        "needSelectWorkflow": "Debe seleccionar los flujos de trabajo de los que desea hacer una copia de seguridad"
+      }
+    }
+  },
+  "workflow": {
+    "events": {
+      "title": "Eventos de flujo de trabajo",
+      "add-action": "Añadir acción",
+      "description": "Realizar acciones cuando se produzca el evento.",
+      "event": "Evento | Eventos",
+      "action": "Acción",
+      "actions": {
+        "js-code": {
+          "title": "Ejecutar código JS"
+        },
+        "http-request": {
+          "title": "Solicitud HTTP"
+        }
+      },
+      "types": {
+        "finish:success": {
+          "name": "Finalizar (éxito)",
+          "description": "La ejecución del flujo de trabajo finaliza con éxito"
+        },
+        "finish:failed": {
+          "name": "Finalizar (fallido)",
+          "description": "La ejecución del flujo de trabajo ha finalizado con error"
+        }
+      }
+    },
+    "previewMode": {
+      "title": "Modo de vista previa",
+      "description": "Estás en el modo de vista previa, los cambios realizados no se guardarán."
+    },
+    "pinWorkflow": {
+      "pin": "Fijar flujo de trabajo",
+      "unpin": "Quitar flujo de trabajo",
+      "pinned": "Flujos de trabajo anclados"
+    },
+    "parameters": {
+      "add": "Añadir parámetro",
+      "preferInTab": "Preferir parámetros de entrada en la pestaña"
+    },
+    "my": "Mis flujos de trabajo",
+    "testing": {
+      "title": "Modo de Prueba",
+      "nextBlock": "Siguiente bloque",
+      "startRun": "Comience a ejecutar en",
+      "disabled": "Guarde primero los cambios"
+    },
+    "import": "Importar flujo de trabajo",
+    "new": "Nuevo Flujo",
+    "delete": "Eliminar Flujo",
+    "browse": "Explorar flujos",
+    "name": "Nombre del flujo",
+    "rename": "Renombrar flujo",
+    "backupCloud": "Copia de seguridad en la nube del flujo",
+    "add": "Añadir flujo de trabajo",
+    "clickToEnable": "Haga clic para activar",
+    "toggleSidebar": "Alternar barra lateral",
+    "cantEdit": "No se puede editar el flujo de trabajo compartido",
+    "undo": "Deshacer",
+    "redo": "Rehacer",
+    "autoAlign": {
+      "title": "Auto-alear"
+    },
+    "blocksFolder": {
+      "title": "Bloque de carpetas",
+      "add": "Añadir bloques a la carpeta",
+      "save": "Guardar en carpeta"
+    },
+    "searchBlocks": {
+      "title": "Buscar bloques en el editor"
+    },
+    "conditionBuilder": {
+      "title": "Condición de constructor",
+      "add": "Añadir condición",
+      "and": "AND",
+      "or": "OR",
+      "topAwait": "Apoyar la espera de alto nivel y \"automaRefData\" función"
+    },
+    "host": {
+      "title": "Flujo de trabajo del host",
+      "set": "Establecer como flujo de trabajo anfitrión",
+      "id": "ID de host",
+      "add": "Añadir flujo de trabajo alojado",
+      "sync": {
+        "title": "Sincronización",
+        "description": "Sincronización con el flujo de trabajo del host"
+      },
+      "messages": {
+        "hostExist": "Ya ha añadido este host",
+        "notFound": "No se puede encontrar un flujo de trabajo alojado con el ID \"{id}\""
+      }
+    },
+    "type": {
+      "local": "Local",
+      "shared": "Compartido",
+      "host": "Host"
+    },
+    "unpublish": {
+      "title": "Flujo de trabajo de despublicación",
+      "button": "Anular la publicación",
+      "body": "¿Está seguro de que desea anular la publicación del flujo de trabajo \"{name}\"?"
+    },
+    "share": {
+      "url": "Compartir URL",
+      "publish": "Publique",
+      "sharedAs": "Compartido como \"{name}\"",
+      "title": "Compartir flujo de trabajo",
+      "download": "Guardar flujo de trabajo en local",
+      "edit": "Editar descripción",
+      "fetchLocal": "Obtener flujo de trabajo local",
+      "update": "Actualización",
+      "unpublish": "Anule la publicación"
+    },
+    "variables": {
+      "title": "Variable | Variables",
+      "name": "Nombre de la variable",
+      "assign": "Asignar a variable"
+    },
+    "protect": {
+      "title": "Proteger el flujo de trabajo",
+      "remove": "Quitar la protección",
+      "button": "Proteja",
+      "note": "Nota: esta contraseña será necesaria más adelante para editar o eliminar el flujo de trabajo."
+    },
+    "locked": {
+      "title": "Este flujo de trabajo está protegido",
+      "body": "Introduce la contraseña para desbloquearlo",
+      "unlock": "Desbloquear",
+      "messages": {
+        "incorrect-password": "Contraseña incorrecta"
+      }
+    },
+    "state": {
+      "executeBy": "Ejecutado por: \"{name}\""
+    },
+    "table": {
+      "title": "Tabla | Tablas",
+      "placeholder": "Buscar o añadir una columna",
+      "select": "Seleccionar columna",
+      "column": {
+        "name": "Nombre de columna",
+        "type": "Tipo de datos"
+      }
+    },
+    "sidebar": {
+      "workflowIcon": "Icono de flujo de trabajo"
+    },
+    "editor": {
+      "zoomIn": "Ampliar",
+      "zoomOut": "Alejar",
+      "resetZoom": "Restablecer zoom",
+      "duplicate": "Duplicar",
+      "copy": "Copiar",
+      "paste": "Pegar",
+      "group": "Agrupar bloques",
+      "ungroup": "Desagrupar bloques"
+    },
+    "settings": {
+      "saveLog": "Guardar registro de flujo de trabajo",
+      "executedBlockOnWeb": "Mostrar el bloque ejecutado en la página web",
+      "notification": {
+        "title": "Notificación de flujo de trabajo",
+        "description": "Mostrar el estado del flujo de trabajo (success or failed) después de ejecutar",
+        "noPermission": "Esta opción requiere \"notifications\" permiso para trabajar"
+      },
+      "publicId": {
+        "title": "ID público del flujo de trabajo",
+        "description": "Establezca un ID público para ejecutar el flujo de trabajo a través de un evento personalizado de JavaScript"
+      },
+      "defaultColumn": {
+        "title": "Insertar en la columna por defecto",
+        "description": "Insertar datos en la columna por defecto si no hay ninguna columna seleccionada en el bloque",
+        "name": "Nombre de columna por defecto"
+      },
+      "autocomplete": {
+        "title": "Autocompletar",
+        "description": "Activar autocompletar en el bloque de entrada (desactivar si hace inestable Automa)"
+      },
+      "clearCache": {
+        "title": "Limpiar cache",
+        "description": "Limpiar cache (state and loop index) del flujo de trabajo",
+        "info": "Se ha borrado correctamente la caché del flujo de trabajo",
+        "btn": "Limpiar"
+      },
+      "reuseLastState": {
+        "title": "Reutilizar el estado del último flujo de trabajo",
+        "description": "Utilizar los datos estatales (tabla, variables y datos globales) del último flujo de trabajo ejecutado"
+      },
+      "debugMode": {
+        "title": "Modo depuración",
+        "description": "Ejecutar el flujo de trabajo mediante el protocolo DevTools de Chrome"
+      },
+      "restartWorkflow": {
+        "for": "Reiniciar",
+        "times": "Veces",
+        "description": "Número máximo de veces que se reiniciará el flujo de trabajo"
+      },
+      "onError": {
+        "title": "Error en el flujo de trabajo",
+        "description": "Establecer la acción a tomar si se produce un error en el flujo de trabajo",
+        "items": {
+          "keepRunning": "Seguir Ejecutando",
+          "stopWorkflow": "Detener el flujo de trabajo",
+          "restartWorkflow": "Reiniciar el flujo de trabajo"
+        }
+      },
+      "timeout": {
+        "title": "Tiempo de espera del flujo de trabajo (milisegundos)"
+      },
+      "blockDelay": {
+        "title": "Retraso en bloque (milisegundos)",
+        "description": "Añadir retardo antes de ejecutar cada uno de los bloques"
+      },
+      "tabLoadTimeout": {
+        "title": "Tiempo de espera de carga de la pestaña",
+        "description": "Tiempo máximo para cargar una pestaña en milisegundos, introduzca 0 para desactivar el tiempo de espera"
+      }
+    }
+  },
+  "collection": {
+    "description": "Ejecute sus flujos de trabajo en secuencia",
+    "new": "Nueva colección",
+    "delete": "Borrar colección",
+    "add": "Añadir colección",
+    "rename": "Renombrar colección",
+    "flow": "Flujo",
+    "dragDropText": "Introduzca aquí un flujo de trabajo o un bloque",
+    "options": {
+      "atOnce": {
+        "title": "Ejecutar todos los flujos de trabajo de la colección a la vez",
+        "description": "Los bloques no se ejecutarán cuando se utilice esta opción"
+      }
+    },
+    "globalData": {
+      "note": "Esto sobrescribirá los datos globales del flujo de trabajo"
+    }
+  },
+  "log": {
+    "flowId": "ID de flujo",
+    "goBack": "Volver a \"{name}\" Registros",
+    "goWorkflow": "Ir al flujo de trabajo",
+    "startedDate": "Fecha de inicio",
+    "duration": "Duración",
+    "selectAll": "Seleccionar todo",
+    "deselectAll": "Deseleccionar todo",
+    "deleteSelected": "Borrar los registros seleccionados",
+    "clearLogs": {
+      "title": "Borrar registros",
+      "description": "¿Estás seguro de que quieres borrar todos los registros?"
+    },
+    "types": {
+      "stop": "El flujo de trabajo se detiene",
+      "finish": "Acabado"
+    },
+    "messages": {
+      "url-empty": "La URL está vacía",
+      "invalid-url": "La URL no es válida",
+      "conditions-empty": "Las condiciones están vacías",
+      "invalid-proxy-host": "Proxy host no válido",
+      "workflow-disabled": "Flujo de trabajo desactivado",
+      "selector-empty": "El selector de elementos está vacío",
+      "invalid-body": "El cuerpo del contenido no es un JSON válido",
+      "invalid-active-tab": "\"{url}\" es una URL no válida",
+      "empty-spreadsheet-id": "El ID de la hoja de cálculo está vacío",
+      "invalid-loop-data": "Datos no válidos para el bucle",
+      "empty-workflow": "Primero debe seleccionar un flujo de trabajo",
+      "active-tab-removed": "Se ha eliminado la pestaña de flujo de trabajo activo",
+      "empty-spreadsheet-range": "El rango de la hoja de cálculo está vacío",
+      "stop-timeout": "El flujo de trabajo se detuvo debido a un tiempo de espera",
+      "no-file-access": "Automa no tiene acceso al fichero",
+      "no-workflow": "No se puede encontrar un flujo de trabajo con el ID \"{workflowId}\"",
+      "no-match-tab": "No se puede encontrar una pestaña que coincida con el patrón \"{pattern}\"",
+      "no-clipboard-acces": "No tiene permiso para acceder al portapapeles",
+      "browser-not-supported": "Esta función no está disponible en {browser} navegador",
+      "element-not-found": "No se puede encontrar un elemento con el selector \"{selector}\"",
+      "no-permission": "No tiene \"{permission}\" permiso para realizar esta acción",
+      "not-iframe": "Elemento con \"{selector}\" el selector no es un elemento iframe",
+      "iframe-not-found": "No se puede encontrar un elemento iframe con el selector \"{selector}\"",
+      "workflow-infinite-loop": "No se puede ejecutar el flujo de trabajo para evitar un bucle infinito",
+      "not-debug-mode": "El flujo de trabajo debe ejecutarse en modo de depuración para que este bloque funcione correctamente",
+      "no-iframe-id": "No se puede encontrar el Frame ID para el elemento iframe con el selector \"{selector}\"",
+      "no-tab": "No se puede conectar a una ficha, utilice \"New tab\" o \"Active tab\" antes de utilizar el bloque \"{name}\" bloque"
+    },
+    "description": {
+      "text": "{status} on {date} in {duration}",
+      "status": {
+        "success": "Con éxito",
+        "error": "Fallido",
+        "stopped": "Detenido"
+      }
+    },
+    "delete": {
+      "title": "Eliminar Registro",
+      "description": "¿Estás seguro de que quieres borrar todos los registros seleccionados?"
+    },
+    "exportData": {
+      "title": "Exportar datos",
+      "types": {
+        "json": "JSON",
+        "csv": "CSV",
+        "plain-text": "Texto sin formato"
+      }
+    },
+    "filter": {
+      "title": "Filtros",
+      "byStatus": "Por estado",
+      "byDate": {
+        "title": "Por fecha",
+        "items": {
+          "lastDay": "Último día",
+          "last7Days": "Últimos siete días",
+          "last30Days": "Últimos treinta días"
+        }
+      }
+    }
+  },
+  "components": {
+    "pagination": {
+      "text1": "Mostrar",
+      "text2": "Elementos de {count}",
+      "nextPage": "Siguiente página",
+      "currentPage": "Página actual",
+      "prevPage": "Página anterior",
+      "of": "de {page}"
+    }
+  }
+}

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

@@ -0,0 +1,32 @@
+{
+  "recording": {
+    "stop": "Detener la grabación",
+    "title": "Grabación"
+  },
+  "home": {
+    "record": {
+      "title": "Registro del flujo de trabajo",
+      "button": "Registro",
+      "name": "Nombre del flujo de trabajo",
+      "selectBlock": "Seleccione un bloque para empezar",
+      "anotherBlock": "No se puede empezar desde este bloque",
+      "tabs": {
+        "new": "Nuevo flujo de trabajo",
+        "existing": "Flujo de trabajo existente"
+      }
+    },
+    "elementSelector": {
+      "name": "Selector de elementos",
+      "noAccess": "No tiene acceso a este sitio"
+    },
+    "workflow": {
+      "new": "Nuevo flujo de trabajo",
+      "rename": "Renombrar flujo de trabajo",
+      "delete": "Eliminar flujo de trabajo",
+      "type": {
+        "host": "Host",
+        "local": "Local"
+      }
+    }
+  }
+}

+ 1 - 0
src/utils/shared.js

@@ -1586,6 +1586,7 @@ export const supportLocales = [
   { id: 'zh', name: '简体中文' },
   { id: 'zh-TW', name: '繁體中文' },
   { id: 'tr', name: 'Türkçe' },
+  { id: 'es', name: 'Spanish' },
 ];
 
 export const communities = [