{
  "projectHistory": {
    "title": "Historial del proyecto",
    "description": "Explore las instantáneas autoguardadas en este dispositivo.",
    "empty": "Todavía no hay instantáneas autoguardadas.",
    "summary": "Capas: {{count}} · zoom {{zoom}}",
    "restore": "Restaurar",
    "discard": "Descartar",
    "restoreError": "No se pudo restaurar esta instantánea. Puede estar dañada o ser incompatible con esta versión de GeoLibre.",
    "recoveryTitle": "¿Recuperar el trabajo sin guardar?",
    "recoveryDescription": "GeoLibre no se cerró correctamente. Hay disponible un autoguardado más reciente de «{{name}}»."
  },
  "browser": {
    "title": "Explorador",
    "services": "Servicios",
    "recent": "Recientes",
    "databases": "Bases de datos",
    "newDatabaseConnection": "Nueva conexión de base de datos",
    "searchPlaceholder": "Buscar fuentes de datos",
    "empty": "Aún no hay servicios guardados ni proyectos recientes.",
    "emptyGroup": "Vacío",
    "noMatches": "Sin coincidencias.",
    "addFailed": "No se pudo añadir esta fuente de datos.",
    "builtinBadge": "integrado",
    "newConnection": "Nueva conexión de {{kind}}",
    "loadingTables": "Cargando tablas…",
    "files": "Archivos",
    "addFolder": "Añadir carpeta",
    "addFolderFailed": "No se pudo añadir esta carpeta.",
    "addFileFailed": "No se pudo añadir este archivo.",
    "loadFolderFailed": "No se pudo leer esta carpeta.",
    "unpinFolder": "Quitar «{{name}}» de la lista",
    "loadingFolder": "Cargando…",
    "folderTruncated": "Mostrando los primeros {{shown}} de {{total}}",
    "favorites": "Favoritos",
    "favorite": "Añadir «{{name}}» a favoritos",
    "unfavorite": "Quitar «{{name}}» de favoritos",
    "favoriteMissing": "Esa fuente de datos ya no existe; se quitó de Favoritos.",
    "myData": "Mis datos",
    "renameLibraryLayer": "Cambiar el nombre de «{{name}}»",
    "deleteLibraryLayer": "Quitar «{{name}}» de Mis datos",
    "desktopOnlyBadge": "escritorio",
    "importLibrary": "Importar capas guardadas",
    "exportLibrary": "Exportar capas guardadas",
    "libraryFilterName": "JSON de biblioteca de capas",
    "libraryImportFailed": "No se pudo leer este archivo de biblioteca de capas.",
    "libraryExportFailed": "No se pudo exportar la biblioteca de capas.",
    "libraryLayerMissing": "Esa capa guardada ya no existe.",
    "libraryLayerNeedsDesktop": "Esta capa guardada lee un archivo del disco, por lo que necesita GeoLibre Desktop. Vuelva a añadir el archivo para guardar una nueva entrada.",
    "libraryLayerConfigNotApplied": "Se añadió el archivo de «{{name}}», pero su estilo guardado no se pudo asociar a una sola capa, así que no se volvió a aplicar.",
    "libraryLayerJoinsUnresolved_one": "Se añadió la capa, pero no se pudo volver a aplicar 1 unión guardada: la capa con la que se une no está en este proyecto.",
    "libraryLayerJoinsUnresolved_other": "Se añadió la capa, pero no se pudieron volver a aplicar {{count}} uniones guardadas: las capas con las que se unen no están en este proyecto."
  },
  "about": {
    "trigger": "Acerca de",
    "title": "Acerca de GeoLibre",
    "description": "GeoLibre es una plataforma SIG ligera y nativa de la nube.",
    "version": "Versión",
    "checkForUpdates": "Buscar actualizaciones",
    "tryAgain": "Intentar de nuevo",
    "checking": "Buscando actualizaciones",
    "upToDate": "Está actualizado ({{version}}).",
    "upToDateNoVersion": "Está actualizado.",
    "generalSectionTitle": "General",
    "homePage": "Página de inicio",
    "githubRepository": "Repositorio de GitHub"
  },
  "updates": {
    "changelogTitle": "Novedades",
    "noChangelog": "Las notas de la versión no están disponibles. Consulte la página de descargas para más detalles.",
    "stepsTitle": "Cómo actualizar",
    "download": "Descargar actualización",
    "steps": {
      "download": "Descargue el instalador para su plataforma desde la página de descargas.",
      "install": "Ejecute el instalador. Sus proyectos locales, configuraciones y claves de API se conservan.",
      "reopen": "Vuelva a abrir GeoLibre para finalizar la actualización."
    },
    "severity": {
      "major": "Versión mayor",
      "minor": "Actualización de funciones",
      "patch": "Actualización de parche"
    },
    "available": {
      "title": "{{version}} está disponible",
      "fallback": "Una nueva versión",
      "summary": "Está usando {{current}}."
    },
    "error": {
      "message": "No se pudieron buscar actualizaciones.",
      "rateLimit": "Se superó el límite de solicitudes de GitHub. Inténtelo de nuevo más tarde.",
      "http": "GitHub devolvió {{status}}.",
      "noTag": "La última versión no incluye una etiqueta de versión.",
      "network": "No se pudo conectar con GitHub. Compruebe su conexión e inténtelo de nuevo.",
      "viewDownloads": "Ver descargas",
      "viewDownloadsHint": "Abre la página de descargas de GeoLibre en su navegador para que pueda comprobar manualmente la última versión."
    },
    "startup": {
      "title": "Actualización disponible",
      "currentVersion": "Su versión actual",
      "latestVersion": "Última versión disponible",
      "download": "Descargar paquete de actualización",
      "remindLater": "Recordarme más tarde",
      "skipVersion": "Omitir esta versión",
      "settingsHint": "Puede cambiar la comprobación de actualizaciones en Configuración → Actualizaciones."
    }
  },
  "masBuild": {
    "unavailable": "Esta función no está disponible en la versión de GeoLibre Desktop de la Mac App Store."
  },
  "bookmark": {
    "captureStateLabel": "Incluir el estado completo de las capas (activas, inactivas y orden de las capas)",
    "captureStateTooltip": "Se aplica al marcador que guarde a continuación, no como configuración global. Déjelo activado para restaurar exactamente esta disposición de capas más adelante.",
    "export": "Exportar",
    "exportSelected": "Exportar selección",
    "exportAll": "Exportar todo",
    "newFolder": "Nueva carpeta",
    "defaultFolderName": "Carpeta"
  },
  "managePlugins": {
    "failed": "Fallido",
    "failedToLoad": "Error al cargar: {{message}}",
    "trust": {
      "title": "¿Cargar complementos de este proyecto?",
      "description_one": "Este proyecto quiere cargar 1 complemento externo desde una URL que no ha instalado. Los complementos ejecutan código con acceso total a la aplicación.",
      "description_other": "Este proyecto quiere cargar {{count}} complementos externos desde URLs que no ha instalado. Los complementos ejecutan código con acceso total a la aplicación.",
      "warning": "Cargue solo complementos de fuentes en las que confíe. Los complementos cargados se ejecutan con los mismos privilegios que GeoLibre.",
      "trustButton": "Confiar y cargar",
      "dismissButton": "No cargar"
    },
    "title": "Gestionar complementos",
    "searchAria": "Buscar complementos",
    "searchPlaceholder": "Buscar complementos",
    "refresh": "Actualizar",
    "loadingRegistry": "Cargando el registro…",
    "registryEmpty": "No hay complementos listados en el registro.",
    "noPluginsHere": "No hay complementos aquí.",
    "sectionAll": "Todos ({{total}})",
    "sectionInstalled": "Instalados ({{total}})",
    "sectionNotInstalled": "No instalados ({{total}})",
    "sectionUpgradeable": "Actualizables ({{total}})",
    "sectionSettings": "Configuración",
    "openHomepageAria": "Abrir la página de {{name}}",
    "byAuthor": "de {{author}}",
    "updateAvailable": "actualización disponible",
    "requiresVersion": "requiere GeoLibre {{version}}+",
    "install": "Instalar",
    "installAria": "Instalar {{name}}",
    "removeConfirm": "¿Eliminar?",
    "uninstall": "Desinstalar",
    "uninstallAria": "Desinstalar {{name}}",
    "confirmUninstallAria": "Confirmar la desinstalación de {{name}}",
    "update": "Actualizar",
    "updateAria": "Actualizar {{name}}",
    "loading": "Cargando…",
    "installed": "Instalado",
    "settingsIntro": "GeoLibre siempre analiza su directorio de complementos de datos de la aplicación. Instale un complemento empaquetado (.zip) desde un archivo, o añada directorios locales adicionales (solo en el escritorio). Las URL de manifiesto (incluidas las instalaciones desde el marketplace) se cargan por red; los cambios aquí se aplican de inmediato.",
    "installFromFile": "Instalar desde archivo",
    "chooseZip": "Elegir .zip…",
    "installFromFileHintDesktop": "Copia un archivo de complemento empaquetado en el directorio de complementos de GeoLibre.",
    "installFromFileHintWeb": "Carga un archivo de complemento empaquetado; se almacena en su navegador y se recarga en su próxima visita.",
    "localDirectories": "Directorios locales",
    "directoryAria": "Directorio de complementos",
    "browseDirectoryAria": "Examinar el directorio de complementos",
    "noDirectories": "No hay directorios de complementos adicionales configurados.",
    "manifestUrls": "URL de manifiesto",
    "manifestUrlAria": "URL del manifiesto del complemento",
    "noManifestUrls": "No hay URL de manifiesto de complementos configuradas.",
    "removeAria": "Eliminar {{name}}",
    "errorLoadRegistry": "No se pudo cargar el registro de complementos.",
    "errorUpdate": "No se pudo actualizar el complemento.",
    "errorDirectoryPicker": "No se pudo abrir el selector de directorios.",
    "errorInstall": "No se pudo instalar el complemento.",
    "errorUninstall": "No se pudo desinstalar el complemento.",
    "description": "Explore, instale, actualice y elimine complementos externos de GeoLibre. Los complementos se listan en el <registryLink>registro de complementos de GeoLibre</registryLink>."
  },
  "viewState": {
    "panelTitle": "Información"
  },
  "terrainMeasure": {
    "title": "Terreno (3D)",
    "surfaceDistance": "Distancia de superficie",
    "surfaceArea": "Área de superficie",
    "elevationGainLoss": "Ganancia / pérdida",
    "elevationRange": "Elevación mín. / máx.",
    "meanSlope": "Pendiente media",
    "computing": "Calculando terreno…",
    "partialData": "Algunas muestras no tenían datos de terreno"
  },
  "fileNamePrompt": {
    "title": "Guardar archivo como",
    "description": "Introduzca un nombre de archivo. El archivo se descarga en la carpeta de descargas de su navegador.",
    "label": "Nombre de archivo"
  },
  "newProject": {
    "basemapDescription": "Elija un mapa base de OpenFreeMap o Protomaps, un fondo en blanco o una URL de estilo de MapLibre.",
    "basemapDescriptionNoProtomaps": "Elija un mapa base de OpenFreeMap, un fondo en blanco o una URL de estilo de MapLibre.",
    "sectionOpenFreeMap": "OpenFreeMap",
    "sectionProtomaps": "Protomaps",
    "sectionOther": "Otro",
    "customUrlButton": "URL personalizada",
    "invalidCustomUrl": "Introduzca una URL válida de style.json o .pmtiles.",
    "savePromptTitle": "¿Guardar el proyecto actual?",
    "savePromptDescription": "El proyecto actual tiene cambios sin guardar. ¿Desea guardarlos antes de crear un nuevo proyecto?",
    "doNotSave": "No guardar",
    "saving": "Guardando...",
    "title": "Nuevo proyecto",
    "projectName": "Nombre del proyecto",
    "savedTemplates": "Plantillas guardadas",
    "deleteTemplate": "Eliminar plantilla",
    "basemapLabel": "Mapa base",
    "create": "Crear"
  },
  "basemapPicker": {
    "title": "Cambiar mapa base",
    "applyCustom": "Aplicar",
    "invalidUrl": "Introduzca una URL de estilo HTTP o HTTPS válida.",
    "sectionMoon": "La Luna",
    "sectionMars": "Marte",
    "sectionOther": "Otros cuerpos celestes"
  },
  "planetSwitcher": {
    "label": "Cuerpo celeste",
    "earth": "Tierra",
    "mercury": "Mercurio",
    "venus": "Venus",
    "moon": "Luna",
    "mars": "Marte",
    "io": "Ío",
    "europa": "Europa",
    "ganymede": "Ganímedes",
    "callisto": "Calisto",
    "titan": "Titán",
    "pluto": "Plutón",
    "charon": "Caronte"
  },
  "common": {
    "pickColorFromScreen": "Elegir un color de la pantalla",
    "save": "Guardar",
    "cancel": "Cancelar",
    "close": "Cerrar",
    "retry": "Reintentar",
    "reset": "Restablecer",
    "remove": "Quitar",
    "add": "Añadir",
    "ok": "Aceptar",
    "done": "Listo",
    "openWebApp": "Abrir la aplicación web de GeoLibre"
  },
  "addData": {
    "title": "Añadir datos",
    "kind": {
      "xyz": {
        "label": "Añadir capa XYZ",
        "description": "Añade una plantilla de teselas ráster usando los marcadores x, y y z."
      },
      "wms": {
        "label": "Añadir capa WMS",
        "description": "Añade un servicio WMS GetMap como capa ráster teselada."
      },
      "wfs": {
        "label": "Añadir capa WFS",
        "description": "Añade entidades WFS solicitando GeoJSON a un servicio GetFeature."
      },
      "wmts": {
        "label": "Añadir capa WMTS",
        "description": "Añade una plantilla de URL de teselas WMTS como capa ráster."
      },
      "ogcVectorTiles": {
        "label": "Añadir teselas vectoriales OGC",
        "description": "Añade un servicio OGC API - Tiles (vectorial) a partir de un TileJSON o una plantilla de teselas, leyendo opcionalmente sus capas de origen desde una URL de estilo."
      },
      "gpx": {
        "label": "Añadir capa GPX",
        "description": "Añade waypoints, rutas y tracks de GPX como una o más capas vectoriales."
      },
      "georss": {
        "label": "Añadir capa GeoRSS",
        "description": "Añade un feed GeoRSS (RSS, Atom o RDF) desde una URL o un archivo como capa vectorial."
      },
      "delimitedText": {
        "label": "Añadir capa de texto delimitado",
        "description": "Añade un archivo o URL de texto delimitado como capa de puntos usando campos de longitud y latitud, o como tabla de atributos no espacial cuando no hay coordenadas disponibles."
      },
      "cad": {
        "label": "Añadir capa CAD (DXF/DWG)",
        "description": "Añade un dibujo DXF o DWG de AutoCAD como capa vectorial, eligiendo la capa a cargar y el sistema de referencia de coordenadas desde el que proyectarla."
      },
      "gdb": {
        "label": "Añadir capa de geodatabase de archivos",
        "description": "Añade una capa desde una geodatabase de archivos de Esri (carpeta .gdb). La capa se lee con el servidor local de GeoLibre y se reproyecta a WGS84."
      },
      "photos": {
        "label": "Añadir fotos geoetiquetadas",
        "description": "Importa fotos JPEG/HEIC como capa de puntos, colocando cada una según su ubicación GPS EXIF."
      },
      "mbtiles": {
        "label": "Añadir capa MBTiles",
        "description": "Añade un archivo MBTiles local como capa de teselas ráster o vectorial."
      },
      "arcgis": {
        "label": "Añadir capa de ArcGIS",
        "description": "Añade una capa de ArcGIS FeatureServer, VectorTileServer, MapServer o ImageServer, o un elemento de portal."
      },
      "postgres": {
        "label": "Añadir capa de PostgreSQL",
        "description": "Inicia Martin localmente, descubre fuentes PostGIS y añade una fuente como teselas vectoriales."
      },
      "deckglViz": {
        "label": "Añadir capa Deck.gl",
        "description": "Elija un tipo de capa deck.gl y luego cargue los datos de ejemplo o suba un archivo o URL CSV/JSON/GeoJSON."
      },
      "video": {
        "label": "Añadir capa de vídeo",
        "description": "Añade una superposición de vídeo georreferenciado indicando una URL MP4 y cuatro coordenadas de esquina."
      },
      "ogcFeatures": {
        "label": "Añadir capa OGC API - Features",
        "description": "Añade las entidades de una colección OGC API - Features como capa vectorial, siguiendo los enlaces de paginación del servicio hasta cargar el número de entidades solicitado."
      }
    },
    "shared": {
      "layerName": "Nombre de la capa",
      "insertBelow": "Insertar debajo",
      "insertTop": "Parte superior de la lista de capas (predeterminado)",
      "layersGroup": "Capas",
      "basemapLayersGroup": "Capas de mapa base",
      "showBasemapLayers": "Mostrar capas de mapa base (avanzado)",
      "addLayer": "Añadir capa",
      "adding": "Añadiendo…",
      "addError": "No se pudo añadir la capa.",
      "sampleData": "Datos de ejemplo",
      "loadSampleData": "Cargar datos de ejemplo…"
    },
    "common": {
      "serviceUrl": "URL del servicio",
      "tileSize": "Tamaño de tesela",
      "tileUrlTemplate": "Plantilla de URL de teselas",
      "sourceType": "Tipo de fuente",
      "layerType": "Tipo de capa",
      "format": "Formato",
      "optional": "Opcional",
      "chooseFile": "Elegir archivo",
      "noFileSelected": "Ningún archivo seleccionado",
      "loading": "Cargando...",
      "workspaceLayerPlaceholder": "espacio_de_trabajo:capa",
      "requestFailed": "La solicitud falló con el estado {{status}}",
      "networkFailure": "No se pudo conectar con el servicio. Compruebe que el host sea accesible y que su certificado TLS, cortafuegos y proxy permitan la solicitud; en el navegador también puede estar bloqueada por CORS, así que pruebe la aplicación de escritorio.",
      "requestTimedOut": "La solicitud agotó el tiempo de espera. El host puede ser lento, inaccesible o estar bloqueado por un cortafuegos o proxy."
    },
    "serviceLibrary": {
      "title": "Servicios guardados",
      "saveCurrent": "Guardar actual",
      "importLibrary": "Importar biblioteca desde JSON",
      "exportLibrary": "Exportar biblioteca a JSON",
      "loadAria": "Cargar un servicio guardado",
      "loadPlaceholder": "Cargar un servicio guardado…",
      "builtin": "{{name}} (integrado)",
      "deleteAria": "Eliminar servicio guardado",
      "empty": "Aún no hay servicios guardados: complete el formulario y elija «Guardar actual».",
      "name": "Nombre",
      "category": "Categoría",
      "categoryPlaceholder": "Opcional (p. ej., país, tema)",
      "uncategorized": "Sin categoría",
      "errorName": "Introduzca un nombre para el servicio guardado.",
      "saved": "Se guardó \"{{name}}\" en la biblioteca de servicios.",
      "removed": "Se eliminó \"{{name}}\".",
      "errorExport": "No se pudo exportar la biblioteca.",
      "errorTooLarge": "El archivo es demasiado grande para importarlo (máx. 5 MB).",
      "errorNoServices": "No se encontraron servicios válidos en ese archivo.",
      "errorRead": "No se pudo leer ese archivo como biblioteca de servicios.",
      "imported_one": "Se importó {{count}} servicio.",
      "imported_other": "Se importaron {{count}} servicios.",
      "importedWithDropped_one": "Se importó {{count}} servicio ({{dropped}} omitido: biblioteca llena).",
      "importedWithDropped_other": "Se importaron {{count}} servicios ({{dropped}} omitidos: biblioteca llena)."
    },
    "xyz": {
      "defaultName": "Capa XYZ",
      "sampleLabel": "Imágenes de USGS",
      "errorUrl": "Introduzca una plantilla de URL de teselas XYZ.",
      "urlPlaceholder": "https://example.com/{z}/{x}/{y}.png",
      "shortUrlPlaceholder": "https://go.example.com/layer",
      "shortUrl": "URL corta"
    },
    "wms": {
      "defaultName": "Capa WMS",
      "sampleLabel": "Imágenes NAIP de USGS",
      "sampleLabelGebco": "Batimetría oceánica GEBCO",
      "errorUrl": "Introduzca una URL de servicio WMS.",
      "errorLayers": "Introduzca uno o más nombres de capa WMS.",
      "urlPlaceholder": "https://example.com/geoserver/wms",
      "layers": "Capas",
      "styles": "Estilos",
      "transparent": "Fondo transparente",
      "retrieveLayers": "Recuperar capas",
      "retrieving": "Recuperando...",
      "retrievedLayers": "Capas recuperadas",
      "selectLayer_one": "Seleccionar entre {{count}} capa",
      "selectLayer_other": "Seleccionar entre {{count}} capas",
      "noLayersFound": "No se encontraron capas para este servicio.",
      "retrieveError": "No se pudieron recuperar las capas de este servicio.",
      "version": "Versión de WMS"
    },
    "wfs": {
      "defaultName": "Capa WFS",
      "sampleLabel": "Estados de EE. UU. (GeoServer)",
      "errorUrl": "Introduzca una URL de servicio WFS.",
      "errorTypeName": "Introduzca un nombre de tipo de entidad WFS.",
      "errorOutputFormat": "Introduzca un formato de salida WFS.",
      "urlPlaceholder": "https://example.com/geoserver/wfs",
      "featureType": "Tipo de entidad",
      "version": "Versión",
      "outputFormat": "Formato de salida",
      "srsName": "Nombre de SRS",
      "maxFeatures": "Máximo de entidades",
      "errorMaxFeaturesNumeric": "Introduzca un valor numérico para el máximo de entidades.",
      "retrieveTypes": "Recuperar tipos",
      "retrieving": "Recuperando...",
      "retrievedTypes": "Tipos de entidad recuperados",
      "selectType_one": "Seleccionar entre {{count}} tipo de entidad",
      "selectType_other": "Seleccionar entre {{count}} tipos de entidad",
      "noTypesFound": "No se encontraron tipos de entidad para este servicio.",
      "retrieveError": "No se pudieron recuperar los tipos de entidad de este servicio."
    },
    "wmts": {
      "defaultName": "Capa WMTS",
      "sampleLabel": "EOX Imágenes mundiales (Sentinel-2)",
      "errorUrl": "Introduzca una plantilla de URL de teselas WMTS.",
      "urlPlaceholder": "https://example.com/wmts/{z}/{y}/{x}.png"
    },
    "ogcVectorTiles": {
      "defaultName": "Capa de teselas vectoriales OGC",
      "tilesUrl": "URL de teselas",
      "tilesUrlPlaceholder": "https://example.com/tiles/WebMercatorQuad?f=tilejson",
      "tilesUrlHint": "Una URL de metadatos TileJSON o una plantilla de teselas MVT {z}/{y}/{x}.",
      "styleUrl": "URL de estilo",
      "styleUrlPlaceholder": "https://example.com/styles/default?f=mapbox",
      "styleUrlHint": "JSON de estilo Mapbox/MapLibre opcional. Se usa para descubrir las capas de origen del conjunto de teselas cuando el TileJSON no las incluye.",
      "sourceLayers": "Capas de origen",
      "sourceLayersPlaceholder": "capa_a, capa_b",
      "sourceLayersHint": "Nombres de capas de origen opcionales, separados por comas. Reemplaza las capas encontradas en el TileJSON o el estilo.",
      "sampleLabel": "PDOK BGT (Países Bajos)",
      "errorUrl": "Introduzca una URL de teselas o una URL de estilo.",
      "errorNoTiles": "No se pudo determinar el punto de conexión de teselas vectoriales. Introduzca una URL de TileJSON, una plantilla de teselas o una URL de estilo.",
      "errorNoLayers": "No se pudieron determinar las capas de origen de teselas vectoriales. Añada una URL de estilo o introduzca los nombres de las capas de origen."
    },
    "arcgis": {
      "defaultName": "Capa de ArcGIS",
      "sampleFeatureLabel": "Principales ciudades de EE. UU. (entidades)",
      "sampleVectorTileLabel": "Parcelas de Santa Monica (teselas vectoriales)",
      "sampleMapServiceLabel": "Límites de EE. UU. (servicio de mapas)",
      "sampleImageServiceLabel": "Relieve sombreado USGS 3DEP (servicio de imágenes)",
      "featureLayer": "Capa de entidades",
      "vectorTileLayer": "Capa de teselas vectoriales",
      "mapServiceLayer": "Servicio de mapas",
      "imageServiceLayer": "Servicio de imágenes",
      "portalItemId": "ID del elemento del portal",
      "featureUrlPlaceholder": "https://services.arcgis.com/.../FeatureServer/0",
      "vectorTileUrlPlaceholder": "https://.../arcgis/rest/services/.../VectorTileServer",
      "mapServiceUrlPlaceholder": "https://.../arcgis/rest/services/.../MapServer",
      "imageServiceUrlPlaceholder": "https://.../arcgis/rest/services/.../ImageServer",
      "sublayers": "Subcapas",
      "sublayersPlaceholder": "Todas las subcapas visibles",
      "sublayersHint": "Ids de subcapas opcionales separados por comas, por ejemplo 0,2,5. Seleccionar subcapas dibuja el servicio de forma dinámica en lugar de usar sus teselas en caché.",
      "renderingRule": "Regla de representación",
      "renderingRulePlaceholder": "{\"rasterFunction\":\"Hillshade\"}",
      "renderingRuleHint": "JSON opcional de una función ráster que aplica el servicio. Una regla de representación dibuja el servicio de forma dinámica en lugar de usar sus teselas en caché.",
      "portalUrl": "URL del portal",
      "portalUrlPlaceholder": "https://www.arcgis.com/sharing/rest",
      "accessToken": "Token de acceso"
    },
    "gpx": {
      "defaultName": "Capa GPX",
      "sampleLabel": "Ruta Fells Loop",
      "errorFileMissing": "Faltan los datos del archivo GPX.",
      "readError": "No se pudo leer el archivo GPX.",
      "errorChooseFile": "Elija un archivo GPX.",
      "errorUrl": "Introduzca una URL de GPX.",
      "errorSelectType": "Seleccione al menos un tipo de capa GPX.",
      "errorNotFound": "No se encontraron los tipos de capa GPX seleccionados.",
      "waypoints": "Waypoints",
      "tracks": "Tracks",
      "trackPoints": "Puntos de track",
      "routes": "Rutas",
      "routePoints": "Puntos de ruta",
      "url": "URL de GPX",
      "file": "Archivo GPX",
      "urlPlaceholder": "https://example.com/route.gpx",
      "layerTypes": "Tipos de capa"
    },
    "georss": {
      "defaultName": "Capa GeoRSS",
      "sampleLabel": "Terremotos de USGS (último día)",
      "errorFileMissing": "Faltan los datos del archivo GeoRSS.",
      "readError": "No se pudo leer el archivo GeoRSS.",
      "errorChooseFile": "Elija un archivo GeoRSS.",
      "errorUrl": "Introduzca una URL de GeoRSS.",
      "url": "URL de GeoRSS",
      "file": "Archivo GeoRSS",
      "urlPlaceholder": "https://example.com/feed.atom"
    },
    "cad": {
      "defaultName": "Capa CAD",
      "fileFilter": "CAD (DXF/DWG)",
      "layer": "Capa CAD",
      "layerPlaceholder": "Elija primero un archivo CAD",
      "readingLayers": "Leyendo capas...",
      "layerOption": "{{name}} ({{type}}, {{count}} entidades)",
      "crs": "CRS de origen",
      "crsPlaceholder": "p. ej., EPSG:26915",
      "crsPresetLabel": "Sistemas de coordenadas comunes...",
      "crsHelp": "Déjelo en blanco si el dibujo ya está en longitud/latitud (WGS84). En caso contrario, introduzca el código EPSG del sistema de coordenadas del dibujo para reproyectarlo.",
      "readError": "No se pudo leer este archivo CAD.",
      "errorNoLayers": "No se encontraron capas en este archivo CAD.",
      "errorChooseFile": "Elija primero un archivo CAD (DXF/DWG).",
      "errorNoLayer": "Seleccione una capa CAD para cargar.",
      "errorUnsupportedGeometry": "Esta capa CAD contiene geometría mixta o de colección que no se puede mostrar. Pruebe con otra capa."
    },
    "gdb": {
      "defaultName": "Capa de geodatabase",
      "chooseFolder": "Elegir carpeta .gdb...",
      "noFolderSelected": "Ninguna geodatabase seleccionada",
      "layer": "Clase de entidad",
      "layerPlaceholder": "Elija primero una geodatabase",
      "readingLayers": "Leyendo capas...",
      "layerOption": "{{name}} ({{type}}, {{count}} entidades)",
      "help": "Las tablas solo de atributos no se muestran. La clase de entidad seleccionada se carga a través del servidor local de GeoLibre y se reproyecta a WGS84.",
      "desktopOnly": "Las capas de geodatabase de archivos solo están disponibles en GeoLibre Desktop. Esta función lee una carpeta .gdb local a través del servidor local de GeoLibre, al que la aplicación web no puede acceder.",
      "readError": "No se pudo leer esta geodatabase de archivos.",
      "convertError": "No se pudo cargar esta clase de entidad.",
      "errorNotGdb": "Elija una carpeta que termine en .gdb (una geodatabase de archivos de Esri).",
      "errorNoLayers": "No se encontraron clases de entidad con geometría en esta geodatabase.",
      "errorChooseFolder": "Elija primero una carpeta .gdb.",
      "errorNoLayer": "Seleccione una clase de entidad para cargar.",
      "errorTimeout": "La lectura de la geodatabase agotó el tiempo de espera.",
      "crs": "CRS de origen",
      "crsPlaceholder": "p. ej., EPSG:26915",
      "crsHelp": "No se pudo detectar el sistema de coordenadas de esta clase de entidad. Introduzca el código EPSG (o ESRI) en el que se almacenó para poder reproyectarla a WGS84.",
      "errorMissingCrs": "No se pudo detectar el sistema de coordenadas de esta clase de entidad. Introduzca su CRS de origen para añadirla."
    },
    "delimitedText": {
      "defaultName": "Capa de texto delimitado",
      "sampleLabel": "Ciudades de EE. UU.",
      "errorChooseFile": "Elija un archivo de texto delimitado.",
      "errorUrl": "Introduzca una URL de texto delimitado.",
      "errorFileMissing": "Faltan los datos del archivo de texto delimitado.",
      "readError": "No se pudo leer el archivo de texto delimitado.",
      "errorDataMissing": "Faltan los datos de texto delimitado.",
      "retrievedColumns_one": "Se recuperó {{count}} columna.",
      "retrievedColumns_other": "Se recuperaron {{count}} columnas.",
      "retrievedColumnsTable_one": "Se recuperó {{count}} columna. No se detectaron columnas de coordenadas; se añadirá como tabla de atributos.",
      "retrievedColumnsTable_other": "Se recuperaron {{count}} columnas. No se detectaron columnas de coordenadas; se añadirá como tabla de atributos.",
      "errorRetrieveColumns": "No se pudieron recuperar los nombres de las columnas.",
      "url": "URL de texto delimitado",
      "file": "Archivo de texto delimitado",
      "urlPlaceholder": "https://example.com/data.csv",
      "retrieving": "Recuperando...",
      "retrieveColumns": "Recuperar columnas",
      "delimiter": "Delimitador",
      "delimiterComma": "Coma",
      "delimiterTab": "Tabulación",
      "delimiterSemicolon": "Punto y coma",
      "delimiterPipe": "Barra vertical",
      "delimiterCustom": "Personalizado",
      "customDelimiter": "Delimitador personalizado",
      "longitudeField": "Campo de longitud",
      "latitudeField": "Campo de latitud",
      "noneField": "Ninguno (tabla de atributos)",
      "tableHint": "Deje ambos campos de coordenadas como Ninguno para añadir el archivo como tabla de atributos no espacial (para usarla en una unión de atributos).",
      "crs": "Sistema de coordenadas",
      "crsPlaceholder": "p. ej., EPSG:32643",
      "crsPresetLabel": "Sistemas de coordenadas comunes...",
      "crsHelp": "Déjelo en blanco si las coordenadas ya están en longitud/latitud (WGS84). En caso contrario, introduzca el código EPSG de las columnas de coordenadas y los puntos se reproyectarán a WGS84. Para un CRS proyectado, los campos de longitud y latitud seleccionan las columnas X (este) e Y (norte).",
      "importMode": "Importar como",
      "modeCoordinates": "Coordenadas",
      "modeAddresses": "Direcciones (geocodificar)",
      "addressColumns": "Columnas de dirección",
      "addressColumnsEmptyHint": "Obtenga primero las columnas para seleccionar las columnas de dirección.",
      "addressColumnsHint": "Seleccione una o varias columnas para concatenarlas en la dirección enviada al geocodificador (p. ej., calle, ciudad, provincia).",
      "errorNoAddressColumns": "Seleccione al menos una columna de dirección.",
      "errorNoAddressesFound": "Ninguna fila tenía un valor en las columnas de dirección seleccionadas."
    },
    "photos": {
      "defaultName": "Fotos",
      "chooseLabel": "Fotos",
      "choosePhotos": "Elegir fotos",
      "hint": "Seleccione fotos JPEG, PNG, TIFF o HEIC. Cada una se coloca según su ubicación GPS EXIF. Las fotos HEIC se ubican pero se muestran sin miniatura.",
      "readError": "No se pudieron leer las fotos seleccionadas.",
      "errorChooseFiles": "Elija una o más fotos.",
      "selectedCount_one": "{{count}} foto seleccionada",
      "selectedCount_other": "{{count}} fotos seleccionadas",
      "errorNoGps_one": "No se encontró ubicación GPS en la foto seleccionada.",
      "errorNoGps_other": "No se encontró ubicación GPS en las {{count}} fotos seleccionadas.",
      "addedSummary_one": "Se añadió {{count}} foto geoetiquetada.",
      "addedSummary_other": "Se añadieron {{count}} fotos geoetiquetadas.",
      "skippedNote_one": "Se omitió {{count}} foto (sin ubicación GPS).",
      "skippedNote_other": "Se omitieron {{count}} fotos (sin ubicación GPS).",
      "noThumbnailNote_one": "{{count}} foto no tiene miniatura (HEIC o formato no compatible).",
      "noThumbnailNote_other": "{{count}} fotos no tienen miniatura (HEIC o formato no compatible).",
      "manualPromptTitle": "No se encontró ubicación GPS en esta foto.",
      "manualPromptBody": "Colóquela en el centro del mapa actual y arrástrela a su posición en el mapa.",
      "manualPromptCenter": "Centro del mapa: {{lng}}, {{lat}}",
      "manualPlace": "Colocar en el centro del mapa",
      "manualHint": "Arrastre este marcador para posicionar la foto y luego haga clic en Listo."
    },
    "mbtiles": {
      "defaultName": "Capa MBTiles",
      "readError": "No se pudo leer el archivo MBTiles.",
      "errorChooseFile": "Elija un archivo MBTiles.",
      "errorSourceLayers": "Introduzca al menos una capa de origen vectorial.",
      "tileType": "Tipo de tesela",
      "sourceLayers": "Capas de origen",
      "sourceLayersPlaceholder": "building, place, water"
    },
    "postgres": {
      "defaultName": "Capa de PostgreSQL",
      "errorDesktopOnly": "Las capas de PostgreSQL requieren GeoLibre Desktop.",
      "errorConnectionString": "Introduzca una cadena de conexión de PostgreSQL.",
      "statusCheckingBinary": "Comprobando el binario de Martin...",
      "statusDownloaded": "Martin descargado. Iniciando servidor local...",
      "statusStarting": "Iniciando servidor Martin local...",
      "statusReadingCatalog": "Leyendo el catálogo de Martin...",
      "statusFound_one": "Se encontró {{count}} fuente.",
      "statusFound_other": "Se encontraron {{count}} fuentes.",
      "statusNoSources": "Martin está en ejecución, pero no se encontraron fuentes PostGIS compatibles.",
      "errorConnect": "No se pudo conectar con PostgreSQL.",
      "statusStopped": "Martin detenido.",
      "errorStop": "No se pudo detener Martin.",
      "errorConnectFirst": "Conéctese primero a PostgreSQL.",
      "errorNoVectorLayers": "La fuente Martin seleccionada no tiene capas vectoriales.",
      "errorSelectSource": "Seleccione una fuente Martin para añadir.",
      "desktopOnlyNotice": "Las capas de PostgreSQL solo están disponibles en GeoLibre Desktop. Esta función ejecuta un servidor de teselas Martin local, que la aplicación web no puede iniciar.",
      "savedConnection": "Conexión guardada",
      "selectSavedConnection": "Seleccionar conexión guardada",
      "connectionString": "Cadena de conexión de PostgreSQL",
      "connectionStringPlaceholder": "postgres://usuario:contraseña@host:5432/base_de_datos",
      "defaultSrid": "SRID predeterminado",
      "connect": "Conectar",
      "stop": "Detener",
      "martinSource": "Fuente Martin",
      "runningOnPort": "Martin se está ejecutando en el puerto {{port}}.",
      "loadMode": "Cargar como",
      "loadModeTiles": "Teselas vectoriales (Martin, solo lectura)",
      "loadModeEditable": "Capa editable (carga todas las entidades)",
      "editableNotice": "Carga las entidades de la tabla a través del servidor de procesamiento local para que puedan editarse. Guarde los cambios de nuevo con la acción «Guardar ediciones en la tabla de PostGIS» de la capa.",
      "statusListingTables": "Leyendo tablas espaciales...",
      "statusTablesFound_one": "Se encontró {{count}} tabla espacial.",
      "statusTablesFound_other": "Se encontraron {{count}} tablas espaciales.",
      "statusNoTables": "No se encontraron tablas espaciales en esta base de datos.",
      "editableTable": "Tabla",
      "tableReadOnly": "{{table}} (solo lectura: sin clave primaria)",
      "errorSelectTable": "Seleccione una tabla para cargar.",
      "errorRuntimeMissing": "El servidor de procesamiento no tiene instalado el entorno de ejecución de PostGIS (psycopg). Instale el extra «postgis» de geolibre-server para cargar capas editables."
    },
    "video": {
      "defaultName": "Capa de vídeo",
      "sampleLabel": "Olas costeras cerca de San Francisco",
      "errorUrl": "Introduzca una URL de vídeo.",
      "errorHttps": "Las URL de vídeo deben empezar por https://.",
      "cornerTopLeft": "superior izquierda",
      "cornerTopRight": "superior derecha",
      "cornerBottomRight": "inferior derecha",
      "cornerBottomLeft": "inferior izquierda",
      "errorCornerFormat": "Introduzca la esquina {{corner}} como «longitud, latitud».",
      "errorCornerNumber": "Introduzca una longitud y latitud numéricas para la esquina {{corner}}.",
      "errorCornerLng": "La longitud de la esquina {{corner}} debe estar entre -180 y 180.",
      "errorCornerLat": "La latitud de la esquina {{corner}} debe estar entre -90 y 90.",
      "primaryUrl": "URL de vídeo principal",
      "primaryUrlPlaceholder": "https://example.com/clip.mp4",
      "fallbackUrl": "URL de vídeo alternativa (opcional)",
      "fallbackUrlPlaceholder": "https://example.com/clip.webm",
      "topLeft": "Superior izquierda (lng, lat)",
      "topRight": "Superior derecha (lng, lat)",
      "bottomRight": "Inferior derecha (lng, lat)",
      "bottomLeft": "Inferior izquierda (lng, lat)",
      "cornersNote": "Las cuatro esquinas georreferencian el vídeo en el mapa. El vídeo debe servirse por HTTPS y el host debe permitir solicitudes entre orígenes (CORS) para que se representen los fotogramas."
    },
    "netcdf": {
      "sampleLabel": "Temperatura del aire",
      "title": "Añadir NetCDF / HDF",
      "description": "Renderiza un conjunto de datos NetCDF o HDF5: un archivo remoto optimizado para la nube mediante una referencia kerchunk (leído con solicitudes de rango HTTP), o un archivo NetCDF o HDF5 local leído en su navegador.",
      "sourceLabel": "Fuente",
      "sourceCloud": "Optimizado para la nube (URL de kerchunk)",
      "sourceLocal": "Archivo local (NetCDF / HDF5)",
      "localFileLabel": "Archivo local",
      "chooseDifferentFile": "Elegir un archivo diferente",
      "readingFile": "Leyendo...",
      "readingRemote": "Leyendo los metadatos del archivo por HTTP...",
      "localFileHelp": "Seleccione un archivo NetCDF o HDF5 local (.nc, .nc4, .cdf, .h5 o .hdf5); se admiten tanto NetCDF-3 clásico como NetCDF-4/HDF5. Se decodifica en su navegador; los archivos grandes usan más memoria.",
      "errorNoVariables": "No se encontraron variables representables (2D o superior) en el archivo.",
      "errorNoFile": "No se cargó ningún archivo.",
      "kerchunkUrlLabel": "URL de referencia kerchunk",
      "kerchunkUrlHelp": "Elija un conjunto de datos de ejemplo arriba, o pegue su propia URL de referencia kerchunk, y luego haga clic en Cargar variables.",
      "loading": "Cargando...",
      "loadVariables": "Cargar variables",
      "variableLabel": "Variable",
      "dimIndexLabel": "Índice de {{dim}}",
      "colormapLabel": "Mapa de colores",
      "bandCombinationLabel": "Combinación de bandas",
      "bandCombinationHelp": "Una sola banda se representa con un mapa de colores; una composición RGB dibuja tres bandas de esta variable como los canales rojo, verde y azul, cada uno ajustado a su propio rango del 2-98 %.",
      "modeSingleBand": "Banda única (con mapa de colores)",
      "modeRgb": "Composición RGB (tres bandas)",
      "colorMin": "Color mínimo (opcional)",
      "colorMax": "Color máximo (opcional)",
      "adding": "Añadiendo...",
      "addLayer": "Añadir capa",
      "channel": {
        "red": "Banda roja",
        "green": "Banda verde",
        "blue": "Banda azul"
      }
    },
    "deckViz": {
      "defaultName": "Capa Deck.gl",
      "errorChooseFile": "Elija un archivo CSV, JSON o GeoJSON.",
      "errorUrl": "Introduzca una URL de datos.",
      "errorUnknownType": "Tipo de capa desconocido.",
      "needsGeojson": "{{label}} necesita un archivo GeoJSON.",
      "needsTabular": "{{label}} necesita datos tabulares CSV/JSON, no GeoJSON.",
      "mapRequiredFields_one": "Asigne el campo obligatorio: {{fields}}.",
      "mapRequiredFields_other": "Asigne los campos obligatorios: {{fields}}.",
      "errorExample": "No se pudieron cargar los datos de ejemplo.",
      "loadedFeatures_one": "Se cargó {{count}} entidad.",
      "loadedFeatures_other": "Se cargaron {{count}} entidades.",
      "loadedRows_one": "{{count}} fila",
      "loadedRows_other": "{{count}} filas",
      "loadedColumns_one": "{{count}} columna",
      "loadedColumns_other": "{{count}} columnas",
      "loadedTabular": "Se cargaron {{rows}} · {{columns}}.",
      "errorLoad": "No se pudieron cargar los datos.",
      "errorLoadFirst": "Cargue primero los datos de ejemplo, o un archivo/URL.",
      "useExample": "Usar datos de ejemplo",
      "loadYourOwn": "O cargue los suyos propios",
      "dataUrl": "URL de datos",
      "localFile": "Archivo local",
      "urlPlaceholder": "https://example.com/data.csv",
      "chooseFileLoad": "Elegir archivo y cargar",
      "loadData": "Cargar datos",
      "selectRole": "— seleccionar —",
      "roleNone": "(ninguno)",
      "closeAfterAdd": "Cerrar el diálogo después de añadir la capa",
      "color": "Color",
      "pointSize": "Tamaño de punto",
      "cellSize": "Tamaño de celda",
      "lineWidth": "Ancho de línea",
      "extrusion": "Extrusión 3D",
      "modelUrlPlaceholder": "https://example.com/model.glb"
    },
    "ogcFeatures": {
      "defaultName": "Capa OGC API - Features",
      "sampleLabel": "Lagos del mundo (demo de pygeoapi)",
      "urlPlaceholder": "https://example.com/ogcapi",
      "urlHint": "La página principal del servicio, o cualquier URL copiada de ella (también sirve una URL /collections o /collections/{id}/items).",
      "retrieveCollections": "Recuperar colecciones",
      "retrieving": "Recuperando...",
      "retrievedCollections": "Colecciones recuperadas",
      "selectCollection_one": "Seleccionar entre {{count}} colección",
      "selectCollection_other": "Seleccionar entre {{count}} colecciones",
      "noCollectionsFound": "No se encontraron colecciones de entidades para este servicio.",
      "retrieveError": "No se pudieron recuperar las colecciones de este servicio.",
      "collection": "Colección",
      "collectionPlaceholder": "collection-id",
      "maxFeatures": "Máximo de entidades",
      "bbox": "Cuadro delimitador",
      "datetime": "Fecha y hora",
      "errorCollection": "Introduzca un id de colección de OGC API - Features.",
      "errorMaxFeatures": "Introduzca un máximo de entidades de 1 o más.",
      "errorBbox": "Introduzca el cuadro delimitador como «oeste,sur,este,norte».",
      "errorNoFeatures": "Esta colección no devolvió ninguna entidad."
    },
    "nonGeographicCoordinates": "Las coordenadas de {{names}} no son de longitud/latitud, por lo que no se dibujará nada en el mapa. El CRS está mal declarado: reproyecte los datos (o corrija su .prj) y vuelva a cargarlos."
  },
  "offline": {
    "title": "Descargar área sin conexión",
    "description": "Guarda las teselas del mapa base de la vista actual del mapa para que esta área siga funcionando sin conexión de red.",
    "noServiceWorker": "El almacenamiento en caché sin conexión necesita la aplicación web instalada. Las teselas que descargue aquí no se guardarán para uso sin conexión en esta compilación.",
    "uncacheable": "Las siguientes fuentes de mapa base no admiten la descarga sin conexión y faltarán en su mapa sin conexión: {{hosts}}.",
    "cacheable": "Las siguientes fuentes de mapa base se descargarán y estarán disponibles sin conexión: {{hosts}}.",
    "includeExtra": "Incluir niveles de detalle adicionales para acercar el zoom",
    "currentViewOnly": "Solo vista actual · Zoom {{zoom}}",
    "detailLevels": "Niveles de detalle adicionales",
    "relativeLevels_one": "+{{count}} nivel · Zoom {{min}}–{{max}}",
    "relativeLevels_other": "+{{count}} niveles · Zoom {{min}}–{{max}}",
    "tiles": "Recursos por descargar",
    "tooManyTiles": "Esta área supera el límite de la caché sin conexión ({{max}} recursos); es posible que las teselas más antiguas en caché se eliminen a medida que se descarguen recursos nuevos. Reduzca los niveles de detalle o elija un área más pequeña.",
    "acknowledgeEviction": "Descargar de todos modos, eliminando teselas antiguas si es necesario",
    "download": "Descargar",
    "cancel": "Cancelar",
    "progress": "Descargando {{done}} / {{total}}…",
    "complete_one": "Área sin conexión guardada. Se almacenó {{count}} recurso en caché para uso sin conexión.",
    "complete_other": "Área sin conexión guardada. Se almacenaron {{count}} recursos en caché para uso sin conexión.",
    "completeWithFailures": "Se guardaron {{done}} de {{total}} recursos ({{failed}} fallidos).",
    "retryFailed_one": "Reintentar {{count}} recurso fallido",
    "retryFailed_other": "Reintentar {{count}} recursos fallidos",
    "retryAll": "Reintentar todos los recursos",
    "advanced": "Opciones avanzadas",
    "concurrency": "Solicitudes simultáneas",
    "concurrencyHint": "Reduzca este valor para aliviar la carga de servidores que limitan las solicitudes rápidas de teselas.",
    "timeout": "Tiempo de espera de la solicitud (segundos)",
    "timeoutHint": "Cada solicitud de tesela dispone de hasta {{seconds}} s antes de contarse como fallida.",
    "timeoutDisabled": "Sin tiempo de espera; las solicitudes usan el valor predeterminado del navegador. Auméntelo para conexiones lentas."
  },
  "offlineManager": {
    "title": "Administrar áreas sin conexión",
    "description": "Revise las áreas de mapa base que ha descargado para uso sin conexión, actualícelas o elimínelas para liberar almacenamiento.",
    "noServiceWorker": "El almacenamiento en caché sin conexión necesita la aplicación web instalada. Actualizar áreas no guardará teselas para uso sin conexión en esta compilación.",
    "empty": "Aún no hay áreas sin conexión. Use «Descargar área sin conexión» para guardar la vista actual del mapa para uso sin conexión.",
    "zoomRange": "Zoom {{min}}–{{max}}",
    "tilesCount_one": "{{count}} tesela",
    "tilesCount_other": "{{count}} teselas",
    "savedOn": "Guardado el {{date}}",
    "rename": "Cambiar el nombre de esta área",
    "nameLabel": "Nombre del área",
    "update": "Actualizar esta área",
    "delete": "Eliminar esta área",
    "confirmDelete": "Eliminar",
    "updateAll": "Actualizar todo",
    "updating": "Actualizando {{done}} / {{total}}…",
    "totalFootprint_one": "{{size}} en {{count}} área",
    "totalFootprint_other": "{{size}} en {{count}} áreas",
    "deviceUsage": "{{usage}} de {{quota}} usados"
  },
  "recordTour": {
    "title": "Grabar recorrido del mapa",
    "hint": "Desplace y haga zoom en el mapa, luego capture cada vista. El mapa permanece interactivo mientras este panel esté abierto.",
    "unsupported": "Este navegador no puede grabar el lienzo del mapa. Pruebe con una versión reciente de Chrome, Edge o Firefox.",
    "addView": "Añadir vista actual",
    "pathTitle": "Generar desde una ruta",
    "pathNoLayers": "Añada una capa LineString para generar fotogramas clave a partir de una ruta.",
    "pathLayer": "Capa de ruta",
    "pathLayerOption": "{{name}} ({{count}} puntos)",
    "pathKeyframes": "Fotogramas clave",
    "pathZoom": "Zoom",
    "pathPitch": "Inclinación",
    "pathHold": "Pausa",
    "pathTransition": "Movimiento",
    "pathGenerate": "Generar",
    "pathConfirmReplace": "¿Reemplazar los fotogramas clave actuales por los generados a partir de esta ruta?",
    "pathGenerated_one": "Se generó {{count}} fotograma clave a partir de la ruta.",
    "pathGenerated_other": "Se generaron {{count}} fotogramas clave a partir de la ruta.",
    "pathGenerateError": "No se pudieron generar fotogramas clave a partir de esta ruta.",
    "loadConfig": "Cargar configuración",
    "saveConfig": "Guardar configuración",
    "confirmLoad": "¿Reemplazar los fotogramas clave actuales con la configuración cargada?",
    "configFileType": "Configuración de recorrido",
    "configSaved": "Configuración guardada como {{name}}",
    "configLoaded_one": "Se cargó la configuración con {{count}} fotograma clave.",
    "configLoaded_other": "Se cargó la configuración con {{count}} fotogramas clave.",
    "configSaveError": "No se pudo guardar la configuración del recorrido. Inténtelo de nuevo.",
    "configLoadError": "No se pudo cargar la configuración del recorrido. Es posible que el archivo no sea válido.",
    "keyframeCount_one": "{{count}} fotograma clave",
    "keyframeCount_other": "{{count}} fotogramas clave",
    "empty": "Desplace y haga zoom en el mapa hasta una vista inicial y luego añádala como primer fotograma clave. Añada al menos dos fotogramas clave para grabar un recorrido.",
    "flyToKeyframe": "Ir a esta vista",
    "hold": "Mantener",
    "transition": "Transición",
    "secondsShort": "s",
    "holdSeconds": "Segundos para mantener esta vista",
    "segmentSeconds": "Segundos para pasar a la siguiente vista",
    "resizeLeft": "Cambiar el tamaño del panel desde la esquina inferior izquierda",
    "resizeRight": "Cambiar el tamaño del panel desde la esquina inferior derecha",
    "recapture": "Actualizar a la vista actual del mapa",
    "moveUp": "Mover fotograma clave hacia arriba",
    "moveDown": "Mover fotograma clave hacia abajo",
    "removeKeyframe": "Eliminar fotograma clave",
    "fps": "Fotogramas por segundo",
    "estimatedLength": "Aproximadamente {{seconds}} s",
    "record": "Grabar",
    "videoFileType": "Vídeo WebM",
    "recordingStatus": "Grabando… {{percent}}%",
    "savingStatus": "Guardando vídeo…",
    "stop": "Detener",
    "recordingReady": "Grabación lista. Asígnele un nombre y guárdela, o descártela para volver a grabar.",
    "fileNameLabel": "Nombre de archivo",
    "saveVideo": "Guardar vídeo…",
    "discard": "Descartar",
    "saved": "Se guardó {{name}}",
    "saveCancelled": "Guardado cancelado.",
    "recordError": "No se pudo grabar el recorrido. Inténtelo de nuevo.",
    "saveError": "No se pudo guardar el vídeo. Inténtelo de nuevo."
  },
  "recordVideo": {
    "title": "Grabar vídeo",
    "hint": "Grabe el mapa en vivo como un vídeo. Desplace y haga zoom mientras graba; se captura cada movimiento. Este panel y el marco de selección no forman parte del vídeo.",
    "unsupported": "Este navegador no puede grabar el lienzo del mapa. Pruebe con una versión reciente de Chrome, Edge o Firefox.",
    "area": "Área de captura",
    "wholeMap": "Todo el mapa",
    "selectArea": "Seleccionar área…",
    "redrawArea": "Volver a dibujar el área…",
    "drawHint": "Arrastre un rectángulo en el mapa para definir el área de grabación, o pulse Escape para cancelar.",
    "regionChosen": "Área de grabación: {{width}} × {{height}} px. El marco permanece fijo mientras el mapa se mueve por debajo.",
    "noRegion": "Dibuje un rectángulo en el mapa para elegir el área de grabación.",
    "needRegion": "Seleccione primero un área en el mapa.",
    "fps": "Fotogramas por segundo",
    "caption": "Rótulo (incrustado en el vídeo)",
    "captionTitlePlaceholder": "Título (opcional)",
    "captionTextLabel": "Subtítulo del rótulo o fuente de datos",
    "captionTextPlaceholder": "Subtítulo o fuente de datos (opcional)",
    "captionPosition": "Posición del rótulo",
    "captionPos": {
      "top-left": "Arriba a la izquierda",
      "top-center": "Arriba al centro",
      "top-right": "Arriba a la derecha",
      "bottom-left": "Abajo a la izquierda",
      "bottom-center": "Abajo al centro",
      "bottom-right": "Abajo a la derecha"
    },
    "includePanels": "Incluir paneles del mapa (leyenda, barra de color, HTML) en el vídeo",
    "record": "Grabar",
    "preparing": "Preparando…",
    "stop": "Detener",
    "savingStatus": "Guardando vídeo…",
    "recordingReady": "Grabación lista. Asígnele un nombre y guárdela, o descártela para volver a grabar.",
    "fileNameLabel": "Nombre de archivo",
    "saveVideo": "Guardar vídeo…",
    "discard": "Descartar",
    "videoFileType": "Vídeo",
    "saved": "Se guardó {{name}}",
    "saveCancelled": "Guardado cancelado.",
    "recordError": "No se pudo grabar el vídeo. Inténtelo de nuevo.",
    "saveError": "No se pudo guardar el vídeo. Inténtelo de nuevo."
  },
  "fieldCollection": {
    "title": "Recolección de campo",
    "description": "Capture observaciones de puntos, líneas o polígonos con un formulario personalizado. Coloque un punto por GPS o tocando el mapa, y dibuje líneas y polígonos vértice a vértice.",
    "captureDescription": "Capture una ubicación por GPS o en el mapa y luego complete el formulario para guardarla.",
    "captureReviewDescription": "Revise la ubicación capturada, complete el formulario y guárdela en la capa.",
    "reopen": "Abrir recolección de campo",
    "targetLayer": "Capa de recolección",
    "newLayer": "Nueva capa de recolección…",
    "layerName": "Nombre de la capa",
    "layerNamePlaceholder": "Observaciones de campo",
    "geometry": "Geometría",
    "geom": {
      "point": "Punto",
      "line": "Línea",
      "polygon": "Polígono"
    },
    "fields": "Campos del formulario",
    "addField": "Añadir campo",
    "fieldLabel": "Etiqueta",
    "fieldType": "Tipo",
    "options": "Opciones (separadas por comas)",
    "required": "Obligatorio",
    "noFields": "Aún no hay campos. Añada campos para capturar atributos, o cree la capa para capturar solo puntos de ubicación.",
    "type": {
      "text": "Texto",
      "number": "Número",
      "date": "Fecha",
      "choice": "Elección"
    },
    "createLayer": "Crear capa",
    "captureHint": "Use GPS o elija un punto en el mapa para iniciar una captura.",
    "drawHint": "Dibuje la forma en el mapa para iniciar una captura.",
    "useGps": "Usar GPS",
    "pickOnMap": "Elegir en el mapa",
    "reposition": "Reposicionar punto",
    "drawOnMap": "Dibujar en el mapa",
    "pickBannerTitle": "Modo de colocación activo",
    "pickBannerHint": "Haga clic en cualquier lugar del mapa para elegir un punto, o pulse Esc para cancelar.",
    "addGpsVertex": "Añadir vértice GPS",
    "undo": "Deshacer",
    "finish": "Finalizar",
    "vertices_one": "{{count}} vértice",
    "vertices_other": "{{count}} vértices",
    "needMore": "Añada al menos {{min}} vértices",
    "dblClickHint": "Toque para añadir vértices; doble clic para finalizar.",
    "locating": "Localizando…",
    "photo": "Foto",
    "photoOptional": "Foto (opcional)",
    "choosePhoto": "Elegir foto…",
    "removePhoto": "Quitar",
    "save": {
      "point": "Guardar punto",
      "line": "Guardar línea",
      "polygon": "Guardar polígono"
    },
    "saved": {
      "point_one": "Se guardó {{count}} punto en {{layer}}.",
      "point_other": "Se guardaron {{count}} puntos en {{layer}}.",
      "line_one": "Se guardó {{count}} línea en {{layer}}.",
      "line_other": "Se guardaron {{count}} líneas en {{layer}}.",
      "polygon_one": "Se guardó {{count}} polígono en {{layer}}.",
      "polygon_other": "Se guardaron {{count}} polígonos en {{layer}}."
    },
    "layerGone": "La capa de recolección ya no está disponible.",
    "noGeolocation": "La geolocalización no está disponible en este dispositivo.",
    "geolocationDenied": "No se pudo obtener su ubicación. Compruebe los permisos de ubicación e inténtelo de nuevo.",
    "photoTooLarge": "Esa foto es demasiado grande (máx. {{max}}). Elija una imagen más pequeña.",
    "photoReadError": "No se pudo leer esa imagen. Pruebe con otro archivo.",
    "errorRequired": "Este campo es obligatorio.",
    "errorNumber": "Introduzca un número válido.",
    "errorChoice": "Elija una de las opciones listadas."
  },
  "gps": {
    "title": "Seguimiento GPS",
    "description": "Muestre en el mapa la posición de su dispositivo en tiempo real, grabe un registro de track y capture puntos en su ubicación actual.",
    "start": "Iniciar GPS",
    "stop": "Detener GPS",
    "follow": "Mantener el mapa centrado en mi posición",
    "waitingForFix": "Esperando una señal GPS…",
    "noGeolocation": "La geolocalización no está disponible en este dispositivo.",
    "permissionDenied": "Se denegó el permiso de ubicación. Actívelo en la configuración de su navegador o sistema e inténtelo de nuevo.",
    "trackLog": "Registro de track",
    "record": "Grabar track",
    "pause": "Pausar",
    "resume": "Reanudar",
    "discard": "Descartar",
    "saveTrack": "Guardar como capa",
    "exportGpx": "Exportar GPX",
    "exportGeojson": "Exportar GeoJSON",
    "points_one": "{{count}} punto",
    "points_other": "{{count}} puntos",
    "trackLayerName": "Track GPS",
    "trackSaved": "Se guardó {{name}} como capa.",
    "trackExported": "Track exportado.",
    "exportCancelled": "Exportación cancelada.",
    "exportFailed": "No se pudo exportar el track. Inténtelo de nuevo.",
    "capture": "Digitalizar",
    "capturePoint": "Capturar punto",
    "captureLayerName": "Puntos GPS",
    "captured_one": "{{count}} punto capturado en esta sesión.",
    "captured_other": "{{count}} puntos capturados en esta sesión.",
    "pointCaptured": "Punto guardado en {{layer}}.",
    "captureBlocked": "La precisión de la señal es de ±{{accuracy}}, peor que el umbral de {{max}} m. El punto no se guardó.",
    "satellites": "Satélites",
    "satellitesShort": "Sat",
    "satellitesValue": "Satélites: {{value}}",
    "satellitesShortValue": "Sat: {{value}}",
    "notAvailable": "—",
    "settings": "Filtros de registro",
    "minDistance": "Distancia mín. (m)",
    "minTime": "Tiempo mín. (s)",
    "maxAccuracy": "Precisión máx. (m)",
    "settingsHint": "Las posiciones del track más cercanas que la distancia o el tiempo mínimos se omiten. Las posiciones menos precisas que el umbral de precisión no se registran, y la captura de puntos se bloquea. 0 desactiva un filtro.",
    "openDialog": "Abrir Seguimiento GPS",
    "altitudeValue": "Alt: {{value}} m",
    "speedValue": "{{value}} km/h",
    "headingValue": "{{value}}°",
    "source": "Fuente de posición",
    "sourceDevice": "Este dispositivo",
    "sourceNmea": "Receptor NMEA (serie o Bluetooth)",
    "nmeaBaudRate": "Velocidad en baudios",
    "nmeaConnectSerial": "Conectar por serie",
    "nmeaConnectBluetooth": "Conectar por Bluetooth",
    "nmeaConnecting": "Conectando…",
    "nmeaConnected": "Conectado a {{device}}.",
    "nmeaDisconnect": "Desconectar",
    "nmeaNotConnected": "Conecte arriba un receptor NMEA para empezar a transmitir posiciones.",
    "nmeaWaiting": "Esperando sentencias…",
    "nmeaStats": "Sentencias: {{parsed}} · fijaciones: {{fixes}}",
    "nmeaConnectFailed": "No se pudo conectar con el receptor.",
    "nmeaDisconnected": "El receptor se desconectó.",
    "nmeaUnsupportedDevice": "No se encontró ningún servicio NMEA en ese dispositivo. Puede que sea un receptor Bluetooth clásico, que hay que emparejar en la configuración del sistema y conectar aquí como puerto serie.",
    "nmeaUnsupported": "Leer un receptor NMEA requiere las API Web Serial o Web Bluetooth, que este navegador no ofrece. Abra GeoLibre en un navegador Chromium como Chrome o Edge.",
    "nmeaSerialUnsupported": "Web Serial no está disponible aquí, así que no se pueden abrir receptores serie.",
    "nmeaBluetoothUnsupported": "Web Bluetooth no está disponible aquí, así que no se pueden abrir receptores Bluetooth Low Energy.",
    "nmeaBluetoothHint": "La mayoría de los receptores GPS Bluetooth usan Bluetooth clásico: empareje uno en la configuración del sistema y aparecerá aquí como puerto serie. Use «Conectar por Bluetooth» solo para receptores Bluetooth Low Energy.",
    "fixQuality": {
      "invalid": "Sin fijación",
      "gps": "Fijación GPS",
      "dgps": "GPS diferencial",
      "pps": "Fijación PPS",
      "rtk-fixed": "RTK fija",
      "rtk-float": "RTK flotante",
      "estimated": "Navegación por estima",
      "manual": "Entrada manual",
      "simulation": "Simulada"
    }
  },
  "georeferencer": {
    "title": "Georreferenciar imagen",
    "description": "Fije una imagen en el mapa: cárguela, vincule puntos de la imagen a ubicaciones del mapa y luego añádala como una superposición georreferenciada.",
    "loadImage": "Haga clic para cargar una imagen (PNG, JPG, TIFF)",
    "imageTooLarge": "Esa imagen es demasiado grande (máx. {{max}}). Elija una imagen más pequeña.",
    "imageReadError": "No se pudo leer esa imagen. Pruebe con otro archivo.",
    "imageNoDimensions": "No se pudo determinar el tamaño de la imagen. Use una imagen ráster (PNG, JPG, TIFF).",
    "sourceImage": "Imagen de origen ({{w}} × {{h}} px)",
    "clickImageHint": "Haga clic en un punto de la imagen y luego vincúlelo en el mapa.",
    "pixelPicked": "Punto de la imagen: {{x}}, {{y}}",
    "linkOnMap": "Vincular en el mapa",
    "zoomIn": "Acercar",
    "zoomOut": "Alejar",
    "zoomReset": "Restablecer zoom",
    "importGcps": "Importar",
    "exportGcps": "Exportar",
    "gcpsImported": "Se importaron {{count}} punto(s) de control.",
    "gcpsReadError": "No se pudieron leer los puntos de control de ese archivo.",
    "gcpsOutsideImage": "Algunos puntos de control quedan fuera de la imagen cargada: es posible que sean de otra imagen.",
    "transformNeedsMore": "Esta transformación necesita al menos {{min}} puntos de control.",
    "gcps": "Puntos de control ({{count}})",
    "needGcps": "Añada al menos {{min}} puntos de control para georreferenciar.",
    "collinear": "Los puntos de control son colineales o coincidentes: mueva uno fuera de la línea.",
    "cornersOutOfRange": "Este ajuste coloca la imagen fuera de los límites válidos del mapa. Ajuste los puntos de control.",
    "residual": "Residuo",
    "rms": "RMS {{rms}} m",
    "opacity": "Opacidad de la superposición",
    "addToMap": "Añadir al mapa",
    "clear": "Borrar",
    "defaultName": "Imagen georreferenciada",
    "exportTiff": "Exportar GeoTIFF",
    "exportTiffButton": "Exportar",
    "exportTiffHint": "Transforma la imagen a un GeoTIFF optimizado para la nube en su navegador (GDAL/WASM). El motor se descarga en el primer uso.",
    "transform": {
      "affine": "Afín (lineal)",
      "polynomial": "Polinómica (orden 2)",
      "tps": "Spline de placa delgada"
    },
    "exporting": "Exportando GeoTIFF… (cargando GDAL en el primer uso)",
    "exported": "GeoTIFF exportado.",
    "exportFailed": "Error al exportar GeoTIFF. Consulte la consola para más detalles."
  },
  "collaborate": {
    "title": "Colaboración en vivo",
    "description": "Comparta una sesión en vivo para que otros puedan ver y editar este mapa con usted en tiempo real.",
    "displayName": "Su nombre",
    "displayNamePlaceholder": "p. ej., Alex",
    "color": "Su color",
    "startHeading": "Iniciar una sesión",
    "joinHeading": "Unirse a una sesión",
    "mode": "Quién puede editar",
    "modeCoEdit": "Cualquiera puede editar",
    "modeViewOnly": "Solo usted puede editar (los demás observan)",
    "start": "Iniciar sesión",
    "join": "Unirse",
    "joinSession": "Unirse a la sesión",
    "invitedHeading": "Ha sido invitado",
    "invitedDescription": "Elija su nombre y color, y luego únase a la sesión en vivo del anfitrión.",
    "startInstead": "Iniciar una nueva sesión en su lugar",
    "sessionCode": "Código de sesión",
    "sessionCodePlaceholder": "Introduzca un código",
    "shareLink": "Compartir enlace",
    "scanToJoin": "Escanear para unirse",
    "copyLink": "Copiar enlace",
    "copyCode": "Copiar código",
    "copied": "Copiado",
    "participants": "Participantes ({{count}})",
    "host": "Anfitrión",
    "you": "usted",
    "guest": "Invitado",
    "connectFailed": "No se pudo conectar con el servidor de colaboración.",
    "copyFailed": "No se pudo copiar al portapapeles.",
    "connecting": "Conectando…",
    "reconnecting": "Reconectando…",
    "connected": "Sesión en vivo activa",
    "followHost": "Seguir la vista del anfitrión",
    "goToMap": "Ir al mapa y colaborar",
    "goToMapViewOnly": "Ir al mapa y observar",
    "collapseRoster": "Contraer la lista de participantes",
    "manageSession": "Administrar sesión",
    "sessionStatusTooltip": "Sesión de colaboración en vivo. Haga clic para ver quién está conectado.",
    "announcements": "Anuncios de la sesión",
    "participantJoined": "{{name}} se unió a la sesión",
    "participantLeft": "{{name}} salió de la sesión",
    "leave": "Salir de la sesión",
    "switchToCoEdit": "Permitir que todos editen",
    "switchToViewOnly": "Poner en solo lectura",
    "nameRequired": "Introduzca su nombre para continuar.",
    "codeRequired": "Introduzca un código de sesión para unirse.",
    "canEdit": "Puede editar",
    "viewOnly": "Solo lectura",
    "allowEdit": "Permitir que esta persona edite",
    "setViewOnly": "Poner a esta persona en solo lectura",
    "chatLog": "Chat de la sesión",
    "chatCompose": "Escriba un mensaje",
    "chatEmpty": "Aún no hay mensajes.",
    "chatPlaceholder": "Enviar un mensaje…",
    "chatSend": "Enviar mensaje",
    "chatAttachLocation": "Adjuntar la ubicación actual del mapa",
    "chatLocationAttached": "Ubicación adjunta (haga clic para quitarla)",
    "chatGoToLocation": "Ir a esta ubicación",
    "sessionStatusUnread_one": "Sesión de colaboración en vivo, {{count}} mensaje sin leer. Haga clic para ver quién está conectado y chatear.",
    "sessionStatusUnread_other": "Sesión de colaboración en vivo, {{count}} mensajes sin leer. Haga clic para ver quién está conectado y chatear."
  },
  "share": {
    "title": "Compartir proyecto",
    "description": "Suba el proyecto actual a {{shareHost}} y obtenga un enlace para compartir.",
    "setupIntro": "Conecte su cuenta de {{shareHost}} antes de subir el proyecto.",
    "step1Title": "1. Obtener un token de API",
    "step1Description": "Inicie sesión en {{shareHost}} y luego cree un token en Configuración → Tokens de API.",
    "getToken": "Obtener token de API",
    "step2Title": "2. Añadir el token a GeoLibre",
    "step2Description": "Pegue el token en Configuración → Variables de entorno en este dispositivo.",
    "configureToken": "Configurar token local",
    "liveAt": "Su proyecto está publicado en:",
    "copyLink": "Copiar enlace",
    "open": "Abrir",
    "done": "Listo",
    "projectTitle": "Título del proyecto",
    "titlePlaceholder": "Ponga un nombre a su proyecto",
    "titleRequired": "Introduzca un título de proyecto antes de compartir.",
    "visibility": "Visibilidad",
    "visibilityUnlisted": "No listado (cualquiera con el enlace)",
    "visibilityPublic": "Público (listado en la galería)",
    "visibilityPrivate": "Privado (solo usted)",
    "shareButton": "Compartir",
    "sharing": "Compartiendo…",
    "errorFallback": "No se pudo compartir el proyecto.",
    "usernameRequired": "Configure un nombre de usuario en su cuenta de {{shareHost}} antes de compartir. Abra la configuración de su cuenta para elegir uno y vuelva a intentarlo.",
    "openAccountSettings": "Abrir configuración de la cuenta",
    "credentialsRemoved": "No se incluyeron {{count}} campo(s) de credenciales. Los destinatarios deben proporcionar sus propias credenciales o usar una referencia intermediada."
  },
  "gallery": {
    "title": "Galería de proyectos",
    "description": "Explore los proyectos públicos compartidos en {{shareHost}} y abra uno en GeoLibre.",
    "searchPlaceholder": "Filtrar proyectos cargados por título, autor o etiqueta",
    "loading": "Cargando proyectos…",
    "loadingMore": "Cargando más…",
    "loadMore": "Cargar más",
    "empty": "Aún no hay proyectos públicos que mostrar.",
    "noMatches": "Ningún proyecto cargado coincide con su filtro.",
    "errorFallback": "No se pudo cargar la galería de proyectos.",
    "errorTimeout": "Se agotó el tiempo de espera de la galería de proyectos. Inténtelo de nuevo.",
    "errorNetwork": "No se pudo conectar con {{shareHost}}. Compruebe su conexión a internet.",
    "errorHttp": "No se pudo cargar la galería (HTTP {{status}}).",
    "errorInvalidResponse": "No se pudo cargar la galería (respuesta del servidor no válida).",
    "errorUnauthorized": "Su token de API de {{shareHost}} no es válido o ha caducado. Actualícelo en Configuración.",
    "errorUsernameRequired": "Configure un nombre de usuario en su cuenta de {{shareHost}} antes de cargar sus proyectos.",
    "errorNotConfigured": "Esta implementación no tiene configurado ningún servidor para compartir proyectos.",
    "retry": "Reintentar",
    "open": "Abrir",
    "openCopy": "Abrir una copia",
    "opening": "Abriendo…",
    "openingCopy": "Abriendo la copia…",
    "openOnWeb": "Ver en la web",
    "openError": "No se pudo abrir este proyecto.",
    "byAuthor": "por {{author}}",
    "views_one": "{{count}} visualización",
    "views_other": "{{count}} visualizaciones",
    "untitled": "Proyecto sin título",
    "noThumbnail": "Sin vista previa",
    "resizeDialog": "Cambiar el tamaño de la galería",
    "scopeFeatured": "Destacados",
    "scopeAll": "Todos los proyectos",
    "scopeMine": "Mis proyectos",
    "signedOutHint": "Añada un token de API de {{shareHost}} en Configuración para ver sus propios proyectos no listados y privados.",
    "emptyFeatured": "Aún no hay proyectos destacados.",
    "emptyMine": "Aún no ha compartido ningún proyecto.",
    "visibilityUnlisted": "No listado",
    "visibilityPrivate": "Privado"
  },
  "template": {
    "saveTitle": "Guardar como plantilla",
    "saveDescription": "Guarde este proyecto preconfigurado como una plantilla reutilizable en su biblioteca personal.",
    "defaultName": "Plantilla sin título",
    "nameLabel": "Nombre de la plantilla",
    "namePlaceholder": "p. ej., Mapa estándar de la organización",
    "descriptionLabel": "Descripción (opcional)",
    "descriptionPlaceholder": "p. ej., Mapa base, estilos y diseño de panel preconfigurados para los mapas del equipo",
    "stripDataLayersLabel": "Quitar capas de datos",
    "stripDataLayersDesc": "Conservar el mapa base, los grupos de capas, los estilos, la leyenda, los widgets y el diseño, pero quitar el contenido de las capas de datos.",
    "saveAction": "Guardar en la biblioteca de plantillas"
  },
  "language": {
    "label": "Idioma",
    "description": "Elija el idioma que se usará en la interfaz."
  },
  "printLayout": {
    "title": "Diseño de impresión",
    "description": "Componga un mapa listo para imprimir con título, leyenda, escala gráfica y flecha de norte, y luego expórtelo a PNG o PDF.",
    "preview": "Vista previa",
    "resizeControls": "Cambiar el tamaño del panel de controles",
    "resizeDialog": "Cambiar el tamaño del diálogo",
    "recapture": "Volver a capturar el mapa",
    "copyToClipboard": "Copiar al portapapeles",
    "copied": "Copiado",
    "exportPng": "Exportar PNG",
    "exportPdf": "Exportar PDF",
    "titleLabel": "Título",
    "titlePlaceholder": "Título del mapa",
    "subtitleLabel": "Subtítulo",
    "subtitlePlaceholder": "Subtítulo opcional",
    "size": "Tamaño",
    "sizeGroup": {
      "paper": "Papel",
      "screen": "Pantalla / digital"
    },
    "sizeCustom": "Personalizado…",
    "orientation": "Orientación",
    "portrait": "Vertical",
    "landscape": "Horizontal",
    "width": "Ancho",
    "height": "Alto",
    "unit": "Unidad",
    "titlePlacement": "Ubicación del título",
    "placement": {
      "outside": "Fuera del marco",
      "inside": "Dentro del marco"
    },
    "alignment": "Alineación",
    "align": {
      "left": "Izquierda",
      "center": "Centro",
      "right": "Derecha"
    },
    "mapElements": "Elementos del mapa",
    "element": {
      "title": "Título",
      "subtitle": "Subtítulo",
      "legend": "Leyenda",
      "scaleBar": "Escala gráfica",
      "northArrow": "Flecha de norte",
      "groupNavigation": "Agrupar flecha de norte y escala gráfica",
      "footer": "Texto de pie de página",
      "date": "Fecha",
      "attribution": "Incluir atribución de GeoLibre",
      "pageBorder": "Borde de página",
      "infoBlock": "Bloque de información (rótulo)",
      "colorbar": "Barra de color",
      "customLegend": "Leyenda personalizada",
      "dataTable": "Tabla de atributos",
      "dataChart": "Gráfico"
    },
    "dataBlocks": {
      "layer": "Capa",
      "titleLabel": "Encabezado",
      "position": "Posición",
      "filterToPage": "Solo entidades en la extensión de la página",
      "filterToPageHint": "Se aplica a las páginas de atlas y a una extensión de impresión dibujada; en caso contrario se usa toda la capa."
    },
    "dataTable": {
      "columns": "Columnas",
      "columnsHint": "Los primeros {{count}} campos se seleccionan de forma predeterminada. Marque columnas para personalizar.",
      "maxRows": "Máx. de filas",
      "moreRows_one": "+{{count}} más",
      "moreRows_other": "+{{count}} más",
      "noRows": "No hay filas que mostrar con la configuración actual."
    },
    "dataChart": {
      "type": "Tipo de gráfico",
      "typeBar": "Barras",
      "typePie": "Circular",
      "typeLine": "Líneas",
      "categoryField": "Campo de categoría",
      "aggregation": "Agregación",
      "aggCount": "Recuento",
      "aggSum": "Suma",
      "aggMean": "Media",
      "valueField": "Campo de valor",
      "noNumericFields": "Esta capa no tiene ningún campo numérico para agregar.",
      "noData": "No hay datos de gráfico con la configuración actual."
    },
    "customLegend": {
      "title": "Título de la leyenda",
      "color": "Color",
      "itemLabel": "Etiqueta",
      "position": "Posición",
      "addItem": "Añadir elemento",
      "removeItem": "Quitar elemento",
      "importFromDict": "Importar desde diccionario",
      "import": "Importar",
      "importError": "Introduzca un diccionario válido {\"etiqueta\": \"color\"}."
    },
    "colorbar": {
      "colormap": "Mapa de colores",
      "min": "Valor mínimo",
      "max": "Valor máximo",
      "label": "Etiqueta",
      "labelPlaceholder": "p. ej., Elevación (m)",
      "orientation": "Orientación",
      "vertical": "Vertical",
      "horizontal": "Horizontal",
      "position": "Posición",
      "length": "Longitud"
    },
    "position": {
      "topLeft": "Superior izquierda",
      "topRight": "Superior derecha",
      "bottomLeft": "Inferior izquierda",
      "bottomRight": "Inferior derecha"
    },
    "footerTextLabel": "Texto de pie de página",
    "footerPlaceholder": "Texto de pie de página personalizado",
    "margin": "Margen",
    "marginOption": {
      "normal": "Normal",
      "narrow": "Estrecho",
      "none": "Ninguno (sin borde)"
    },
    "mapBackground": "Fondo del mapa",
    "scaleLabel": "Escala (1:N)",
    "scalePlaceholder": "p. ej., 25000",
    "scalePresets": "Preajustes…",
    "scalePresetsAria": "Preajuste de escala",
    "extent": {
      "label": "Extensión de impresión",
      "draw": "Dibujar extensión en el mapa",
      "redraw": "Volver a dibujar la extensión en el mapa",
      "useViewport": "Usar la vista activa",
      "useCustom": "Recortar a una extensión personalizada",
      "clear": "Borrar extensión",
      "hint": "Arrastre un cuadro en el mapa para definir el área de impresión exacta. Mantenga pulsado Mayús para ajustarse a las proporciones de la página."
    },
    "info": {
      "author": "Autor",
      "authorPlaceholder": "Autor u organización",
      "project": "N.º de proyecto",
      "projectPlaceholder": "Número de referencia",
      "crs": "CRS",
      "crsPlaceholder": "p. ej., EPSG:4326",
      "scale": "Escala",
      "revision": "Revisión",
      "revisionPlaceholder": "p. ej., Rev 01"
    },
    "borderColor": "Color del borde",
    "borderWidth": "Ancho del borde",
    "mapBorderColor": "Color del marco del mapa",
    "mapBorderWidth": "Ancho del marco del mapa",
    "errors": {
      "mapNotReady": "El mapa aún no está listo. Inténtelo de nuevo en un momento.",
      "captureFailed": "No se pudo capturar la imagen del mapa.",
      "captureFirst": "Capture el mapa antes de exportar.",
      "exportFailed": "No se pudo exportar {{format}}.",
      "clipboardFailed": "No se pudo copiar el diseño al portapapeles.",
      "scaleOutOfRange": "Esta escala está fuera del rango que la vista actual puede alcanzar; se muestra la escala disponible más cercana."
    },
    "legend": {
      "section": "Leyenda",
      "titleLabel": "Título de la leyenda",
      "defaultTitle": "Leyenda",
      "groupByLayer": "Agrupar clases por capa",
      "empty": "No hay capas visibles para incluir en la leyenda.",
      "labelPlaceholder": "Etiqueta",
      "moveUp": "Mover entrada hacia arriba",
      "moveDown": "Mover entrada hacia abajo",
      "showEntry": "Mostrar entrada",
      "hideEntry": "Ocultar entrada",
      "moreItems_one": "+{{count}} más",
      "moreItems_other": "+{{count}} más"
    },
    "atlas": {
      "section": "Atlas (serie de mapas)",
      "enable": "Generar una serie de mapas de varias páginas",
      "coverageLayer": "Capa de cobertura",
      "coverage": "Cobertura",
      "coveragePerFeature": "Una página por entidad",
      "coverageAlongLine": "Páginas a lo largo de una línea",
      "segmentLength": "Longitud de segmento (km)",
      "segmentRequired": "Introduzca una longitud de segmento de al menos 0,1 km.",
      "segmentTruncated": "La serie se limitó a {{count}} páginas. Aumente la longitud del segmento.",
      "noLineFeatures": "La capa de cobertura no tiene entidades de línea.",
      "noLayers": "No hay capas vectoriales con entidades cargadas. Añada primero una capa GeoJSON u otra capa vectorial local.",
      "nameField": "Campo de nombre de página",
      "nameFieldNone": "Número de entidad",
      "extentMode": "Extensión de página",
      "extentMargin": "Margen alrededor de la entidad",
      "extentScale": "Escala fija",
      "marginLabel": "Margen (%)",
      "scaleLabel": "Escala",
      "scaleRequired": "Introduzca una escala mayor que cero.",
      "sortField": "Ordenar por",
      "sortNone": "Orden de la capa",
      "sortOrder": "Orden",
      "sortAsc": "Ascendente",
      "sortDesc": "Descendente",
      "filterLabel": "Filtro",
      "filterPlaceholder": "p. ej., POP2000 > 100000 and ST = \"CA\"",
      "filterError": "No se pudo interpretar el filtro. Use comparaciones campo-operador-valor (=, !=, >, >=, <, <=, contains) unidas con \"and\".",
      "filenamePattern": "Nombre de archivo de página (exportación ZIP)",
      "pages_one": "{{count}} página",
      "pages_other": "{{count}} páginas",
      "noPages": "Ninguna entidad coincide con el filtro actual.",
      "pageOf": "Página {{current}} de {{total}}",
      "prevPage": "Página anterior del atlas",
      "nextPage": "Página siguiente del atlas",
      "exportZip": "Exportar ZIP de PNG",
      "exportPdfPages_one": "Exportar PDF ({{count}} página)",
      "exportPdfPages_other": "Exportar PDF ({{count}} páginas)",
      "exporting": "Exportando página {{current}} de {{total}}...",
      "tokensHint": "Los tokens {atlas.name}, {atlas.pagenumber}, {atlas.total} y {atlas.attr:FIELD} se reemplazan en cada página en el título, el subtítulo, el pie y el nombre de archivo de página.",
      "alongLineHint": "Las páginas siguen cada línea en orden; km_start, km_end, segment y segments están disponibles como tokens {atlas.attr:FIELD}."
    }
  },
  "kml": {
    "importFailed": "No se pudo importar el KML/KMZ.",
    "timeOverlayGroup": "Animación de superposición temporal"
  },
  "map": {
    "boundsRestricted": "Límites bloqueados",
    "boundsRestrictedTooltip": "Los límites del mapa están restringidos. Puede cambiar esto en Configuración.",
    "directionsMode": {
      "title": "Modo de direcciones activo",
      "hint": "Haga clic en el mapa para añadir waypoints. Arrastre un waypoint para moverlo, o haga clic en él para eliminarlo. Las rutas se actualizan automáticamente.",
      "removeLast": "Quitar el último",
      "clear": "Borrar",
      "exit": "Salir",
      "calculating": "Calculando ruta...",
      "totalDistance": "Distancia",
      "estimatedTime": "Tiempo estimado",
      "segment": "Segmento {{index}}",
      "metricsUnavailable": "Métricas de ruta no disponibles",
      "distanceKilometers": "{{value}} km",
      "distanceMeters": "{{value}} m",
      "durationLessThanMinute": "< 1 min",
      "durationMinutes": "{{value}} min",
      "durationHours": "{{value}} h",
      "durationHoursMinutes": "{{hours}} h {{minutes}} min",
      "waypointCount_zero": "Aún no se ha colocado ningún waypoint",
      "waypointCount_one": "{{count}} waypoint colocado",
      "waypointCount_other": "{{count}} waypoints colocados"
    },
    "reverseGeocodeMode": {
      "title": "Modo de geocodificación inversa activo",
      "hint": "Haga clic en cualquier lugar del mapa para buscar la dirección en ese punto.",
      "exit": "Salir"
    },
    "pixelTimeSeriesMode": {
      "start": "Serie temporal de píxeles"
    }
  },
  "terrainSettings": {
    "title": "Exageración del terreno",
    "description": "Ajuste la exageración vertical del terreno 3D. Los valores más altos hacen que las colinas y montañas parezcan más pronunciadas.",
    "label": "Exageración vertical",
    "controlLabel": "Alternar terreno (doble clic para exageración)",
    "reset": "Restablecer",
    "done": "Listo"
  },
  "pixelTimeSeries": {
    "title": "Serie temporal de píxeles",
    "empty": "Haga clic en un píxel del mapa para trazar su valor a lo largo del tiempo. Añada más píxeles para comparar.",
    "band": "Banda",
    "bandOption": "Banda {{index}}",
    "pointLabel": "Punto {{number}}",
    "pickPoints": "Elegir puntos",
    "stopPicking": "Dejar de elegir",
    "clearAll": "Borrar todo",
    "removePoint": "Quitar {{label}}",
    "close": "Cerrar",
    "erroredExcluded": "La exportación excluye {{n}} lectura(s) fallida(s).",
    "querying": "Leyendo valores de píxeles en toda la línea de tiempo...",
    "progress": "Leyendo {{done}} de {{total}}...",
    "noValues": "No hay valores para la banda seleccionada en estas ubicaciones (fuera del ráster o todos los pasos de tiempo son nodata).",
    "truncated": "Mostrando {{kept}} de {{total}} pasos de la línea de tiempo (submuestreado para limitar las lecturas).",
    "chartAria": "Gráfico de líneas del valor de píxel a lo largo del tiempo",
    "yAxis": "Eje Y",
    "yMin": "Mín",
    "yMax": "Máx",
    "axisAuto": "auto",
    "gapNote": "Los segmentos discontinuos abarcan fechas sin lectura (nodata o fuera de la cobertura).",
    "exportCsv": "Exportar CSV",
    "exportGeoParquet": "Exportar GeoParquet"
  },
  "basemapExtract": {
    "title": "Extraer mapa base sin conexión",
    "url": "URL del mapa base",
    "urlPlaceholder": "https://data.source.coop/…/planet.pmtiles",
    "useView": "Usar la vista del mapa",
    "drawBbox": "Dibujar en el mapa",
    "drawing": "Dibujando…",
    "drawHint": "Arrastre un recuadro en el mapa para definir el área de extracción.",
    "clearBbox": "Borrar el área dibujada",
    "north": "Norte",
    "south": "Sur",
    "west": "Oeste",
    "east": "Este",
    "bboxHint": "Introduzca un cuadro delimitador válido: oeste < este y sur < norte, dentro de [-180, 180] y [-90, 90].",
    "minZoom": "Zoom mínimo",
    "maxZoom": "Zoom máximo",
    "zoomHint": "Los niveles de zoom deben ser números enteros con mín ≤ máx (0–30). Los niveles superiores al máximo del archivo se ignoran.",
    "errorNoSourceLayers": "Este archivo vectorial no tiene metadatos de capas, por lo que no se puede representar. Pruebe con otro archivo.",
    "savedTitle": "Mapas base guardados",
    "openFile": "Abrir archivo…",
    "savedEmpty": "Aún no hay mapas base guardados. Extraiga uno arriba o abra un archivo .pmtiles.",
    "errorNotBasemap": "Este archivo no es un mapa base vectorial de Protomaps, por lo que no se le puede aplicar un estilo.",
    "apply": "Usar como mapa base",
    "rename": "Cambiar el nombre",
    "delete": "Eliminar",
    "confirmDelete": "¿Eliminar?",
    "style": "Estilo del mapa base",
    "flavor": {
      "light": "Claro",
      "dark": "Oscuro",
      "white": "Blanco",
      "grayscale": "Escala de grises",
      "black": "Negro"
    },
    "flavorOverlay": "Ninguno (capa de superposición)",
    "styleHintBasemap": "Representa el extracto como un mapa base de Protomaps con estilo (carreteras, agua, etiquetas), sin conexión.",
    "styleHintOverlay": "Añade el extracto como una capa de superposición simple en lugar de un mapa base con estilo.",
    "phaseDirectories": "Leyendo los directorios del archivo…",
    "phaseData": "Descargando teselas…",
    "resize": "Cambiar el tamaño del panel",
    "estimatedSize": "≈ {{size}} · {{tiles}} teselas",
    "estimatedSizeLarge": "Descarga grande: ≈ {{size}} · {{tiles}} teselas",
    "planWarning": "Este extracto ocupa unos {{size}} en {{tiles}} teselas y se ensambla en memoria. ¿Continuar?",
    "planContinue": "Continuar",
    "extract": "Extraer",
    "extracting": "Extrayendo…",
    "successSaved": "Se guardó en {{path}} y se añadió al mapa.",
    "successAdded": "Se añadió al mapa (el archivo no se guardó).",
    "successAddedSaveFailed": "Se añadió al mapa, pero no se pudo guardar en el disco: {{error}}",
    "successBasemapSaved": "Se guardó en {{path}} y se estableció como mapa base.",
    "successBasemapApplied": "Se estableció como mapa base (el archivo no se guardó).",
    "successBasemapSaveFailed": "Se estableció como mapa base, pero no se pudo guardar en el disco: {{error}}"
  },
  "rasterSubset": {
    "title": "Extraer subconjunto",
    "drawBbox": "Dibujar cuadro delimitador",
    "drawing": "Dibujando…",
    "drawHint": "Haga clic y arrastre en el mapa para dibujar el área de extracción. Pulse Esc para cancelar.",
    "useView": "Usar vista",
    "north": "Norte",
    "south": "Sur",
    "west": "Oeste",
    "east": "Este",
    "bboxHint": "Introduzca un cuadro válido: oeste/este entre -180 y 180, sur/norte entre -90 y 90, con oeste < este y sur < norte.",
    "bboxAntimeridianHint": "El oeste debe ser menor que el este. Los cuadros que cruzan el meridiano 180° no se admiten; divídalos en dos extracciones.",
    "zoom": "Nivel de zoom",
    "zoomHint": "Introduzca un nivel de zoom entero entre 0 y 30.",
    "resolution": "Resolución",
    "resolutionPlaceholder": "Nativa",
    "resolutionHint": "Tamaño de píxel de salida en las unidades del CRS de salida. Déjelo en blanco para conservar la resolución de origen.",
    "advanced": "Opciones avanzadas",
    "outputCrs": "CRS de salida (EPSG)",
    "outputCrsPlaceholder": "Igual que la entrada",
    "nodata": "Valor nodata",
    "nodataPlaceholder": "Ninguno",
    "additionalArgs": "Opciones adicionales",
    "additionalArgsPlaceholder": "level=2\nwidth=512",
    "additionalArgsHint": "Un par clave=valor por línea, p. ej., level, width, height.",
    "errorResolution": "La resolución debe ser un número positivo.",
    "errorOutputCrs": "El CRS de salida debe ser un código EPSG positivo.",
    "errorNodata": "Nodata debe ser un número.",
    "errorAdditionalArgs": "Las opciones adicionales deben ser un par clave=valor por línea.",
    "extract": "Extraer y guardar",
    "extracting": "Extrayendo…",
    "success": "Subconjunto guardado."
  },
  "mapGrid": {
    "layers": "Capas",
    "layersLabel": "Visibilidad de capas para el mapa {{number}}",
    "noLayers": "Aún no hay capas",
    "labelPlaceholder": "Etiqueta",
    "labelLabel": "Etiqueta para el mapa {{number}}",
    "removePane": "Quitar mapa {{number}}",
    "show3d": "Mostrar el mapa {{number}} como globo 3D",
    "show2d": "Mostrar el mapa {{number}} como mapa 2D",
    "only2d": "Solo 2D"
  },
  "mapContextMenu": {
    "copyCoordinatesHint": "Copiar coordenadas al portapapeles",
    "quickActions": "Acciones rápidas",
    "whatsHere": "¿Qué hay aquí?",
    "copyGeoJson": "Copiar como GeoJSON",
    "centerHere": "Centrar el mapa aquí",
    "zoomInHere": "Acercar aquí",
    "viewInGoogleMaps": "Ver en Google Maps",
    "viewInGoogleEarth": "Ver en Google Earth"
  },
  "quickAnalysis": {
    "menu": "Análisis rápido",
    "bufferHere": "Búfer de {{distance}} aquí",
    "bufferFeatures": "Búfer de {{distance}} en todas las entidades",
    "driveTimeHere": "Tiempo en coche desde aquí ({{contours}} min)",
    "walkTimeHere": "Tiempo a pie desde aquí ({{contours}} min)",
    "centroids": "Centroides",
    "convexHull": "Envolvente convexa",
    "boundingBox": "Cuadro delimitador",
    "openInProcessing": "Abrir en Procesamiento…",
    "bufferLayerName": "Búfer {{distance}}",
    "bufferOfLayerName": "{{name}} búfer {{distance}}",
    "driveTimeLayerName": "Tiempo en coche",
    "walkTimeLayerName": "Tiempo a pie",
    "centroidsLayerName": "{{name}} centroides",
    "convexHullLayerName": "{{name}} envolvente convexa",
    "boundingBoxLayerName": "{{name}} cuadro delimitador",
    "running": "Ejecutando {{tool}}…",
    "failed": "{{tool}} falló",
    "viewDetails": "Ver detalles",
    "unit": {
      "meters": "m",
      "kilometers": "km",
      "miles": "mi"
    }
  },
  "knowledgeCard": {
    "title": "Información del lugar",
    "loading": "Buscando información sobre este lugar…",
    "empty": "No se encontraron artículos de Wikipedia cerca de este lugar.",
    "error": "No se pudo cargar la información del lugar. Inténtelo de nuevo.",
    "readMore": "Leer más en Wikipedia",
    "nearby": "Lugares cercanos",
    "attribution": "Contenido de Wikipedia, con licencia CC BY-SA.",
    "noticeTitle": "Las tarjetas de información usan Wikipedia",
    "noticeDesc": "Al abrir una tarjeta de información se envían las coordenadas del lugar en el que hizo clic (y el título de cualquier artículo cercano que abra) a la API pública de Wikipedia para obtener un resumen y una foto; sus coordenadas salen de su dispositivo en esas solicitudes."
  },
  "onboarding": {
    "title": "Bienvenido a GeoLibre",
    "description": "Elija su nivel de experiencia para adaptar la interfaz. Puede cambiarlo en cualquier momento en Configuración → Interfaz.",
    "level": {
      "beginner": {
        "title": "Principiante",
        "description": "Mostrar solo las fuentes de datos y herramientas esenciales."
      },
      "intermediate": {
        "title": "Intermedio",
        "description": "Mostrar fuentes de datos, servicios y complementos comunes."
      },
      "advanced": {
        "title": "Avanzado",
        "description": "Mostrar todo lo que GeoLibre ofrece."
      }
    },
    "showEverything": "Omitir: mostrar todo"
  },
  "settings": {
    "title": "Configuración",
    "description": "Configure las preferencias del proyecto y los ajustes de tiempo de ejecución.",
    "saveButton": "Guardar configuración",
    "section": {
      "map": "Mapa",
      "layout": "Diseño",
      "appearance": "Apariencia",
      "interface": "Interfaz",
      "geocoding": "Geocodificación",
      "ai": "Proveedores de IA",
      "environment": "Entorno",
      "updates": "Actualizaciones"
    },
    "menu": {
      "mapPreferences": "Preferencias del mapa",
      "layoutSettings": "Configuración de diseño",
      "appearanceSettings": "Configuración de apariencia",
      "interfaceSettings": "Configuración de interfaz",
      "geocoding": "Geocodificación",
      "ai": "Proveedores de IA",
      "environmentVariables": "Variables de entorno",
      "updates": "Configuración de actualizaciones",
      "managePlugins": "Administrar complementos",
      "styleManager": "Administrador de estilos",
      "urlOverrideNote": "Los parámetros de diseño de la URL anulan la configuración guardada."
    },
    "updates": {
      "title": "Actualizaciones de software",
      "description": "Controle cómo GeoLibre busca nuevas versiones al iniciar la aplicación de escritorio.",
      "checkOnStartup": "Buscar actualizaciones al iniciar",
      "checkOnStartupHint": "Cuando está activado, GeoLibre busca una versión más reciente cada vez que se inicia la aplicación. Desactívelo para un flujo de trabajo totalmente sin conexión.",
      "notificationLevel": "Notificarme sobre",
      "notificationLevelHint": "Elija qué tipos de versiones activan una notificación de inicio.",
      "level": {
        "all": "Todas las versiones (mayores, menores y parches)",
        "minor": "Solo versiones mayores y menores",
        "major": "Solo versiones mayores"
      }
    },
    "map": {
      "constraintsTitle": "Restricciones del mapa",
      "restrictBounds": "Restringir límites del mapa",
      "west": "Oeste",
      "south": "Sur",
      "east": "Este",
      "north": "Norte",
      "useCurrentView": "Usar vista actual",
      "useCurrentViewHint": "Captura la extensión actual del mapa y activa Restringir límites del mapa.",
      "useCurrentViewGlobeHint": "Cambie a la proyección Mercator antes de usar esto. En la proyección de globo, el mapa aún puede desviarse ligeramente más allá de los límites capturados.",
      "minZoom": "Zoom mínimo",
      "maxZoom": "Zoom máximo",
      "maxPitch": "Inclinación máxima",
      "renderWorldCopies": "Renderizar copias del mundo",
      "ellipsoid": "Cuerpo celeste",
      "ellipsoidHint": "Establece el radio usado para las mediciones de distancia, área y escala. Elija un mapa base planetario que coincida en Añadir datos.",
      "scaleUnit": "Unidades de la barra de escala",
      "scaleUnitMetric": "Métricas (m / km)",
      "scaleUnitImperial": "Imperiales (ft / mi)",
      "scaleUnitNautical": "Náuticas (nmi)",
      "scaleUnitHint": "Elija las unidades que se muestran en la barra de escala en la parte inferior del mapa.",
      "errorBoundsUnavailable": "Los límites del mapa aún no están disponibles."
    },
    "layout": {
      "title": "Diseño",
      "description": "Visibilidad del espacio de trabajo y presentación de la barra de herramientas.",
      "toolbar": "Barra de herramientas",
      "panels": "Paneles",
      "showToolbarLabels": "Mostrar etiquetas de la barra de herramientas",
      "showProjectInfo": "Mostrar información del proyecto",
      "showProjectInfoToolbar": "Mostrar información del proyecto en la barra de herramientas",
      "showLayersPanel": "Mostrar panel de capas",
      "showStylePanel": "Mostrar panel de estilo",
      "showBrowserPanel": "Mostrar panel del explorador",
      "showCommentsPanel": "Mostrar panel de comentarios",
      "showAttributePanel": "Mostrar panel de atributos",
      "urlParamsNote": "Los parámetros de diseño de la URL siguen aplicándose cuando están presentes en los enlaces de visor compartidos."
    },
    "appearance": {
      "title": "Apariencia",
      "description": "Elija un modo claro u oscuro y un color de acento que se aplica sobre él.",
      "themeMode": "Modo",
      "mode": {
        "light": "Claro",
        "dark": "Oscuro"
      },
      "accentColor": "Color de acento",
      "custom": "Personalizado",
      "customColor": "Color personalizado",
      "customColorHex": "Código hexadecimal del color personalizado",
      "scheme": {
        "blue": "Azul",
        "violet": "Violeta",
        "emerald": "Esmeralda",
        "rose": "Rosa",
        "amber": "Ámbar"
      }
    },
    "interface": {
      "title": "Perfil de interfaz",
      "description": "Elija un nivel de experiencia para simplificar la interfaz. No se elimina nada, así que puede cambiar de nivel o volver a activar elementos aquí en cualquier momento.",
      "presets": "Nivel de experiencia",
      "presetsHint": "Principiante, Intermedio y Avanzado aplican un diseño curado al instante. Editar cualquier elemento a continuación cambia a Personalizado, o haga clic en Personalizado para mantener la configuración actual en modo personalizado.",
      "level": {
        "beginner": "Principiante",
        "intermediate": "Intermedio",
        "advanced": "Avanzado",
        "custom": "Personalizado"
      },
      "dataSources": "Fuentes de datos",
      "plugins": "Complementos",
      "menus": "Menús",
      "lockedNote": "Este perfil de interfaz está gestionado por su administrador y no se puede cambiar."
    },
    "env": {
      "tokenTitle": "Token de API de Share.GeoLibre",
      "tokenDescription": "Proyecto > Compartir usa este token para subir sus mapas a {{shareHost}}. Abra <tokenLink>{{shareHost}}/settings</tokenLink>, cree un token en Configuración > Tokens de API y luego péguelo en el campo de abajo.",
      "tokenStorageNote": "Se almacena localmente en este dispositivo y solo se envía a {{shareHost}} para autenticar las subidas. En la compilación web, comparte el mismo almacenamiento del navegador que otros datos del sitio, así que revóquelo en {{shareHost}} si su equipo se ve comprometido.",
      "tokenUnavailable": "Esta implementación no tiene configurado ningún servidor para compartir proyectos, por lo que no se necesita ningún token de API.",
      "tokenHostInvalid": "La dirección del servidor para compartir proyectos de esta implementación no es válida, por lo que este token no se puede usar.",
      "tokenPlaceholder": "glb_…",
      "cesiumTokenTitle": "Token de Cesium Ion",
      "cesiumTokenDescription": "El globo 3D (un panel de vista dividida) usa imágenes y terreno mundiales de Cesium Ion, que necesitan un token de acceso. Cree una cuenta gratuita en <tokenLink>ion.cesium.com/tokens</tokenLink>, copie su token de acceso predeterminado y péguelo a continuación. Sin un token, el interruptor del globo 3D permanece oculto.",
      "cesiumTokenStorageNote": "Se almacena localmente en este dispositivo (no en el archivo del proyecto, así que nunca se comparte) y solo se envía a Cesium Ion. En la compilación web, comparte el mismo almacenamiento del navegador que otros datos del sitio.",
      "cesiumTokenPlaceholder": "eyJhbGciOi…",
      "variablesTitle": "Variables de entorno",
      "variablesCount_one": "{{count}} variable de tiempo de ejecución activada.",
      "variablesCount_other": "{{count}} variables de tiempo de ejecución activadas.",
      "secretsWarning": "Los valores se almacenan en texto sin formato en el archivo del proyecto y pueden quedar expuestos al compartir el proyecto. Evite colocar aquí datos confidenciales a menos que el archivo del proyecto permanezca privado.",
      "empty": "No hay variables de entorno configuradas.",
      "variableFallback": "variable",
      "enableAria": "Activar {{name}}",
      "nameAria": "Nombre de la variable",
      "namePlaceholder": "VITE_EXAMPLE_KEY",
      "valueAria": "Valor de la variable",
      "valuePlaceholder": "Valor",
      "showValueAria": "Mostrar valor de {{name}}",
      "hideValueAria": "Ocultar valor de {{name}}",
      "removeAria": "Quitar {{name}}",
      "errorNamePattern": "Los nombres de las variables de entorno deben comenzar con una letra o un guion bajo y contener solo letras, números y guiones bajos.",
      "errorDuplicate": "La variable de entorno «{{name}}» está duplicada.",
      "stripPromptTitle": "¿Eliminar credenciales?",
      "stripPromptDesc": "Este proyecto tiene {{count}} campo(s) que contienen credenciales, como claves de API, encabezados de solicitud o ajustes de complementos. ¿Deseas eliminarlos del archivo guardado? El espacio de trabajo actual los conservará en cualquier caso.",
      "stripButton": "Eliminar credenciales",
      "keepButton": "Mantener en el archivo"
    },
    "geocoding": {
      "title": "Geocodificación",
      "description": "Elija el motor de geocodificación usado por Geocodificar direcciones y Geocodificación inversa. Nominatim es el predeterminado y no necesita clave.",
      "provider": "Proveedor",
      "requiresKey": "Este proveedor necesita una clave de API o un token de acceso.",
      "optionalKey": "El servicio alojado necesita una clave de API; una instancia autoalojada no la necesita.",
      "noKey": "Este proveedor funciona sin clave de API.",
      "apiKey": "Clave de API",
      "apiKeyPlaceholder": "Pegue la clave o token de API del proveedor",
      "toggleApiKey": "Alternar visibilidad de la clave de API",
      "forwardEndpoint": "Punto de conexión directo (opcional)",
      "reverseEndpoint": "Punto de conexión inverso (opcional)",
      "email": "Correo de contacto (opcional)",
      "emailPlaceholder": "usted@ejemplo.org",
      "emailHint": "Solo lo usa Nominatim, que recomienda proporcionarlo para ayudar a identificar su aplicación; solo se envía si se indica.",
      "secretsWarning": "Las claves se almacenan en texto sin formato en el archivo del proyecto y pueden quedar expuestas al compartir el proyecto. También se envían como parámetros de consulta, por lo que aparecen en las URL de las solicitudes de geocodificación visibles en las herramientas de desarrollo del navegador y en cualquier registro de proxy.",
      "corsNote": "Google no permite oficialmente las solicitudes del navegador a su API de geocodificación, por lo que las solicitudes pueden bloquearse a menos que se sirvan a través de un proxy del mismo origen."
    },
    "ai": {
      "title": "Proveedores del asistente de IA",
      "description": "Configure las credenciales del asistente de IA. Elija un proveedor, complete los campos que necesita y luego Guardar. Solo se requiere un proveedor configurado para empezar a chatear.",
      "providerLabel": "Proveedor",
      "providerHint": "Elija un proveedor para mostrar los campos exactos que necesita.",
      "configuredMark": "(configurado)",
      "optionalMark": "(opcional)",
      "statusReady": "{{provider}} está configurado y listo para usar.",
      "statusIncomplete": "Complete los campos obligatorios a continuación para activar {{provider}}.",
      "secretsNote": "Las credenciales se guardan localmente en este dispositivo, no en el archivo de proyecto que comparte, por lo que se conservan entre reinicios. Cualquiera con acceso a este dispositivo podría leerlas.",
      "getCredentials": "Dónde obtener las credenciales de {{provider}}",
      "showValue": "Mostrar {{name}}",
      "hideValue": "Ocultar {{name}}",
      "osEnvNote": "La aplicación de escritorio también lee las claves de API correspondientes de las variables de entorno de su sistema. Esas se usan automáticamente y nunca se guardan en el archivo de proyecto; deje un campo en blanco para seguir usando el valor del entorno.",
      "osEnvField": "Se lee de la variable de entorno de su sistema {{name}}.",
      "osEnvPlaceholder": "Definida en el entorno de su sistema",
      "newProfile": "Nuevo perfil",
      "cancel": "Cancelar",
      "addProfile": "Añadir perfil",
      "profileName": "Nombre del perfil",
      "profileNamePlaceholder": "p. ej., Gemini del trabajo, Ollama local",
      "profileCount_one": "{{count}} perfil",
      "profileCount_other": "{{count}} perfiles",
      "noProfiles": "Aún no hay perfiles. Añada uno abajo para configurar el asistente de IA.",
      "setDefault": "Establecer como predeterminado",
      "defaultProfile": "Predeterminado",
      "edit": "Editar",
      "deleteProfile": "Eliminar perfil",
      "backToProfiles": "← Volver a los perfiles",
      "saveProfile": "Guardar perfil",
      "profileEditSaveHint": "Guarde o descarte los cambios del perfil de arriba y luego haga clic en «Guardar configuración» para confirmar todos los cambios.",
      "field": {
        "apiKey": "Clave de API",
        "baseUrl": "URL base",
        "model": "Modelo",
        "region": "Región",
        "accessKeyId": "ID de clave de acceso",
        "secretAccessKey": "Clave de acceso secreta",
        "sessionToken": "Token de sesión"
      },
      "placeholder": {
        "geminiKey": "AIza…",
        "anthropicKey": "sk-ant-…",
        "openaiKey": "sk-…",
        "ollamaBaseUrl": "http://localhost:11434",
        "ollamaModel": "llama3.2",
        "awsAccessKey": "AKIA…",
        "awsSecretKey": "wJalrXUtnFEMI…",
        "awsRegion": "us-east-1",
        "awsSessionToken": "FwoGZXIvYXdz… (si usa credenciales temporales)",
        "customBaseUrl": "https://api.example.com/v1",
        "customModel": "model-id",
        "customApiKey": "sk-… (si es necesario)"
      }
    }
  },
  "toolbar": {
    "menu": {
      "project": "Proyecto",
      "import": "Importar",
      "edit": "Editar",
      "view": "Ver",
      "addData": "Añadir datos",
      "processing": "Procesamiento",
      "controls": "Controles",
      "plugins": "Complementos",
      "help": "Ayuda",
      "settings": "Configuración"
    },
    "atmosphere": {
      "haloColor": "Color del halo",
      "haloExtent": "Extensión del halo",
      "haloExtentHint": "Hasta dónde llega el resplandor atmosférico más allá del globo. Un valor más bajo mantiene los datos ajustados a la superficie; un valor más alto produce un halo amplio y etéreo.",
      "haloOpacity": "Intensidad del halo",
      "spaceColor": "Color del espacio",
      "reset": "Restablecer valores predeterminados",
      "globeOnly": "Los efectos atmosféricos solo están disponibles cuando la vista de globo está activada."
    },
    "sun": {
      "title": "Sol",
      "date": "Fecha",
      "time": "Hora",
      "timeOfDay": "Hora del día",
      "play": "Reproducir",
      "pause": "Pausar",
      "stepBack": "Retroceder una hora",
      "stepForward": "Avanzar una hora",
      "speed": "Velocidad de animación",
      "loop": "Repetir animación",
      "now": "Ahora",
      "shade": "Sombreado nocturno",
      "close": "Cerrar",
      "localTimeNote": "Horas mostradas en la zona horaria de su equipo."
    },
    "routeAnimation": {
      "title": "Animación de ruta",
      "layer": "Capa de ruta",
      "selectLayer": "Seleccione una capa de líneas…",
      "noLineLayers": "No hay capas de líneas en el proyecto",
      "play": "Reproducir",
      "pause": "Pausa",
      "loop": "Repetir animación",
      "progress": "Progreso",
      "speed": "Velocidad",
      "followCamera": "Seguir",
      "followPitch": "Inclinación de la cámara",
      "followZoom": "Zoom de la cámara",
      "followRotate": "Rotar según el rumbo",
      "color": "Color de la ruta",
      "marker": "Marcador",
      "markerStyle": {
        "arrow": "Flecha (rumbo)",
        "point": "Punto",
        "none": "Ninguno"
      },
      "trail": "Rastro",
      "saveVideoMp4": "Guardar como MP4",
      "saveVideoWebm": "Guardar como WebM",
      "estimatedLength": "≈ {{seconds}} s",
      "recordingStatus": "Grabando… {{percent}}%",
      "savingVideo": "Guardando vídeo…",
      "stop": "Detener",
      "videoSaved": "Se guardó {{name}}",
      "videoError": "No se pudo grabar la animación. Inténtelo de nuevo.",
      "videoUnsupported": "La grabación de vídeo no es compatible con este navegador.",
      "videoFileTypeMp4": "Vídeo MP4",
      "videoFileTypeWebm": "Vídeo WebM",
      "collapse": "Contraer",
      "expand": "Expandir",
      "close": "Cerrar"
    },
    "flightSim": {
      "title": "Simulador de vuelo",
      "start": "Iniciar vuelo",
      "stop": "Detener vuelo",
      "collapse": "Contraer",
      "expand": "Expandir",
      "close": "Cerrar",
      "speed": "Velocidad",
      "altitude": "Altitud",
      "heading": "Rumbo",
      "agl": "Sobre el terreno",
      "throttle": "Acelerador",
      "maxSpeed": "Velocidad máxima",
      "minAgl": "Margen sobre el terreno",
      "units": "Unidades",
      "imperial": "Nudos / pies",
      "metric": "km/h / metros",
      "bankCamera": "Inclinar el horizonte en los virajes",
      "invertPitch": "Invertir el eje de cabeceo",
      "knots": "kt",
      "kph": "km/h",
      "feet": "ft",
      "meters": "m",
      "terrainWarning": "Terreno: asciende",
      "help": "Flechas o A/D para virar · W/S o Re Pág/Av Pág para el acelerador · Espacio nivela las alas · Esc sale."
    },
    "setView": {
      "title": "Establecer vista",
      "description": "Mueve el mapa a una cámara exacta.",
      "sectionCoordinates": "Coordenadas",
      "smartPaste": "Pegar coordenadas",
      "smartPasteInputLabel": "Cadena de coordenadas",
      "smartPastePlaceholder": "p. ej., 51.5074, -0.1278 o 51°30'26\"N, 0°07'39\"O",
      "smartPasteInfo": "Escriba o pegue una cadena de coordenadas completa en DD, DMS o DDM y luego ejecute Procesar entrada. GeoLibre detecta el formato y completa los campos de longitud y latitud de abajo. Ajuste el zoom, la inclinación y el rumbo por separado antes de ir.",
      "smartPasteInfoLabel": "Acerca de pegar coordenadas",
      "smartPasteInvalid": "No se pudieron leer esas coordenadas. Introduzca una longitud y latitud completas en DD, DMS o DDM, por ejemplo 51.5074, -0.1278. No se puede analizar una cadena parcial o incompleta.",
      "processInput": "Procesar entrada",
      "processed": "Se completaron los campos de longitud y latitud de abajo.",
      "sectionZoom": "Zoom de la cámara",
      "sectionOrientation": "Orientación de la cámara",
      "orientationHint": "La inclinación y el rumbo son 0 de forma predeterminada si se dejan en blanco.",
      "format": "Formato de entrada manual",
      "formatInfo": "Estos botones solo eligen cómo escribe el centro manualmente. El cuadro de pegado de arriba ya acepta cualquier formato.\nDD: 51.5074, -0.1278\nDMS: 51°30'26\"N, 0°07'39\"O\nDDM: 51°30.44'N, 0°07.65'O",
      "formatInfoLabel": "Acerca de los formatos de coordenadas",
      "formatDd": "Grados decimales (DD)",
      "formatDms": "Grados, minutos, segundos (DMS)",
      "formatDdm": "Grados y minutos decimales (DDM)",
      "formatDdShort": "DD",
      "formatDmsShort": "DMS",
      "formatDdmShort": "DDM",
      "longitude": "Longitud",
      "latitude": "Latitud",
      "degrees": "Grados",
      "minutes": "Minutos",
      "seconds": "Segundos",
      "hemisphere": "Hemisferio",
      "zoom": "Zoom",
      "pitch": "Inclinación",
      "bearing": "Rumbo",
      "go": "Ir",
      "invalid": "Introduzca una longitud (−180 a 180), latitud (−90 a 90) y zoom válidos.",
      "invalidDms": "Introduzca grados, minutos (0 a 59), segundos (0 a 59) y zoom válidos.",
      "invalidDdm": "Introduzca grados, minutos decimales (0 a < 60) y zoom válidos."
    },
    "commandGroup": {
      "project": "Proyecto",
      "addData": "Añadir datos",
      "processing": "Procesamiento",
      "controls": "Controles",
      "view": "Ver",
      "help": "Ayuda",
      "plugins": "Complementos",
      "settings": "Configuración"
    },
    "command": {
      "projectNew": "Nuevo proyecto",
      "projectOpenFile": "Abrir proyecto desde archivo",
      "projectOpenUrl": "Abrir proyecto desde URL",
      "projectSave": "Guardar proyecto",
      "projectSaveAs": "Guardar proyecto como…",
      "projectShare": "Compartir proyecto…",
      "projectCollaborate": "Colaborar…",
      "projectPrint": "Imprimir…",
      "addVectorLayer": "Añadir capa vectorial",
      "addRasterLayer": "Añadir capa ráster",
      "addOsmPbfLayer": "Añadir capa OSM PBF",
      "addLayer": "Añadir {{name}}",
      "addStacLayer": "Añadir capa STAC",
      "addGeoparquetLayer": "Añadir capa GeoParquet",
      "addFlatgeobufLayer": "Añadir capa FlatGeobuf",
      "addPmtilesLayer": "Añadir capa PMTiles",
      "addZarrLayer": "Añadir capa Zarr",
      "addNetcdfLayer": "Añadir capa NetCDF / HDF",
      "addLidarLayer": "Añadir capa LiDAR",
      "addSplattingLayer": "Añadir Gaussian Splatting",
      "add3dTilesLayer": "Añadir capa 3D Tiles",
      "addDuckdbLayer": "Añadir capa DuckDB",
      "whiteboxTools": "Herramientas Whitebox",
      "sqlWorkspace": "Espacio de trabajo SQL",
      "pythonConsole": "Consola de Python",
      "notebook": "Cuaderno Jupyter",
      "dashboard": "Panel de control",
      "assistant": "Asistente de IA",
      "geocode": "Geocodificar direcciones",
      "modelBuilder": "Lotes y modelos",
      "planetaryComputer": "Planetary Computer",
      "earthEngine": "Earth Engine",
      "segmentation": "Segmentación con IA",
      "objectDetection": "Detección de objetos",
      "segmentEverything": "Segmentar todo",
      "toggleControl": "Alternar control {{name}}",
      "toggleAtmosphereEffects": "Alternar efectos atmosféricos",
      "toggleDirections": "Alternar direcciones",
      "toggleSearch": "Alternar búsqueda",
      "toggleColorbar": "Alternar barra de color",
      "toggleLegend": "Alternar leyenda",
      "toggleHtmlPanel": "Alternar panel HTML",
      "toggleMeasure": "Alternar medición",
      "toggleBookmark": "Alternar marcador",
      "toggleMinimap": "Alternar minimapa",
      "toggleViewState": "Alternar estado de vista",
      "previousView": "Vista anterior",
      "nextView": "Vista siguiente",
      "resetNorth": "Restablecer rumbo",
      "resetPitch": "Restablecer inclinación",
      "resetPitchBearing": "Restablecer inclinación y rumbo",
      "setView": "Establecer vista",
      "viewComments": "Ver comentarios",
      "zoomIn": "Acercar",
      "zoomOut": "Alejar",
      "switchToLight": "Cambiar a modo claro",
      "switchToDark": "Cambiar a modo oscuro",
      "keyboardShortcuts": "Atajos de teclado",
      "website": "Sitio web",
      "githubRepository": "Repositorio de GitHub",
      "diagnostics": "Diagnóstico",
      "giveFeedback": "Enviar comentarios",
      "checkForUpdates": "Buscar actualizaciones",
      "about": "Acerca de",
      "togglePlugin": "Alternar {{name}}",
      "managePlugins": "Administrar complementos",
      "styleManager": "Administrador de estilos…"
    },
    "layerType": {
      "delimitedText": "Capa de texto delimitado",
      "photos": "Fotos geoetiquetadas",
      "gpx": "Capa GPX",
      "mbtiles": "Capa MBTiles",
      "xyz": "Capa XYZ",
      "wms": "Capa WMS",
      "wfs": "Capa WFS",
      "wmts": "Capa WMTS",
      "ogcFeatures": "OGC API - Features",
      "ogcVectorTiles": "Teselas vectoriales OGC",
      "arcgis": "Capa de ArcGIS",
      "georss": "Capa GeoRSS",
      "video": "Capa de vídeo",
      "deckglViz": "Capa Deck.gl",
      "gltfModel": "Modelo 3D (glTF)",
      "postgres": "Capa de PostgreSQL"
    },
    "conversion": {
      "vectorToVector": "Vectorial a vectorial",
      "zipInputBrowserError": "Los shapefiles comprimidos solo se pueden convertir en la aplicación de escritorio de GeoLibre. En el navegador, seleccione el .shp descomprimido junto con sus archivos .dbf, .shx y .prj.",
      "browserOutputUnsupported": "En el navegador, la salida puede ser GeoJSON, CSV, GeoParquet, GeoPackage o Shapefile (.zip). La salida «.{{extension}}» necesita la aplicación de escritorio de GeoLibre.",
      "outputExtensionRequired": "Añada una extensión de archivo al nombre de salida para elegir el formato.",
      "readingWithDuckDb": "Leyendo {{name}} con DuckDB-WASM",
      "readFeatures": "Se leyeron {{features}} entidades de {{name}}",
      "savedFile": "Se guardó {{name}}",
      "saveCanceled": "Conversión finalizada; se canceló el guardado.",
      "vectorToGeoparquet": "Vectorial a GeoParquet",
      "vectorToFlatgeobuf": "Vectorial a FlatGeobuf",
      "vectorToShapefile": "Vectorial a Shapefile",
      "vectorToGeopackage": "Vectorial a GeoPackage",
      "csvToGeoparquet": "CSV a GeoParquet",
      "vectorToPmtiles": "Vectorial a PMTiles",
      "rasterToCog": "Ráster a COG",
      "rasterToPmtiles": "Ráster a PMTiles",
      "needsDesktop": "Esta conversión necesita la aplicación de escritorio de GeoLibre o un sidecar en ejecución.",
      "runsInBrowserDuckDb": "La conversión se ejecuta en su navegador con DuckDB-WASM.",
      "runsInBrowserWriters": "La conversión se ejecuta en su navegador con DuckDB-WASM y los escritores integrados.",
      "runsInBrowserWasm": "La conversión se ejecuta en su navegador con geolibre-wasm. No se necesita sidecar.",
      "convertingWithWasm": "Convirtiendo {{name}} con geolibre-wasm",
      "rasterShape": "Se leyó un ráster de {{width}}×{{height}} con {{bands}} banda(s)",
      "wroteCog": "Se escribió un COG teselado con vistas generales ({{compression}})",
      "notAGeoTiff": "Este archivo no es un GeoTIFF legible. En el navegador, Ráster a COG solo lee GeoTIFF; otros formatos necesitan la aplicación de escritorio.",
      "zoomRangeError": "Los niveles de zoom deben cumplir 0 ≤ mín ≤ máx ≤ {{max}}.",
      "colormap": "Mapa de colores",
      "resampling": "Remuestreo",
      "colormapDefault": "Predeterminado (viridis)",
      "zoomNative": "nativo",
      "rasterToPmtilesDesc": "Renderiza un ráster en un único archivo PMTiles de teselas PNG en Web Mercator, listo para servirse de forma nativa en la nube. Se renderiza una sola banda mediante un mapa de colores, por lo que las imágenes multibanda no se dibujan en color real. Se ejecuta por completo en WebAssembly, por lo que no necesita sidecar ni en la aplicación web ni en la de escritorio.",
      "cogBrowserNote": "En el navegador, los rásteres de 8 bits conservan su tipo y todo lo demás (DEM Int16, Float64, …) se escribe como Float32. La aplicación de escritorio conserva el tipo original.",
      "noSidecarConversion": "{{kind}} no tiene conversión mediante sidecar.",
      "minZoom": "Zoom mínimo",
      "maxZoom": "Zoom máximo",
      "convertFailed": "No se pudo convertir este archivo.",
      "notAGeoTiffRasterOnly": "Este archivo no es un GeoTIFF legible. Ráster a PMTiles solo lee GeoTIFF, tanto en la aplicación web como en la de escritorio.",
      "band": "Banda",
      "bandError": "La banda debe ser un número entero positivo.",
      "bandOutOfRange": "La banda {{band}} no existe; este ráster tiene {{bands}} banda(s).",
      "runsInBrowserVectorEngines": "La conversión se ejecuta en su navegador con DuckDB-WASM, o geolibre-wasm para la salida FlatGeobuf.",
      "vectorToVectorDesc": "Convierte entre cualquier formato vectorial que admita la extensión spatial de DuckDB. Los formatos de entrada y salida se detectan a partir de las extensiones de archivo. La aplicación de escritorio escribe cualquier formato (FlatGeobuf, GeoPackage, Shapefile, KML, GML, …); el navegador escribe GeoJSON, CSV, GeoParquet, GeoPackage, FlatGeobuf y Shapefile.",
      "vectorToVectorInputLabel": "Archivo vectorial de entrada",
      "vectorToVectorOutputLabel": "Archivo vectorial de salida",
      "vectorToGeoparquetDesc": "Convierte un conjunto de datos vectorial en un archivo GeoParquet comprimido y ordenado por Hilbert, optimizado para peticiones de rango cloud-native.",
      "vectorToGeoparquetInputLabel": "Archivo vectorial de entrada",
      "vectorToGeoparquetOutputLabel": "Archivo GeoParquet de salida",
      "vectorToFlatgeobufDesc": "Convierte un conjunto de datos vectorial en un FlatGeobuf ordenado por Hilbert con un índice espacial empaquetado para un acceso cloud-native rápido.",
      "vectorToFlatgeobufInputLabel": "Archivo vectorial de entrada",
      "vectorToFlatgeobufOutputLabel": "Archivo FlatGeobuf de salida",
      "vectorToShapefileDesc": "Convierte un conjunto de datos vectorial en un Shapefile de ESRI comprimido en zip (.shp/.shx/.dbf/.prj). Los nombres de campo se truncan a 10 caracteres.",
      "vectorToShapefileInputLabel": "Archivo vectorial de entrada",
      "vectorToShapefileOutputLabel": "Shapefile comprimido de salida",
      "vectorToGeopackageDesc": "Convierte un conjunto de datos vectorial en un GeoPackage (.gpkg) para compartirlo con QGIS, ArcGIS y otras herramientas SIG.",
      "vectorToGeopackageInputLabel": "Archivo vectorial de entrada",
      "vectorToGeopackageOutputLabel": "Archivo GeoPackage de salida",
      "csvToGeoparquetDesc": "Construye geometrías de puntos a partir de columnas de longitud/latitud y escribe un GeoParquet comprimido y ordenado por Hilbert.",
      "csvToGeoparquetInputLabel": "Archivo CSV de entrada",
      "csvToGeoparquetOutputLabel": "Archivo GeoParquet de salida",
      "vectorToPmtilesDesc": "Tesela un conjunto de datos vectorial en un único archivo PMTiles de teselas vectoriales, listo para servirse de forma cloud-native.",
      "vectorToPmtilesInputLabel": "Archivo vectorial de entrada",
      "vectorToPmtilesOutputLabel": "Archivo PMTiles de salida",
      "rasterToPmtilesInputLabel": "Archivo ráster de entrada",
      "rasterToPmtilesOutputLabel": "Archivo PMTiles de salida",
      "rasterToCogDesc": "Convierte un conjunto de datos ráster en un GeoTIFF Cloud Optimized válido y comprimido, con teselado interno y vistas generales.",
      "rasterToCogInputLabel": "Archivo ráster de entrada",
      "rasterToCogOutputLabel": "Archivo COG de salida",
      "outputFileName": "Nombre del archivo de salida",
      "shapefileSidecarHint": "Para los Shapefiles, seleccione el .shp junto con sus archivos .dbf, .shx y .prj.",
      "longitudeColumn": "Columna de longitud",
      "latitudeColumn": "Columna de latitud",
      "compression": "Compresión",
      "rowGroupSize": "Tamaño del grupo de filas",
      "layerName": "Nombre de la capa",
      "noOutput": "Aún no hay salida.",
      "fallbackTitle": "Conversión"
    },
    "vectorTool": {
      "buffer": "Búfer",
      "centroids": "Centroides",
      "convexHull": "Envolvente convexa",
      "dissolve": "Disolver",
      "boundingBox": "Cuadro delimitador",
      "simplify": "Simplificar",
      "clip": "Recortar",
      "intersection": "Intersección",
      "difference": "Diferencia",
      "union": "Unión",
      "spatialJoin": "Unión espacial",
      "attributeJoin": "Unión de atributos",
      "selectByValue": "Seleccionar por valor",
      "selectByLocation": "Seleccionar por ubicación",
      "randomExtract": "Extracción aleatoria",
      "reproject": "Reproyectar",
      "explode": "Explosionar",
      "aggregate": "Agregar por atributo",
      "smooth": "Suavizar",
      "grid": "Cuadrícula regular",
      "voronoi": "Voronoi / Delaunay",
      "cellSectors": "Cobertura de sitios celulares",
      "dggsGenerator": "Generador DGGS",
      "dggsBinning": "Agrupación DGGS",
      "dggsCompact": "Compactación DGGS",
      "trajectorySpeed": "Velocidad de trayectoria",
      "detectStops": "Detectar paradas",
      "spaceTimeProximity": "Proximidad espacio-temporal",
      "checkValidity": "Comprobar validez",
      "fixGeometries": "Corregir geometrías",
      "checkTopologyRules": "Comprobar reglas de topología",
      "fixTopology": "Corregir topología"
    },
    "networkTool": {
      "isochrone": "Isócrona / área de servicio",
      "odMatrix": "Matriz de costos OD",
      "sequentialRoute": "Ruta secuencial (direcciones)"
    },
    "statisticsTool": {
      "globalMoransI": "I de Moran global",
      "localMoransI": "I de Moran local (LISA)",
      "getisOrd": "Puntos calientes Getis-Ord Gi*",
      "averageNearestNeighbor": "Vecino más cercano promedio",
      "kernelDensity": "Densidad de kernel (mapa de calor)",
      "emergingHotSpot": "Puntos calientes emergentes (cubo espacio-temporal)"
    },
    "rasterTool": {
      "hillshade": "Sombreado de relieve",
      "slope": "Pendiente",
      "aspect": "Orientación",
      "reproject": "Reproyectar",
      "resample": "Remuestrear",
      "clipExtent": "Recortar por extensión",
      "clipMask": "Recortar por capa de máscara",
      "polygonize": "Poligonizar",
      "contour": "Curvas de nivel",
      "interpolate": "Interpolación (IDW / Kriging)",
      "zonal": "Estadísticas zonales",
      "rasterCalc": "Calculadora ráster",
      "spectralIndex": "Índice espectral",
      "invalidSpectralIndex": "Índice espectral no válido.",
      "reclassify": "Reclasificar",
      "mosaic": "Mosaico / fusión",
      "focal": "Estadísticas focales",
      "inputRaster": "Ráster de entrada",
      "inputRasterA": "Ráster de entrada A",
      "inputRaster1": "Primer ráster",
      "inputPoints": "Puntos de entrada (GeoJSON)",
      "engine": "Motor",
      "engineClient": "Cliente (navegador)",
      "engineSidecar": "Sidecar (rasterio/GDAL)",
      "clientHint": "Calcula en su navegador y añade el resultado al mapa. Para rásteres grandes o terreno en CRS geográfico, prefiera el sidecar.",
      "switchToClientHint": "O cambie el motor a Cliente para ejecutar esta herramienta en su navegador.",
      "chooseGeoTiff": "Elegir un GeoTIFF",
      "downloadGeoTiff": "Descargar GeoTIFF",
      "chooseInputRaster": "Elija un ráster de entrada.",
      "useAddedLayer": "Usar una capa del mapa",
      "useAddedLayerPlaceholder": "Elegir una capa…",
      "loadingLayer": "Cargando capa…",
      "layerLoadError": "No se pudo cargar la capa seleccionada.",
      "runningInBrowser": "Ejecutando «{{tool}}» en su navegador...",
      "loadedRaster": "Ráster cargado: {{width}}×{{height}}, {{bands}} banda(s).",
      "computedInBrowser": "Se calculó «{{tool}}» en el navegador.",
      "addedToMap": "Se añadió «{{name}}» al mapa.",
      "largeRasterWarning": "Ráster grande ({{mp}} megapíxeles); el navegador puede dejar de responder mientras calcula.",
      "mapAddFailed": "Error al añadir al mapa (el resultado sigue disponible para descargar): {{message}}",
      "mapAddError": "No se pudo añadir el resultado al mapa.",
      "runError": "No se pudo ejecutar la herramienta ráster.",
      "saveError": "No se pudo guardar el resultado.",
      "dialogTitle": "Herramientas ráster",
      "dialogDescription": "Ejecute operaciones ráster comunes en el sidecar de Python (rasterio/GDAL), o en su navegador cuando no haya sidecar disponible.",
      "outputFile": "Archivo de salida",
      "noOutput": "Aún no hay salida.",
      "errorConnect": "No se pudo conectar con el sidecar.",
      "needsDesktopSidecar": "Las herramientas ráster necesitan la aplicación GeoLibre Desktop con un sidecar en ejecución.",
      "errorPoll": "No se pudo consultar el trabajo.",
      "errorStartSidecar": "No se pudo iniciar el sidecar de GeoLibre.",
      "errorStartTool": "No se pudo iniciar la herramienta ráster."
    },
    "mapControl": {
      "navigation": "Navegación",
      "fullscreen": "Pantalla completa",
      "compass": "Brújula",
      "geolocate": "Geolocalizar",
      "globe": "Globo",
      "terrain": "Terreno",
      "scale": "Escala",
      "attribution": "Atribución",
      "logos": "Logotipos",
      "logo": "Logotipo de MapLibre",
      "maptoolkitLogo": "Logotipo de Maptoolkit",
      "maptoolkitLogoHint": "Añade un mapa base de Maptoolkit para mostrar su logotipo."
    },
    "position": {
      "topLeft": "Superior izquierda",
      "topRight": "Superior derecha",
      "bottomLeft": "Inferior izquierda",
      "bottomRight": "Inferior derecha"
    },
    "item": {
      "newEllipsis": "Nuevo...",
      "openFrom": "Abrir desde",
      "fileEllipsis": "Archivo...",
      "urlEllipsis": "URL...",
      "galleryEllipsis": "Galería...",
      "openRecent": "Abrir reciente",
      "projectHistoryEllipsis": "Historial...",
      "noRecentProjects": "No hay proyectos recientes",
      "removeFromRecent": "Quitar {{name}} de proyectos recientes",
      "clearRecentProjects": "Borrar proyectos recientes",
      "duplicate": "Duplicar proyecto",
      "saveAsEllipsis": "Guardar como...",
      "saveAsTemplateEllipsis": "Guardar como plantilla...",
      "shareEllipsis": "Compartir...",
      "shareHostUnavailable": "No disponible: la dirección del servidor para compartir de esta implementación no es válida.",
      "exportHtmlEllipsis": "Exportar como HTML...",
      "htmlFile": "HTML",
      "collaborateEllipsis": "Colaborar...",
      "printEllipsis": "Imprimir...",
      "printLayoutEllipsis": "Diseño de impresión...",
      "offlineBasemapEllipsis": "Mapa base sin conexión...",
      "undo": "Deshacer",
      "redo": "Rehacer",
      "selectByExpressionEllipsis": "Seleccionar por expresión...",
      "selectByLocationEllipsis": "Seleccionar por ubicación...",
      "zoomToSelection": "Acercar a la selección",
      "invertSelection": "Invertir selección",
      "clearSelection": "Borrar selección",
      "exportSelection": "Exportar entidades seleccionadas como capa",
      "previousView": "Vista anterior",
      "nextView": "Vista siguiente",
      "resetOrientation": "Restablecer orientación",
      "resetPitch": "Restablecer inclinación",
      "resetBearing": "Restablecer rumbo",
      "resetPitchBearing": "Restablecer inclinación y rumbo",
      "setView": "Establecer vista…",
      "splitView": "Vista dividida",
      "splitViewSingle": "Mapa único",
      "splitViewTwoColumns": "Dos columnas",
      "splitViewTwoRows": "Dos filas",
      "splitViewGrid2x2": "Cuadrícula 2 × 2",
      "splitViewGrid2x3": "Cuadrícula 2 × 3",
      "splitViewGrid3x3": "Cuadrícula 3 × 3",
      "splitViewSync": "Sincronizar vistas",
      "viewInGoogleMaps": "Ver en Google Maps",
      "viewInGoogleEarth": "Ver en Google Earth",
      "zoomIn": "Acercar",
      "zoomOut": "Alejar",
      "sectionFiles": "Archivos",
      "sectionWebServices": "Servicios web",
      "sectionCloudFormats": "Formatos en la nube",
      "section3dLayers": "Capas 3D",
      "sectionDatabases": "Bases de datos",
      "georeferencing": "Georreferenciación",
      "vectorLayer": "Capa vectorial",
      "cadLayer": "Capa CAD (DXF/DWG)",
      "gdbLayer": "Geodatabase de archivos (GDB)",
      "rasterLayer": "Capa ráster",
      "osmPbfLayer": "Capa OSM PBF",
      "stacLayer": "Capa STAC",
      "geoparquetLayer": "Capa GeoParquet",
      "flatgeobufLayer": "Capa FlatGeobuf",
      "pmtilesLayer": "Capa PMTiles",
      "basemapExtract": "Extracción de mapa base sin conexión",
      "zarrLayer": "Capa Zarr",
      "netcdfHdf": "NetCDF / HDF",
      "lidarLayer": "Capa LiDAR",
      "splattingLayer": "Gaussian Splatting",
      "threeDTilesLayer": "Capa 3D Tiles",
      "duckdbLayer": "Capa DuckDB",
      "whitebox": "Whitebox",
      "geocode": "Geocodificar direcciones",
      "modelBuilder": "Lotes y modelos",
      "processingHistory": "Historial",
      "conversion": "Conversión",
      "vector": "Vectorial",
      "network": "Red",
      "statistics": "Estadísticas espaciales",
      "raster": "Ráster",
      "hydrology": "Hidrología",
      "lidar": "LiDAR",
      "terrain": "Terreno",
      "remoteSensing": "Teledetección",
      "projection": "Proyección",
      "geolibre": "GeoLibre",
      "subGroupGeometry": "Geometría",
      "subGroupOverlay": "Superposición",
      "subGroupJoin": "Unión",
      "subGroupSelect": "Selección",
      "subGroupDggs": "DGGS",
      "subGroupH3": "H3",
      "subGroupMovement": "Movimiento y tiempo",
      "subGroupDataQuality": "Calidad de datos",
      "subGroupTerrain": "Terreno",
      "subGroupReproject": "Reproyectar",
      "subGroupClip": "Recortar",
      "subGroupRasterToVector": "Ráster a vectorial",
      "subGroupVectorToRaster": "Vectorial a ráster",
      "subGroupAnalysis": "Análisis",
      "mapControls": "Controles del mapa",
      "fieldCollection": "Recolección de campo...",
      "gpsTracking": "Seguimiento GPS...",
      "recordTour": "Grabar recorrido del mapa...",
      "recordVideo": "Grabar vídeo...",
      "atmosphereEffects": "Efectos atmosféricos",
      "atmosphereEnabled": "Activado",
      "spinGlobe": "Globo giratorio",
      "graticule": "Cuadrícula",
      "weather": "Clima",
      "weatherTooltip": "Superponga capas meteorológicas casi en tiempo real que puede animar.",
      "weatherPlay": "Reproducir animación",
      "weatherPause": "Pausar animación",
      "clouds": "Nubes",
      "cloudsShow": "Mostrar nubes",
      "cloudsTooltip": "Superpone nubes satelitales de la NASA casi en tiempo real, como Google Earth. Añade una capa que puede animar día a día.",
      "cloudsDate": "Fecha",
      "precipitation": "Precipitación",
      "precipitationShow": "Mostrar precipitación",
      "precipitationTooltip": "Radar meteorológico RainViewer casi en tiempo real. Anime las últimas ~2 horas.",
      "precipitationTime": "Hora",
      "sun": "Sol",
      "sunTooltip": "Simula la posición del sol y el terminador día/noche para cualquier fecha y hora.",
      "routeAnimation": "Animación de ruta",
      "routeAnimationTooltip": "Anima un marcador a lo largo de una capa de líneas, con reproducir/pausar, velocidad, un rastro y seguimiento de cámara.",
      "flightSimulator": "Simulador de vuelo",
      "flightSimulatorTooltip": "Vuela sobre el terreno con los controles del teclado, como un simulador de vuelo.",
      "spinGlobeBoundsTitle": "Los límites están bloqueados",
      "spinGlobeBoundsDesc": "El globo no puede girar mientras los límites del mapa estén bloqueados.",
      "spinGlobeBoundsHint": "Desbloquear los límites permite que el globo gire libremente. Puede volver a bloquearlos en cualquier momento en Configuración.",
      "spinGlobeBoundsUnlock": "Desbloquear límites y girar",
      "directions": "Direcciones",
      "directionsTooltip": "El enrutamiento envía sus waypoints al servidor de demostración público de OSRM (router.project-osrm.org).",
      "search": "Buscar",
      "colorbar": "Barra de color",
      "legend": "Leyenda",
      "html": "HTML",
      "measure": "Medir",
      "bookmark": "Marcador",
      "minimap": "Minimapa",
      "viewState": "Estado de vista",
      "activatePlugin": "Activar complemento",
      "deactivate": "Desactivar",
      "activate": "Activar",
      "position": "Posición",
      "webServices": "Servicios web",
      "dggs": "DGGS",
      "commandPalette": "Paleta de comandos",
      "openProjectFromUrl": "Abrir proyecto desde URL",
      "importQgisProjectEllipsis": "Importar proyecto de QGIS…",
      "importArcgisProjectEllipsis": "Importar proyecto de ArcGIS Pro…",
      "arcgisImportComplete": "Proyecto de ArcGIS Pro importado",
      "arcgisImportWarnings_one": "El proyecto se importó, pero no se pudo cargar {{count}} capa.",
      "arcgisImportWarnings_other": "El proyecto se importó, pero no se pudieron cargar {{count}} capas.",
      "arcgisUnknownLayerType": "desconocido",
      "qgisImportComplete": "Proyecto de QGIS importado",
      "qgisImportWarnings_one": "El proyecto se importó, pero no se pudo cargar {{count}} capa.",
      "qgisImportWarnings_other": "El proyecto se importó, pero no se pudieron cargar {{count}} capas.",
      "qgisUnknownProvider": "desconocido",
      "qgisImportReason": {
        "non-vector": "En esta primera versión solo se admiten capas vectoriales basadas en archivos.",
        "provider": "El proveedor de datos {{provider}} no es compatible.",
        "missing-source": "La capa no tiene una fuente de datos legible.",
        "format": "El formato de archivo de la capa no es compatible.",
        "remote-file": "Todavía no se admiten fuentes de archivos remotos de QGIS.",
        "network-path": "Las rutas de recursos compartidos de red no se cargan por motivos de seguridad.",
        "browser-local-file": "Se hace referencia al archivo local, pero los navegadores no pueden volver a abrir rutas de datos de QGIS. Use GeoLibre Desktop para cargarlo.",
        "browser-local-raster": "Se hace referencia al ráster mediante una ruta local. Use GeoLibre Desktop para cargarlo."
      },
      "openProjectFromUrlDesc": "Carga un proyecto `.geolibre.json` y lo añade a los proyectos recientes.",
      "projectUrl": "URL del proyecto",
      "opening": "Abriendo...",
      "open": "Abrir",
      "somethingWentWrong": "Algo salió mal",
      "dismiss": "Descartar",
      "saveProjectAsTitle": "Guardar proyecto como",
      "saveProjectAsDesc": "Introduzca un nombre de archivo. El proyecto se descargará en la carpeta de descargas de su navegador al hacer clic en Guardar.",
      "embedVectorTitle": "¿Incrustar datos vectoriales locales?",
      "embedVectorDesc": "Este proyecto tiene {{count}} capa(s) vectorial(es) local(es) cargadas desde su equipo. El navegador no puede volver a leerlas cuando se reabre el proyecto, así que sus datos deben incrustarse en el archivo del proyecto para poder restaurarse. Incrustarlas añade aproximadamente {{size}} al archivo.",
      "embedVectorDescDesktop": "Este proyecto tiene {{count}} capa(s) vectorial(es) local(es) cargadas desde su equipo. Incruste sus datos para hacer el proyecto autónomo (añade aproximadamente {{size}}), o guarde referencias de archivo que se recarguen desde el disco al reabrir el proyecto. Las referencias mantienen el archivo pequeño, pero se rompen si el archivo de origen se mueve o elimina más adelante.",
      "embedVectorEmbedButton": "Incrustar datos",
      "embedVectorReferenceButton": "Guardar referencias de archivo",
      "embedVectorSkipButton": "Guardar sin datos",
      "saveProjectFileName": "Nombre de archivo",
      "saveProjectFileNamePlaceholder": "mi-proyecto.geolibre.json",
      "exportHtmlAsTitle": "Exportar como HTML interactivo",
      "exportHtmlAsDesc": "Introduzca un nombre de archivo. La página HTML se descargará en la carpeta de descargas de su navegador al hacer clic en Guardar.",
      "exportHtmlFileName": "Nombre de archivo",
      "exportHtmlFileNamePlaceholder": "mi-mapa.html",
      "vectorDataFilter": "Datos vectoriales",
      "directionsNoticeTitle": "Direcciones usa un servidor de enrutamiento público",
      "directionsNoticeDesc": "Al activar Direcciones se envían los waypoints que coloque al servidor de demostración público de OSRM (router.project-osrm.org) para calcular rutas: sus coordenadas salen de su dispositivo para esas solicitudes. El servidor de demostración tiene límite de solicitudes y solo admite conducción.",
      "reverseGeocode": "Geocodificación inversa",
      "reverseGeocodeTooltip": "Haga clic en el mapa para buscar una dirección. Las coordenadas donde hace clic se envían al proveedor de geocodificación configurado (Nominatim público de forma predeterminada; cámbielo en Configuración → Geocodificación).",
      "reverseGeocodeNoticeTitle": "Geocodificación inversa usa un servicio externo",
      "reverseGeocodeNoticeDesc": "Al activar Geocodificación inversa se envían las coordenadas de cada punto en el que haga clic al proveedor de geocodificación configurado (el servicio público Nominatim de forma predeterminada) para resolver una dirección: sus coordenadas salen de su dispositivo para esas solicitudes. Puede elegir un proveedor diferente en Configuración → Geocodificación.",
      "networkNoticeTitle": "El análisis de red usa un servidor de enrutamiento externo",
      "networkNoticeDesc": "Ejecutar una herramienta de análisis de Red envía las coordenadas de sus puntos de entrada a un servidor de enrutamiento para calcular isócronas, matrices de costos y rutas.",
      "networkNoticePrivacyHeading": "Privacidad de datos",
      "networkNoticePrivacy": "Sus coordenadas de entrada salen de este dispositivo y se envían al servidor público de Valhalla en valhalla1.openstreetmap.de. Pulse Cancelar si su proyecto está sujeto a normas de privacidad de datos o soberanía de datos.",
      "networkNoticePrivacyCustom": "Sus coordenadas de entrada salen de este dispositivo y se envían al servidor de enrutamiento configurado ({{endpoint}}). Pulse Cancelar si su proyecto está sujeto a normas de privacidad de datos o soberanía de datos.",
      "networkNoticePerformanceHeading": "Rendimiento y límites",
      "networkNoticePerformance": "El servidor público es gratuito pero tiene límite de solicitudes, así que los lotes grandes de puntos pueden limitarse o fallar. Para uso intensivo, ejecute su propio servidor Valhalla e introduzca su URL en el campo «Servidor de enrutamiento (Valhalla)» de la herramienta (o establezca VITE_ROUTING_ENDPOINT en Configuración → Variables de entorno para que sea el predeterminado).",
      "continue": "Continuar",
      "largeOsmPbfTitle": "Archivo OSM PBF grande",
      "largeOsmPbfDesc": "Este archivo tiene aproximadamente {{sizeMb}} MB. Analizarlo convierte cada entidad a GeoJSON en memoria, lo que puede ser lento y usar mucha memoria en el navegador. ¿Continuar?",
      "largeVectorDesc": "{{name}} tiene aproximadamente {{count}} entidades. Cargarlo convierte cada entidad a GeoJSON en memoria y puede ralentizar o bloquear la aplicación. ¿Continuar?",
      "addOsmPbfLayerTitle": "Añadir capa OSM PBF",
      "addOsmPbfLayerDesc": "Carga un archivo .osm.pbf de OpenStreetMap. Se analiza en su navegador y se divide en capas separadas de puntos, líneas y polígonos.",
      "urlLabel": "URL",
      "osmPbfUrlPlaceholder": "https://example.com/region.osm.pbf",
      "osmPbfSampleLabel": "Las Vegas",
      "osmPbfUrlHint": "Las URL remotas se cargan en la aplicación de escritorio; en el navegador, el servidor debe permitir solicitudes entre orígenes (CORS).",
      "chooseLocalFile": "Elegir archivo local…",
      "loadFromUrl": "Cargar desde URL",
      "loadingOsmPbf": "Cargando OSM PBF…",
      "loadingOsmPbfDesc": "Analizando el archivo y convirtiendo entidades a GeoJSON. Esto se ejecuta en segundo plano y puede tardar un momento en extractos grandes.",
      "loadingOsmPbfProgress": "Convirtiendo entidades a GeoJSON… {{processed}} de {{total}} entidades OSM procesadas.",
      "projectName": "Nombre del proyecto",
      "storymapEllipsis": "Mapa narrativo...",
      "arcgisImportReason": {
        "layer-type": "El tipo de capa {{layerType}} no es compatible.",
        "missing-source": "La capa no tiene una fuente de datos local legible.",
        "format": "El formato de datos de la capa no es compatible.",
        "network-path": "Las rutas de recursos compartidos de red no se cargan por motivos de seguridad.",
        "service": "Las capas de servicio de ArcGIS incluidas en proyectos aún no son compatibles.",
        "browser-local-file": "Se hace referencia al archivo local, pero los navegadores no pueden volver a abrir rutas de datos de ArcGIS Pro. Use GeoLibre Desktop para cargarlo.",
        "map-extent": "La extensión de mapa guardada usa un sistema de coordenadas que GeoLibre no puede convertir, así que el mapa se abrió en una vista predeterminada.",
        "nesting": "El grupo está anidado a demasiada profundidad, o el proyecto remite a un grupo que ya lo contiene."
      }
    },
    "plugin": {
      "maplibre-gl-annotations": "Anotaciones",
      "maplibre-gl-streetview": "Vista de calle",
      "maplibre-gl-time-slider": "Control de tiempo",
      "geolibre-timelapse": "Timelapse",
      "maplibre-gl-esri-wayback": "Imágenes históricas",
      "maplibre-gl-openaerialmap": "OpenAerialMap",
      "maplibre-gl-arcgis-hub": "ArcGIS Hub",
      "geolibre-stac-catalogs": "Catálogos STAC",
      "maplibre-gl-source-coop": "Source Cooperative",
      "maplibre-gl-natural-earth": "Natural Earth",
      "maplibre-gl-swipe": "Comparador de capas",
      "geolibre-elevation-profile": "Perfil de elevación",
      "maplibre-gl-basemap-control": "Mapas base",
      "maplibre-layer-control": "Control de capas",
      "maplibre-gl-huggingface": "Hugging Face",
      "carto-light": "Mapa base Carto Light",
      "geolibre-flight-simulator": "Simulador de vuelo",
      "geolibre-route-animation": "Animación de ruta",
      "geolibre-sun": "Simulación solar",
      "maplibre-atmosphere-effects": "Efectos atmosféricos",
      "maplibre-deckgl-viz": "Capa Deck.gl",
      "maplibre-gl-clouds": "Nubes",
      "maplibre-gl-components": "Componentes",
      "maplibre-gl-directions": "Direcciones",
      "maplibre-gl-earthdata-gis": "Earthdata GIS",
      "maplibre-gl-enviroatlas": "US EPA EnviroAtlas",
      "maplibre-gl-fema-wms": "FEMA NFHL",
      "maplibre-gl-geo-editor": "GeoEditor",
      "maplibre-gl-geoagent": "GeoAgent",
      "maplibre-gl-geolens": "GeoLens",
      "maplibre-gl-graticule": "Cuadrícula",
      "maplibre-gl-mapillary": "Mapillary",
      "maplibre-gl-nasa-earthdata": "NASA Earthdata",
      "maplibre-gl-national-map": "USGS National Map",
      "maplibre-gl-overture-maps": "Overture Maps",
      "maplibre-gl-precipitation": "Precipitación",
      "maplibre-gl-usgs-lidar": "USGS LiDAR",
      "maplibre-h3-grid": "Cuadrícula H3",
      "maplibre-s2-grid": "S2",
      "maplibre-a5-grid": "A5",
      "maplibre-dggrid": "DGGRID",
      "maplibre-dggal": "DGGAL",
      "maplibre-olc": "OLC",
      "maplibre-geohash": "Geohash",
      "maplibre-tilecode": "Tilecode",
      "maplibre-reverse-geocode": "Geocodificación inversa",
      "osm-basemap": "Mapa base de OpenStreetMap"
    },
    "fileDrop": {
      "overlayTitle": "Suelte archivos vectoriales o ráster aquí para añadir capas",
      "overlaySubtext": "Sus datos se añaden instantáneamente al panel de capas.",
      "addedLayer": "Se añadió «{{name}}» al panel de capas.",
      "addedVectorLayers_one": "Se añadió {{count}} capa vectorial al panel de capas.",
      "addedVectorLayers_other": "Se añadieron {{count}} capas vectoriales al panel de capas.",
      "addedRasterLayers_one": "Se añadió {{count}} capa ráster al panel de capas.",
      "addedRasterLayers_other": "Se añadieron {{count}} capas ráster al panel de capas.",
      "addedBoth": "Se añadieron {{vector}} y {{raster}} al panel de capas.",
      "bothVectorLayers_one": "{{count}} capa vectorial",
      "bothVectorLayers_other": "{{count}} capas vectoriales",
      "bothRasterLayers_one": "{{count}} capa ráster",
      "bothRasterLayers_other": "{{count}} capas ráster"
    },
    "error": {
      "couldNotOpenProject": "No se pudo abrir el proyecto.",
      "couldNotImportQgisProject": "No se pudo importar el proyecto de QGIS.",
      "couldNotImportArcgisProject": "No se pudo importar el proyecto de ArcGIS Pro.",
      "invalidProjectUrl": "Introduzca una URL de proyecto HTTP o HTTPS válida.",
      "couldNotOpenProjectUrl": "No se pudo abrir la URL del proyecto.",
      "couldNotOpenRecentProject": "No se pudo abrir el proyecto reciente.",
      "couldNotLoadRecentProject": "No se pudo cargar el proyecto reciente.",
      "couldNotSaveProject": "No se pudo guardar el proyecto.",
      "couldNotExportHtml": "No se pudo exportar el proyecto a HTML.",
      "osmPbfNoFeatures": "No se encontraron entidades de puntos, líneas o polígonos en este archivo OSM PBF.",
      "couldNotLoadOsmPbf": "No se pudo cargar el archivo OSM PBF.",
      "osmPbfLoadFailedWithHint": "{{message}} Si se trata de un Mapbox Vector Tile (.pbf), no se puede cargar como extracto OSM.",
      "osmPbfTooLarge": "Este extracto OSM es demasiado grande para cargarse y se quedó sin memoria o tiempo. Pruebe con una región más pequeña, o filtre previamente el archivo (por ejemplo, con osmium-tool o QGIS) antes de cargarlo.",
      "couldNotOpenOsmPbf": "No se pudo abrir el archivo OSM PBF.",
      "invalidOsmPbfUrl": "Introduzca una URL http(s) válida a un archivo .osm.pbf.",
      "couldNotDownloadOsmPbf": "No se pudo descargar el archivo OSM PBF.",
      "scenegraphModelUrlRequired": "Introduzca una URL de modelo glTF/GLB.",
      "scenegraphInvalidLngLat": "Introduzca una longitud y latitud válidas.",
      "scenegraphOutOfRange": "La longitud debe estar entre -180 y 180, y la latitud entre -90 y 90.",
      "scenegraphNoPointFeatures": "El GeoJSON no tiene entidades de puntos donde colocar modelos."
    },
    "scenegraph": {
      "modelUrl": "URL de modelo glTF / GLB",
      "placement": "Colocación",
      "placementSingle": "Ubicación única",
      "placementData": "Desde datos de puntos",
      "longitude": "Longitud",
      "latitude": "Latitud",
      "scale": "Escala",
      "bearing": "Rumbo°",
      "altitude": "Altitud m"
    },
    "sqlWorkspace": {
      "description": {
        "postgis": "Ejecute SQL de PostGIS sobre las capas cargadas. La extensión PostGIS está cargada, así que las funciones ST_* están disponibles. La primera ejecución carga un motor de base de datos de ~19 MB.",
        "duckdb": "Ejecute SQL de DuckDB sobre capas, archivos y URL cargados. La extensión spatial está cargada, así que las funciones ST_* están disponibles. Se admiten URL en la nube (s3://, gs://, az://) para datos públicos.",
        "sedona": "Ejecute SQL espacial de Apache Sedona sobre las capas cargadas. Se ejecuta en el navegador mediante CereusDB (una compilación WebAssembly de SedonaDB); en el escritorio usa el sidecar de SedonaDB cuando el extra opcional sedona está instalado. Las funciones ST_* están disponibles."
      },
      "title": "Espacio de trabajo SQL",
      "engine": "Motor SQL",
      "resize": "Cambiar el tamaño del espacio de trabajo SQL",
      "resizeEditor": "Cambiar el tamaño de los paneles de editor y resultados",
      "collapse": "Contraer el espacio de trabajo SQL",
      "expand": "Expandir el espacio de trabajo SQL",
      "close": "Cerrar el espacio de trabajo SQL",
      "run": "Ejecutar",
      "runHint": "Ejecutar (Ctrl/Cmd+Intro)",
      "clear": "Borrar",
      "completions": "Autocompletados",
      "placeholder": "SQL aquí · Ctrl/Cmd+Intro para ejecutar · Tab o Ctrl+Espacio para autocompletar",
      "resultsPlaceholder": "Ejecute una consulta para ver los resultados aquí.",
      "queryableHint": "Capas consultables: {{names}}",
      "queryableLayers": "Capas consultables:",
      "queryLabel": "Consulta SQL",
      "engineOption": "Motor: {{name}}",
      "sampleQueries": "Consultas de ejemplo…",
      "sampleQueriesLabel": "Insertar una consulta de ejemplo",
      "history": "Historial…",
      "historyLabel": "Reutilizar una consulta del historial",
      "sampleForLayer": "Consulta de ejemplo para la capa…",
      "sampleForLayerLabel": "Insertar una consulta de ejemplo para una capa",
      "noLayersEngine": "Aún no hay capas vectoriales cargadas como tablas. Cargue una capa vectorial para consultarla con {{engine}}.",
      "noLayersReaders": "Aún no hay capas vectoriales cargadas como tablas. Aún puede leer archivos y URL con read_parquet(), read_csv_auto() o ST_Read().",
      "layerName": "Nombre de la capa",
      "layerNamePlaceholder": "Nombre de la capa (opcional)",
      "addAsLayer": "Añadir como capa",
      "exportCsv": "Exportar CSV",
      "exportGeoParquet": "Exportar GeoParquet",
      "addedAsLayer_one": "Se añadió {{count}} entidad al mapa como «{{name}}».",
      "addedAsLayer_other": "Se añadieron {{count}} entidades al mapa como «{{name}}».",
      "addAsQueryLayer": "Añadir como capa de consulta",
      "addAsQueryLayerHint": "Añadir el resultado como una capa dinámica que vuelve a ejecutar esta consulta SQL al actualizarse",
      "addedAsQueryLayer_one": "Se añadió {{count}} entidad al mapa como capa de consulta «{{name}}». Actualícela desde el panel de Capas para volver a ejecutar la consulta SQL.",
      "addedAsQueryLayer_other": "Se añadieron {{count}} entidades al mapa como capa de consulta «{{name}}». Actualícela desde el panel de Capas para volver a ejecutar la consulta SQL.",
      "savedAs": "Se guardó {{label}} como {{name}}.",
      "noRows": "Sentencia ejecutada. No se devolvieron filas.",
      "showingRows": "Mostrando las primeras {{shown}} de {{total}} filas. Exporte para verlas todas.",
      "rowsCount_one": "{{count}} fila",
      "rowsCount_other": "{{count}} filas",
      "columnsCount_one": "{{count}} columna",
      "columnsCount_other": "{{count}} columnas",
      "samples": {
        "countriesGeom": "Países con geometría",
        "attributesOnly": "Solo atributos (sin geometría)",
        "populationByContinent": "Población por continente (agregado)",
        "mostPopulous": "Países más poblados (geometría)",
        "countryCentroids": "Centroides de países (espacial)",
        "largestByArea": "Países más grandes por área (espacial)",
        "postgisVersion": "Versión de PostGIS",
        "makePoint": "Crear un punto (geometría)",
        "firstRows": "Primeras filas de una capa",
        "featureCount": "Número de entidades",
        "layerCentroids": "Centroides de una capa (espacial)",
        "bufferFeatures": "Búfer de entidades en 0.01 grados (espacial)",
        "boundingBox": "Cuadro delimitador de una capa (espacial)",
        "bufferPoint": "Búfer de un punto (espacial)",
        "areaPerFeature": "Área de cada entidad (espacial)"
      }
    }
  },
  "selection": {
    "byExpressionTitle": "Seleccionar por expresión",
    "byExpressionDescription": "Selecciona las entidades cuyos atributos coinciden con una expresión booleana. Las coincidencias se convierten en la selección activa, resaltada en el mapa y en la tabla de atributos.",
    "byLocationTitle": "Seleccionar por ubicación",
    "byLocationDescription": "Selecciona entidades según su relación espacial con las entidades de otra capa.",
    "targetLayer": "Seleccionar entidades de",
    "referenceLayer": "Comparándolas con las entidades de",
    "predicate": "Donde la entidad",
    "predicateIntersects": "Interseca",
    "predicateWithin": "Está dentro de",
    "predicateContains": "Contiene",
    "predicateDisjoint": "Es disjunta (sin intersección)",
    "mode": "Modificar la selección actual mediante",
    "modeNew": "Crear una nueva selección",
    "modeAdd": "Añadir a la selección actual",
    "modeRemove": "Quitar de la selección actual",
    "modeIntersect": "Seleccionar dentro de la selección actual",
    "expression": "Expresión",
    "expressionPlaceholder": "[\">=\", [\"get\", \"population\"], 100000]",
    "expressionTarget": "Filtro de selección",
    "openBuilder": "Generador de expresiones...",
    "invalidExpression": "Introduzca una expresión booleana válida.",
    "select": "Seleccionar entidades",
    "noLayers": "Añada una capa vectorial con entidades para hacer una selección.",
    "needTwoLayers": "Seleccionar por ubicación requiere dos capas vectoriales con entidades.",
    "summary": "{{selected}} de {{total}} entidad(es) seleccionada(s) ({{matched}} coincidencias).",
    "evaluationErrors": "No se pudieron evaluar {{count}} entidad(es), por lo que no coincidieron.",
    "unevaluableDisjoint": "Se excluyeron {{count}} entidad(es) porque no se pudo evaluar su geometría.",
    "tooManyPairs": "Esta comparación requiere {{pairs}} pruebas de pares de entidades (límite {{limit}}). En su lugar, use Procesamiento → GeoLibre → Vectorial → Seleccionar por ubicación con el motor Sidecar.",
    "exportedLayerName": "{{name}} (selección)"
  },
  "loadEditorFeatures": {
    "menuItem": "Cargar entidades en el editor…",
    "title": "Cargar entidades en el editor",
    "collapse": "Contraer panel",
    "expand": "Expandir panel",
    "description": "Carga las entidades vectoriales visibles en la vista actual del mapa en GeoEditor para editarlas, y luego guarda todas las entidades o solo sus cambios como GeoJSON.",
    "vectorLayer": "Capa vectorial",
    "selectPlaceholder": "Seleccionar una capa…",
    "refresh": "Actualizar lista de capas",
    "noLayers": "No hay capas vectoriales en la vista actual. Añada una capa vectorial o desplácese a un área de mapa base con entidades vectoriales y luego actualice.",
    "editSessionActive": "Termine la edición de geometría en el lugar (panel Capas → Finalizar edición de geometría) antes de cargar o guardar entidades aquí.",
    "editorName": "Nombre del editor",
    "editorNamePlaceholder": "Su nombre (opcional)",
    "loadFeatures": "Cargar entidades",
    "loading": "Cargando entidades…",
    "selectLayer": "Seleccione primero una capa.",
    "noneInView": "No se encontraron entidades en la vista actual para esta capa.",
    "editorUnavailable": "No se pudo activar GeoEditor. Inténtelo de nuevo cuando el mapa haya terminado de cargar.",
    "noEditable": "No se encontraron entidades editables en la vista actual para esta capa.",
    "loaded": "Se cargaron {{count}} entidad(es) de «{{layer}}».",
    "appended": "Se añadieron {{count}} entidad(es) de «{{layer}}».",
    "loadedWithDropped": "{{message}} (se omitieron {{dropped}} no válidas)",
    "loadFailed": "Error al cargar las entidades en el editor.",
    "confirmExisting": "El editor ya contiene {{count}} entidad(es). ¿Añadirlas a las existentes, o descartar y reemplazar?",
    "tooMany": "Cargar {{count}} entidades puede hacer que el editor responda lentamente. ¿Cargarlas de todos modos?",
    "loadAnyway": "Cargar de todos modos",
    "append": "Añadir",
    "appendHint": "Añade las nuevas entidades junto a las existentes.",
    "discard": "Descartar y reemplazar",
    "discardHint": "Elimina las entidades existentes y carga las nuevas.",
    "noChanges": "Aún no hay cambios que guardar.",
    "nothingToSave": "No hay entidades que guardar.",
    "saved": "Se guardaron {{count}} entidad(es).",
    "savedChanges": "Cambios guardados: {{added}} añadidas, {{modified}} modificadas, {{deleted}} eliminadas.",
    "saveFailed": "Error al guardar las entidades.",
    "saveChanges": "Guardar cambios",
    "saveChangesHint": "Guarda solo las entidades que añadió, editó o eliminó.",
    "saveAll": "Guardar todo"
  },
  "geocode": {
    "title": "Geocodificar direcciones",
    "description": "Geocodifica un CSV de direcciones en una capa de puntos. Cada fila coincidente se convierte en un punto que lleva las columnas originales más las coordenadas resueltas y la puntuación de coincidencia.",
    "chooseFile": "Elegir archivo CSV",
    "noFile": "Ningún archivo CSV seleccionado.",
    "fileLoaded": "{{name}} ({{count}} filas)",
    "provider": "Proveedor de geocodificación",
    "providerHint": "Las claves de API y los puntos de conexión se administran en Configuración.",
    "apiKeyRequired": "{{provider}} necesita una clave de API. Añada una en Configuración para obtener resultados.",
    "corsNote": "Google no permite oficialmente las solicitudes del navegador a su API de geocodificación; las solicitudes pueden bloquearse a menos que se sirvan a través de un proxy del mismo origen.",
    "addressColumn": "Columna de dirección",
    "run": "Iniciar geocodificación",
    "cancel": "Cancelar",
    "outputPlaceholder": "El progreso aparecerá aquí.",
    "usingEndpoint": "Usando {{endpoint}}",
    "usingProvider": "Usando {{provider}} ({{endpoint}})",
    "rowCapWarning": "Solo se geocodificarán las primeras {{cap}} filas para respetar la política de uso público de Nominatim. Configure un punto de conexión autoalojado para lotes más grandes.",
    "skippedEmpty": "Se omitieron {{count}} fila(s) con dirección vacía.",
    "progress": "Geocodificando fila {{current}} de {{total}}: {{address}}",
    "summary": "Se geocodificaron {{matched}} de {{total}} fila(s); {{failed}} no tuvieron coincidencia.",
    "failedRows": "Filas sin coincidencia: {{rows}}",
    "noMatches": "No se pudo geocodificar ninguna fila.",
    "cancelledNoRows": "Cancelado antes de geocodificar ninguna fila.",
    "cancelled": "Cancelado. Se añadieron {{matched}} fila(s) coincidente(s).",
    "error": "Error: {{message}}",
    "reverseLookingUp": "Buscando dirección...",
    "reverseNoAddress": "No se encontró ninguna dirección.",
    "reverseCopyAddress": "Copiar dirección",
    "reverseFailed": "Error en la geocodificación inversa."
  },
  "graticule": {
    "title": "Cuadrícula",
    "controlTitle": "Configuración de la cuadrícula",
    "gridType": "Tipo de cuadrícula",
    "typeGeographic": "Geográfica (lat/long)",
    "typeUtm": "UTM (este/norte)",
    "spacing": "Espaciado",
    "spacingAuto": "Automático (según zoom)",
    "spacingFixed": "Intervalo fijo",
    "interval": "Intervalo (°)",
    "intervalMeters": "Intervalo (m)",
    "lineColor": "Color de línea",
    "lineWidth": "Ancho de línea",
    "lineOpacity": "Opacidad de línea",
    "dashedLines": "Líneas discontinuas",
    "showLabels": "Mostrar etiquetas",
    "labelFormat": "Formato de etiqueta",
    "formatDecimal": "Grados decimales",
    "formatDms": "Grados/min/seg",
    "labelEdges": "Etiquetar bordes",
    "edgesLeftBottom": "Izquierda + abajo",
    "edgesAll": "Todos los lados",
    "labelColor": "Color de etiqueta",
    "labelSize": "Tamaño de etiqueta"
  },
  "h3Plugin": {
    "title": "Cuadrícula H3",
    "controlTitle": "Configuración de la cuadrícula H3",
    "autoResolution": "Resolución automática",
    "resolution": "Resolución",
    "cellCount": "Celdas en la vista: {{count}}",
    "tooManyCells": "Esta vista supera el límite de {{limit}} celdas. Acerque el zoom o reduzca la resolución.",
    "fillColor": "Color de relleno",
    "fillOpacity": "Opacidad de relleno",
    "lineColor": "Color de contorno",
    "lineWidth": "Ancho del contorno",
    "showLabels": "Mostrar los id de celda",
    "identifyHint": "Haga clic en el mapa para identificar una celda H3.",
    "selectedCell": "Celda seleccionada",
    "noSelection": "Ninguna celda seleccionada",
    "copyId": "Copiar id",
    "copied": "Copiado",
    "parent": "Celda padre",
    "children": "Celdas hijas",
    "neighbors": "Vecinas",
    "baseCell": "Celda base",
    "center": "Centro",
    "pentagon": "Pentágono",
    "yes": "Sí",
    "no": "No",
    "zoomToCell": "Ajustar zoom a la celda",
    "addAsLayer": "Añadir la cuadrícula como capa",
    "exportGeoJson": "Exportar GeoJSON",
    "exportCsv": "Exportar CSV",
    "includeNeighbors": "Incluir las vecinas de la celda seleccionada",
    "includeParents": "Incluir las celdas padre de la celda seleccionada",
    "showIcosahedron": "Mostrar el icosaedro"
  },
  "timelapse": {
    "title": "Timelapse",
    "provider": "Fuente de imágenes",
    "legend": "Leyenda",
    "yearSlider": "Año del timelapse",
    "play": "Reproducir",
    "pause": "Pausar",
    "speed": "Velocidad",
    "secondsPerYear": "Segundos por año",
    "secondsPerYearSuffix": "s/año",
    "loop": "Bucle",
    "record": "Grabar vídeo",
    "stopRecording": "Detener grabación",
    "recording": "Grabando",
    "recordingFailed": "Error al grabar.",
    "recordingUnsupported": "Este navegador no admite la grabación del lienzo.",
    "loadingTiles": "Cargando teselas…"
  },
  "mapillary": {
    "title": "Mapillary",
    "hint": "Haga clic en un punto de cobertura del mapa para ver imágenes a nivel de calle.",
    "noToken": "Se necesita un token de acceso de Mapillary para cargar la cobertura y las imágenes. Pegue uno a continuación para empezar.",
    "tokenPlaceholder": "MLY|…",
    "tokenSave": "Guardar token",
    "tokenHelp": "Obtener un token",
    "tokenLabel": "Token de acceso de Mapillary",
    "loading": "Cargando imágenes…",
    "loadError": "No se pudo cargar esta imagen.",
    "coverageLines": "Secuencias de Mapillary",
    "coveragePoints": "Imágenes de Mapillary"
  },
  "openAerialMap": {
    "hint": "Busque imágenes de OpenAerialMap por vista del mapa, un cuadro dibujado o coordenadas.",
    "search": "Buscar en esta vista",
    "loadMore": "Cargar más",
    "searching": "Buscando…",
    "loadingMore": "Cargando más…",
    "noResults": "No se encontraron imágenes en esta área.",
    "showing": "Mostrando {{shown}} de {{total}} imágenes.",
    "searchError": "No se pudo conectar con OpenAerialMap: {{message}}. Inténtelo de nuevo.",
    "add": "Añadir",
    "remove": "Quitar",
    "zoom": "Zoom",
    "download": "Descargar",
    "metadata": "Metadatos",
    "addTitle": "Añadir esta imagen al mapa",
    "removeTitle": "Quitar esta imagen del mapa",
    "addUnavailableTitle": "No hay servicio de teselas disponible para esta imagen",
    "zoomTitle": "Acercar a esta imagen",
    "downloadTitle": "Descargar el GeoTIFF de origen",
    "metadataTitle": "Ver los metadatos de esta imagen",
    "modeView": "Vista del mapa",
    "modeDraw": "Dibujar cuadro",
    "modeBbox": "Coordenadas",
    "drawHint": "Haga clic y arrastre en el mapa para dibujar un cuadro de búsqueda.",
    "drawStart": "Dibujar cuadro en el mapa",
    "drawCancel": "Cancelar dibujo",
    "drawnBox": "Cuadro de búsqueda: {{box}}",
    "coordWest": "Oeste",
    "coordSouth": "Sur",
    "coordEast": "Este",
    "coordNorth": "Norte",
    "coordSearch": "Buscar en este cuadro",
    "bboxInvalid": "Introduzca cuatro coordenadas válidas con oeste < este y sur < norte.",
    "footprintsLayer": "Huellas de OpenAerialMap",
    "footprintUnavailable": "No hay servicio de teselas disponible para esta imagen.",
    "metadataHeading": "Metadatos de la imagen",
    "close": "Cerrar",
    "metaTitle": "Título",
    "metaProvider": "Proveedor",
    "metaPlatform": "Plataforma",
    "metaResolution": "Resolución",
    "metaAcquired": "Adquirida",
    "metaBounds": "Límites (O, S, E, N)",
    "metaSource": "GeoTIFF de origen",
    "metaRaw": "Metadatos sin procesar"
  },
  "arcgisHub": {
    "hint": "Busque conjuntos de datos públicos de ArcGIS Hub. Añada al mapa las capas compatibles o descargue los datos.",
    "searchPlaceholder": "Buscar conjuntos de datos de ArcGIS Hub",
    "search": "Buscar",
    "searchCurrentView": "Buscar en el área actual del mapa",
    "enterKeyword": "Introduzca una palabra clave para empezar.",
    "loadMore": "Cargar más",
    "searching": "Buscando…",
    "loadingMore": "Cargando más conjuntos de datos…",
    "noResults": "No se encontraron conjuntos de datos públicos.",
    "searchError": "No se pudo buscar en ArcGIS Hub.",
    "showing": "Mostrando {{shown}} de {{total}} conjuntos de datos.",
    "noDescription": "No se proporcionó ninguna descripción.",
    "add": "Añadir al mapa",
    "adding": "Añadiendo {{title}}…",
    "added": "Se añadió {{title}}.",
    "addError": "No se pudo añadir este conjunto de datos.",
    "zoom": "Zoom",
    "download": "Descargar",
    "preparing": "Preparando {{title}}…",
    "downloading": "Descargando {{title}}: {{completed}} de {{total}} entidades…",
    "downloadStarted": "Descarga iniciada para {{title}}.",
    "downloadFirstLayer": "{{title}} tiene {{layerCount}} capas; solo se descargó la primera.",
    "downloadError": "No se pudo descargar este conjunto de datos.",
    "details": "Detalles"
  },
  "openDataCatalogs": {
    "socrataHint": "Busque en catálogos públicos de datos abiertos Socrata y añada conjuntos de datos GeoJSON.",
    "ckanHint": "Busque en el catálogo CKAN del Humanitarian Data Exchange y añada los recursos GeoJSON disponibles.",
    "searchPlaceholder": "Buscar en {{name}}",
    "search": "Buscar",
    "enterKeyword": "Introduzca una palabra clave para empezar.",
    "loadMore": "Cargar más",
    "searching": "Buscando…",
    "noResults": "No se encontraron conjuntos de datos.",
    "showing": "Mostrando {{shown}} de {{total}} conjuntos de datos.",
    "noDescription": "No se proporcionó ninguna descripción.",
    "add": "Añadir al mapa",
    "details": "Detalles",
    "adding": "Añadiendo {{title}}…",
    "added": "Se añadió {{title}}.",
    "addError": "No se pudo añadir el conjunto de datos.",
    "searchError": "La búsqueda falló."
  },
  "earthdataGis": {
    "hint": "Busque en NASA Earthdata GIS servicios de imágenes, de mapas y de entidades.",
    "searchPlaceholder": "Buscar en Earthdata GIS…",
    "search": "Buscar",
    "searching": "Buscando…",
    "loadingMore": "Cargando más…",
    "loadMore": "Cargar más",
    "noResults": "Ningún servicio coincide con esta búsqueda.",
    "showing": "Servicios mostrados: {{shown}} de {{total}}.",
    "searchError": "No se pudo conectar con Earthdata GIS: {{message}}. Inténtelo de nuevo.",
    "limitToView": "Limitar a la vista del mapa",
    "limitToViewTitle": "Devolver solo los servicios que intersecan la vista actual del mapa",
    "filterAll": "Todos",
    "filterImage": "Imágenes",
    "filterMap": "Mapas",
    "filterFeature": "Entidades",
    "kindImage": "Servicio de imágenes",
    "kindMap": "Servicio de mapas",
    "kindFeature": "Servicio de entidades",
    "kindWebMap": "Mapa web",
    "filterWebMap": "Mapas web",
    "webMapAdded_one": "Se añadió {{count}} capa de este mapa web.",
    "webMapAdded_other": "Se añadieron {{count}} capas de este mapa web.",
    "webMapAddedPartial": "Capas añadidas: {{added}} de {{total}} de este mapa web; no se pudo acceder al resto.",
    "webMapEmpty": "este mapa web no tiene capas que GeoLibre pueda renderizar.",
    "add": "Añadir",
    "adding": "Añadiendo…",
    "remove": "Quitar",
    "zoom": "Zoom",
    "details": "Detalles",
    "portal": "Portal",
    "portalTitle": "Abrir este elemento en el portal de Earthdata GIS",
    "cog": "COG",
    "cogTitle": "Descargar este servicio como Cloud Optimized GeoTIFF",
    "cogHeading": "Descargar como COG",
    "cogAreaView": "Vista actual",
    "cogAreaExtent": "Extensión completa",
    "cogSize": "Tamaño de exportación: {{width}} x {{height}} px",
    "cogResolution": "Resolución en el terreno: {{metres}} m/px",
    "cogNote": "El servicio se vuelve a exportar con este tamaño y se recodifica como COG, por lo que se trata de una vista remuestreada del área, no del ráster de origen a su resolución nativa.",
    "cogDownload": "Descargar",
    "cogDownloading": "Exportando y convirtiendo…",
    "cogRetrying": "El servicio rechazó ese tamaño; reintentando con {{width}} x {{height}} px…",
    "cogConverting": "Convirtiendo a COG…",
    "cogDone": "COG guardado con {{width}} x {{height}} px.",
    "cogFailed": "No se pudo descargar el COG: {{message}}",
    "cogUnavailable": "La descarga requiere la aplicación de escritorio o un cuadro de diálogo de guardado del navegador.",
    "cancel": "Cancelar",
    "addTitle": "Añadir este servicio al mapa",
    "removeTitle": "Quitar este servicio del mapa",
    "zoomTitle": "Ajustar zoom a este servicio",
    "zoomUnavailableTitle": "Este servicio no publica una extensión",
    "detailsTitle": "Ver los metadatos de este servicio",
    "addError": "No se pudo añadir el servicio: {{message}}",
    "addTimeout": "no respondió en un minuto. La capa aparecerá igualmente si termina.",
    "zoomedToData": "Zoom más allá de la extensión completa de esta capa: el servicio solo se renderiza en niveles de zoom mayores.",
    "detailsHeading": "Detalles del servicio",
    "close": "Cerrar",
    "metaTitle": "Título",
    "metaType": "Tipo",
    "metaSummary": "Resumen",
    "metaDescription": "Descripción",
    "metaOwner": "Publicado por",
    "metaModified": "Última modificación",
    "metaTags": "Etiquetas",
    "metaExtent": "Extensión (O, S, E, N)",
    "metaCredits": "Créditos",
    "metaLicense": "Condiciones de uso",
    "metaService": "URL del servicio",
    "metaPortalItem": "Elemento del portal",
    "metaRaw": "Metadatos sin procesar"
  },
  "sourceCoop": {
    "hint": "Busque datos geoespaciales abiertos en Source Cooperative, o introduzca un id de cuenta/producto.",
    "searchPlaceholder": "Buscar datos, o cuenta/producto",
    "search": "Buscar",
    "searching": "Buscando…",
    "loading": "Cargando catálogo…",
    "loadError": "No se pudo conectar con Source Cooperative: {{message}}. Inténtelo de nuevo.",
    "noResults": "No hay productos coincidentes.",
    "retry": "Reintentar",
    "featured": "Destacados",
    "showing": "Mostrando {{shown}} de {{total}} productos.",
    "browseAccount": "Explorar todos los productos de {{account}}",
    "back": "Atrás",
    "files": "Archivos",
    "noFiles": "No hay archivos en esta carpeta.",
    "loadingFiles": "Cargando archivos…",
    "loadMore": "Cargar más",
    "parent": "Subir un nivel",
    "add": "Añadir",
    "adding": "Añadiendo…",
    "added": "Añadido",
    "stream": "Transmitir",
    "streaming": "Transmitiendo",
    "remove": "Quitar",
    "download": "Descargar",
    "copyUrl": "Copiar URL",
    "copied": "Copiado",
    "openProduct": "Abrir en source.coop",
    "addTitle": "Añadir este archivo al mapa",
    "streamTitle": "Consulta este archivo donde está, leyendo solo las partes visibles. El archivo completo nunca se copia en DuckDB: ideal para archivos grandes.",
    "removeTitle": "Quitar este archivo del mapa",
    "downloadTitle": "Descargar este archivo",
    "copyUrlTitle": "Copiar la URL de este archivo",
    "openProductTitle": "Abrir la página de este producto en source.coop",
    "unsupportedTitle": "GeoLibre no puede renderizar este formato: descárguelo en su lugar",
    "addError": "No se pudo añadir este archivo: {{message}}",
    "largeFileWarning": "Este archivo ocupa {{size}}. Se transmite desde el origen, por lo que solo se leen las partes visibles.",
    "streamHint": "Este archivo ocupa {{size}}. Añadir lo copia en memoria; Transmitir lee solo las partes visibles.",
    "tooLargeToOpen": "Este archivo ocupa {{size}}: demasiado grande para abrirlo en el navegador (límite de {{limit}}). Descárguelo o use una versión particionada de este conjunto de datos."
  },
  "huggingFace": {
    "browseTab": "Explorar",
    "uploadTab": "Subir",
    "settingsTab": "Configuración",
    "hint": "Busque repositorios de conjuntos de datos en Hugging Face, o introduzca un nombre de cuenta o un id owner/dataset.",
    "searchPlaceholder": "Buscar conjuntos de datos, cuenta u owner/dataset",
    "search": "Buscar",
    "searching": "Buscando…",
    "loadError": "No se pudo conectar con Hugging Face: {{message}}. Inténtelo de nuevo.",
    "noResults": "No hay conjuntos de datos coincidentes.",
    "retry": "Reintentar",
    "suggestions": "Conjuntos de datos sugeridos",
    "showing_one": "{{count}} conjunto de datos.",
    "showing_other": "{{count}} conjuntos de datos.",
    "browseOwner": "Explorar todos los conjuntos de datos de {{owner}}",
    "back": "Atrás",
    "private": "Privado",
    "gated": "Con acceso restringido",
    "privateHint": "Este conjunto de datos es privado o de acceso restringido. Sus archivos requieren una solicitud autenticada, algo que una fuente de mapa no puede hacer, por lo que aquí no se pueden añadir ni descargar.",
    "stats": "{{likes}} me gusta · {{downloads}} descargas",
    "noFiles": "No hay archivos en esta carpeta.",
    "loadingFiles": "Cargando archivos…",
    "loadMore": "Cargar más",
    "parent": "Subir un nivel",
    "add": "Añadir",
    "adding": "Añadiendo…",
    "stream": "Transmitir",
    "streaming": "Transmitiendo",
    "remove": "Quitar",
    "download": "Descargar",
    "copyUrl": "Copiar URL",
    "copied": "Copiado",
    "openDataset": "Abrir en Hugging Face",
    "addTitle": "Añadir este archivo al mapa",
    "streamTitle": "Consulta este archivo donde está, leyendo solo las partes visibles. El archivo completo nunca se copia en DuckDB: ideal para archivos grandes.",
    "removeTitle": "Quitar este archivo del mapa",
    "downloadTitle": "Descargar este archivo",
    "copyUrlTitle": "Copiar la URL de este archivo",
    "openDatasetTitle": "Abrir la página de este conjunto de datos en huggingface.co",
    "unsupportedTitle": "GeoLibre no puede renderizar este formato: descárguelo en su lugar",
    "addError": "No se pudo añadir este archivo: {{message}}",
    "notRasterIndex": "Este archivo JSON no indexa ningún ráster, por lo que no hay nada que poner en el mapa. Se admiten MosaicJSON y colecciones STAC.",
    "largeFileWarning": "Este archivo ocupa {{size}}. Se transmite desde el origen, por lo que solo se leen las partes visibles.",
    "streamHint": "Este archivo ocupa {{size}}. Añadir lo copia en memoria; Transmitir lee solo las partes visibles.",
    "tooLargeToOpen": "Este archivo ocupa {{size}}: demasiado grande para abrirlo en el navegador (límite de {{limit}}). Descárguelo o use una versión particionada de este conjunto de datos.",
    "tokenLabel": "Token de acceso",
    "tokenHint": "Crear un repositorio de conjunto de datos y subir archivos requiere un token de acceso de Hugging Face con permiso de escritura. Se guarda solo en este navegador y se envía únicamente a huggingface.co.",
    "tokenPlaceholder": "hf_…",
    "tokenSave": "Guardar token",
    "tokenClear": "Limpiar",
    "tokenHelp": "Obtener un token",
    "tokenChecking": "Comprobando el token…",
    "tokenError": "No se pudo verificar este token: {{message}}",
    "signedInAs": "Sesión iniciada como {{name}}",
    "readOnlyToken": "Este token es de solo lectura. Cree un token con permiso de escritura para subir archivos.",
    "createHeading": "Crear un repositorio de conjunto de datos",
    "ownerLabel": "Propietario",
    "datasetNameLabel": "Nombre del conjunto de datos",
    "datasetNamePlaceholder": "my-geodata",
    "privateLabel": "Privado",
    "create": "Crear",
    "creating": "Creando…",
    "createdRepo": "Se creó {{repoId}}.",
    "createError": "No se pudo crear este conjunto de datos: {{message}}",
    "uploadHeading": "Subir archivos",
    "targetLabel": "Conjunto de datos",
    "targetPlaceholder": "owner/dataset",
    "folderLabel": "Carpeta (opcional)",
    "folderPlaceholder": "data/",
    "chooseFiles": "Elegir archivos",
    "chooseLayer": "Elegir capa",
    "chooseLayerTitle": "Subir las entidades de una capa del mapa como archivo GeoJSON",
    "layerPickerHeading": "Subir una capa como GeoJSON",
    "layerFeatures_one": "{{count}} entidad",
    "layerFeatures_other": "{{count}} entidades",
    "layerOriginalFile": "Archivo original",
    "layerUnavailable": "{{name}} ya no está disponible para subir.",
    "remoteRasterNote": "Los ráster cargados desde una URL no se listan: sus datos no están en el navegador y ya tienen un enlace que puede compartir. Solo se pueden subir los archivos abiertos localmente.",
    "noUploadableLayers": "Ninguna capa del mapa contiene entidades que se puedan subir. Añada primero una capa vectorial.",
    "clearSelection": "Limpiar",
    "selectedFiles_one": "{{count}} archivo seleccionado ({{size}}).",
    "selectedFiles_other": "{{count}} archivos seleccionados ({{size}}).",
    "commitMessageLabel": "Mensaje de commit (opcional)",
    "commitMessagePlaceholder": "Subido con GeoLibre",
    "upload": "Subir",
    "uploadPreparing": "Preparando la subida…",
    "uploadHashing": "Calculando el hash de {{name}} ({{index}}/{{total}})…",
    "uploadSending": "Subiendo {{name}} ({{index}}/{{total}})…",
    "uploadCommitting": "Confirmando el commit…",
    "uploadDone_one": "Se subió {{count}} archivo.",
    "uploadDone_other": "Se subieron {{count}} archivos.",
    "uploadError": "Error en la subida: {{message}}",
    "fileTooLarge": "{{name}} supera el límite de subida de {{limit}}.",
    "selectionTooLarge": "Los archivos seleccionados suman {{size}}, por encima del límite de {{limit}} para una sola subida. Súbalos en lotes más pequeños.",
    "openUploaded": "Abrir el conjunto de datos",
    "rgbHeading": "Imágenes multibanda",
    "rgbHint": "Qué bandas se convierten en rojo, verde y azul cuando una imagen tiene tres o más. Se numeran desde 1; el panel de estilos puede cambiar cualquier capa después.",
    "bandR": "Rojo",
    "bandG": "Verde",
    "bandB": "Azul",
    "colormapHeading": "Imágenes de una banda",
    "colormapHint": "El mapa de colores que se aplica cuando una imagen tiene una sola banda.",
    "colormapLabel": "Mapa de colores",
    "engineHeading": "Motor de renderizado",
    "engineHint": "Qué renderizador descodifica las imágenes. A diferencia de los ajustes anteriores, este no es por capa: se aplica a todos los ráster del mapa, incluidos los ya añadidos.",
    "engineLabel": "Motor",
    "engineAuto": "Dejar sin cambios",
    "engineGpu": "GPU (deck.gl)",
    "engineWasm": "Teselador WebAssembly",
    "engineTitiler": "Servidor TiTiler",
    "resetDefaults": "Restablecer valores predeterminados"
  },
  "basemaps": {
    "confirmStyleReplace_one": "Cambiar a «{{name}}» reemplaza todo el estilo del mapa y eliminará el mapa base apilado que añadió. ¿Continuar?",
    "confirmStyleReplace_other": "Cambiar a «{{name}}» reemplaza todo el estilo del mapa y eliminará los {{count}} mapas base apilados que añadió. ¿Continuar?"
  },
  "annotations": {
    "toolbar": "Herramientas de anotación",
    "layerName": "Anotaciones",
    "elementsPanelTitle": "Elementos",
    "tools": {
      "text": "Texto",
      "arrow": "Flecha",
      "rectangle": "Resaltado rectangular",
      "ellipse": "Resaltado elíptico",
      "freehand": "Resaltado a mano alzada",
      "pin": "Marcador de chincheta",
      "sticky_note": "Nota adhesiva",
      "placed_image": "Imagen colocada"
    },
    "color": "Color de anotación",
    "width": "Ancho de línea",
    "widthOptions": {
      "thin": "Fino",
      "medium": "Medio",
      "thick": "Grueso"
    },
    "deleteLast": "Eliminar última anotación",
    "clearAll": "Borrar todas las anotaciones",
    "textPlaceholder": "Escriba la etiqueta, Intro para colocar",
    "pinTitlePrompt": "Título",
    "pinDescPrompt": "Descripción",
    "stickyNotePrompt": "Contenido de la nota",
    "imageUrlPrompt": "URL de la imagen",
    "cancel": "Cancelar",
    "saveElement": "Guardar elemento",
    "atPoint": "En el punto",
    "pinnedToExtent": "Anclado a la extensión"
  },
  "pythonConsole": {
    "title": "Consola de Python",
    "resize": "Cambiar el tamaño de la consola de Python",
    "clear": "Borrar salida",
    "collapse": "Contraer consola de Python",
    "expand": "Expandir consola de Python",
    "close": "Cerrar consola de Python",
    "run": "Ejecutar",
    "runHint": "Ejecutar (Ctrl/Cmd+Intro)",
    "completions": "Autocompletados",
    "placeholder": "Python aquí · Ctrl/Cmd+Intro para ejecutar · Tab para autocompletar · ↑/↓ para el historial",
    "intro": "Consola de Python lista. Use el objeto `geolibre` para programar el mapa, p. ej., geolibre.get_center(). Tab autocompleta, ↑/↓ recupera comandos anteriores, y `await geolibre.load_package(\"numpy\")` añade paquetes.",
    "loadFailed": "Error al cargar el entorno de ejecución de Python.",
    "showEditor": "Mostrar editor",
    "hideEditor": "Ocultar editor",
    "resizeEditor": "Cambiar el tamaño del editor",
    "fileNew": "Nuevo script",
    "fileOpen": "Abrir script…",
    "fileSave": "Guardar script (Ctrl/Cmd+S)",
    "fileSaveAs": "Guardar script como…",
    "clearEditor": "Borrar editor",
    "runScript": "Ejecutar script o selección (Ctrl/Cmd+Intro)",
    "untitled": "sin_titulo.py",
    "discardChanges": "¿Descartar los cambios sin guardar del script actual?",
    "editorPlaceholder": "Escriba aquí un script de Python de varias líneas. Ctrl/Cmd+Intro lo ejecuta (o la selección) en la consola; Tab sangra; Ctrl+Espacio autocompleta."
  },
  "notebook": {
    "title": "Cuaderno",
    "resize": "Cambiar el tamaño del panel del cuaderno",
    "collapse": "Contraer cuaderno",
    "expand": "Expandir cuaderno",
    "close": "Cerrar cuaderno",
    "copyServerUrl": "Copiar la URL del servidor para clientes externos (VS Code…)",
    "serverUrlCopied": "URL del servidor copiada",
    "loading": "Cargando cuaderno…",
    "loadFailed": "Error al cargar el cuaderno."
  },
  "dashboard": {
    "title": "Panel de control",
    "resize": "Cambiar el tamaño del panel de control",
    "collapse": "Contraer panel de control",
    "expand": "Expandir panel de control",
    "close": "Cerrar panel de control",
    "columns": "Columnas",
    "addWidget": "Añadir widget",
    "widgetCount_one": "{{count}} widget",
    "widgetCount_other": "{{count}} widgets",
    "empty": "Aún no hay widgets. Añada un gráfico para resumir una capa.",
    "emptyNoLayers": "No se encontraron capas compatibles. Añada una capa vectorial o de consulta DuckDB a su proyecto mediante el menú Añadir datos de arriba y luego vuelva aquí para empezar a crear gráficos.",
    "noLayersHint": "Añada primero una capa vectorial o de consulta DuckDB.",
    "layerMissing": "Capa no disponible",
    "noData": "Esta capa no tiene atributos que se puedan graficar.",
    "selectorMatches_one": "{{count}} de {{total}} entidad",
    "selectorMatches_other": "{{count}} de {{total}} entidades",
    "selectorClear": "Limpiar",
    "moveBack": "Mover atrás",
    "moveForward": "Mover adelante",
    "editWidget": "Editar widget",
    "removeWidget": "Quitar widget",
    "chartType": {
      "histogram": "Histograma",
      "scatter": "Dispersión",
      "bar": "Barras",
      "line": "Líneas",
      "box": "Diagrama de caja",
      "pie": "Circular",
      "indicator": "Indicador",
      "selector": "Selector",
      "list": "Lista"
    },
    "aggregate": {
      "count": "Recuento",
      "sum": "Suma",
      "mean": "Promedio"
    },
    "indicatorAggregation": {
      "count": "Recuento",
      "sum": "Suma",
      "mean": "Promedio",
      "min": "Mínimo",
      "max": "Máximo",
      "median": "Mediana"
    },
    "chart": {
      "emptyNumeric": "No hay valores numéricos que graficar.",
      "emptyScatter": "Ninguna fila tiene ambos campos establecidos como número.",
      "emptyBar": "No hay filas que agrupar.",
      "emptyPie": "No hay valores positivos que graficar.",
      "pieCaptionCount_one": "recuento de filas · {{count}} categoría",
      "pieCaptionCount_other": "recuento de filas · {{count}} categorías",
      "pieCaptionSum_one": "suma · {{count}} categoría",
      "pieCaptionSum_other": "suma · {{count}} categorías"
    },
    "editor": {
      "addTitle": "Añadir widget",
      "editTitle": "Editar widget",
      "description": "Elija una capa, un tipo de gráfico y los campos a graficar.",
      "noLayers": "No hay capas graficables. Añada primero una capa vectorial o de consulta DuckDB.",
      "noFields": "Esta capa no tiene campos numéricos o categóricos que graficar.",
      "layer": "Capa",
      "chartType": "Tipo de gráfico",
      "field": "Campo",
      "bins": "Intervalos",
      "xAxis": "Eje X",
      "yAxis": "Eje Y",
      "category": "Categoría",
      "aggregate": "Agregado",
      "value": "Valor",
      "prefix": "Prefijo",
      "suffix": "Sufijo",
      "multiSelect": "Permitir selección múltiple",
      "listColumns": "Columnas",
      "sortBy": "Ordenar por",
      "sortDir": "Dirección",
      "ascending": "Ascendente",
      "descending": "Descendente",
      "limit": "Límite de filas",
      "titleLabel": "Título",
      "titlePlaceholder": "Título opcional",
      "color": "Color",
      "colorReset": "Restablecer",
      "colorDefault": "Colores de gráfico predeterminados",
      "cancel": "Cancelar",
      "save": "Guardar"
    }
  },
  "assistant": {
    "title": "Asistente de IA",
    "resize": "Cambiar el tamaño del panel del asistente",
    "clear": "Borrar conversación",
    "close": "Cerrar asistente",
    "send": "Enviar",
    "sendHint": "Enviar (Ctrl/Cmd+Intro)",
    "stop": "Detener",
    "placeholder": "Pregunte sobre sus datos, p. ej., «mostrar países con población superior a 50 millones» · Ctrl/Cmd+Intro para enviar",
    "intro": "Chatee con sus datos. Puedo ejecutar SQL espacial, añadir o quitar capas, restilizarlas y mover el mapa; todos los cambios se pueden deshacer. Pruebe con «colorea los países por población con una rampa roja graduada».",
    "setupTitle": "Configurar el asistente de IA",
    "setupStatus": "El asistente necesita un proveedor de IA para razonar. Añada credenciales para cualquier proveedor a continuación y el panel cambiará al modo de chat en cuanto guarde.",
    "setupProviders": "Añada credenciales para cualquier proveedor",
    "setupOpenSettings": "Abrir Configuración → Proveedores de IA",
    "thinking": "Trabajando…",
    "toolError": "fallido",
    "provider": "Proveedor de LLM",
    "profile": "Perfil de IA",
    "deploymentProxy": "Proxy de despliegue",
    "model": "Modelo",
    "codeApprovalTitle": "¿Ejecutar el código del asistente?",
    "codeApprovalBody": "El asistente quiere ejecutar código {{language}} en la aplicación. Revíselo primero: puede modificar el mapa y acceder a los datos de la aplicación.",
    "codeApprovalAlways": "Permitir el código del asistente durante el resto de esta sesión",
    "codeApprovalRun": "Ejecutar",
    "codeApprovalDecline": "Cancelar"
  },
  "storymap": {
    "title": "Mapa narrativo",
    "description": "Cree una historia guiada por desplazamiento a partir de capítulos del mapa. Cada capítulo captura una vista de cámara y un texto.",
    "chapters": "Capítulos ({{count}})",
    "addChapter": "Añadir capítulo",
    "empty": "Aún no hay capítulos. Navegue por el mapa y luego añada un capítulo para capturar la vista actual.",
    "defaultChapterTitle": "Capítulo {{index}}",
    "untitledChapter": "Capítulo sin título",
    "present": "Presentar",
    "exportHtml": "Exportar HTML",
    "exitPresentation": "Salir",
    "preview": "Ir a este capítulo",
    "captureView": "Establecer en la vista actual",
    "composeOnMap": "Componer en el mapa",
    "resizeDialog": "Cambiar el tamaño del diálogo",
    "composeMode": {
      "title": "Componiendo capítulo",
      "hint": "Desplace, haga zoom e incline el mapa, y luego guarde la vista en este capítulo.",
      "save": "Guardar vista y volver al mapa narrativo",
      "cancel": "Cancelar",
      "waiting": "Espere a que el mapa termine de moverse"
    },
    "moveUp": "Mover arriba",
    "moveDown": "Mover abajo",
    "onEnter": "Al entrar",
    "onExit": "Al salir",
    "addEffect": "Añadir efecto de capa",
    "field": {
      "title": "Título",
      "subtitle": "Subtítulo",
      "byline": "Autoría",
      "footer": "Pie de página",
      "theme": "Tema del panel",
      "showMarkers": "Mostrar marcadores",
      "markerColor": "Color del marcador",
      "inset": "Minimapa incrustado",
      "hideChapterNav": "Ocultar lista de capítulos",
      "startView": "Activar vista inicial",
      "closingSlide": "Activar diapositiva de cierre",
      "chapterTitle": "Título del capítulo",
      "description": "Descripción (se permite HTML)",
      "image": "URL de imagen",
      "alignment": "Alineación del panel",
      "animation": "Animación del mapa",
      "hidden": "Ocultar panel",
      "rotate": "Rotar cámara",
      "imagePlaceholder": "https://example.com/image.jpg"
    },
    "theme": {
      "dark": "Oscuro",
      "light": "Claro"
    },
    "align": {
      "left": "Izquierda",
      "center": "Centro",
      "right": "Derecha",
      "full": "Completo"
    },
    "inset": {
      "topLeft": "Superior izquierda",
      "topRight": "Superior derecha",
      "bottomLeft": "Inferior izquierda",
      "bottomRight": "Inferior derecha"
    },
    "slide": {
      "blank": "Pantalla vacía",
      "black": "Pantalla negra",
      "global": "Vista global",
      "startAdjacent": "Vista previa del primer capítulo",
      "endAdjacent": "Mantener en el último capítulo"
    },
    "loadSample": "Cargar historia de ejemplo",
    "htmlFile": "HTML",
    "handout": {
      "button": "Folleto (PDF)",
      "title": "Generador de folletos PDF",
      "description": "Exporta las vistas de capítulo seleccionadas como un folleto PDF de varias páginas.",
      "screens": "Pantallas ({{count}}/{{total}})",
      "selectAll": "Seleccionar todo",
      "selectNone": "No seleccionar ninguno",
      "paperSize": "Tamaño de papel",
      "orientation": "Orientación",
      "portrait": "Vertical",
      "landscape": "Horizontal",
      "documentTitle": "Título del documento",
      "documentTitlePlaceholder": "Título mostrado en la parte superior de cada página",
      "subtitle": "Subtítulo",
      "subtitlePlaceholder": "Subtítulo mostrado bajo el título en cada página",
      "byline": "Autoría",
      "bylinePlaceholder": "Autor o línea de crédito",
      "footerText": "Texto de pie de página",
      "footerPlaceholder": "Pie de página mostrado en la parte inferior de cada página",
      "startSlide": "Diapositiva inicial",
      "endSlide": "Diapositiva de cierre",
      "generate": "Generar PDF",
      "stop": "Detener",
      "cancelled": "Exportación cancelada.",
      "progress": "Capturando vista {{current}} de {{total}}…",
      "pdfFile": "Documento PDF",
      "noMap": "El mapa aún no está listo. Inténtelo de nuevo en un momento.",
      "noneSelected": "Seleccione al menos una pantalla para exportar."
    },
    "opacityLabel": "Opacidad",
    "toggleNav": "Alternar lista de capítulos",
    "chapterNav": "Capítulos de la historia",
    "durationLabel": "Transición (ms)",
    "dragHint": "Arrastre para mover (doble clic para restablecer)",
    "resizeHint": "Arrastre para cambiar el tamaño",
    "import": "Importar",
    "importJson": "Importar JSON…",
    "importCsv": "Importar CSV…",
    "exportData": "Exportar",
    "exportJson": "Exportar JSON",
    "exportCsv": "Exportar CSV",
    "reset": "Restablecer",
    "resetTitle": "Borrar la historia y empezar de nuevo",
    "resetConfirm": "¿Borrar este mapa narrativo? Se eliminarán todos los capítulos y configuraciones para que pueda empezar el suyo propio."
  },
  "network": {
    "title": "Análisis de red",
    "description": "Isócronas, áreas de servicio y matrices de costos origen-destino a partir de sus capas de puntos.",
    "heading": "Red",
    "run": "Ejecutar",
    "outputPlaceholder": "El resultado aparecerá aquí.",
    "endpointNotice": "Las coordenadas de los puntos se envían al servidor de enrutamiento ({{endpoint}}). El predeterminado es un servidor Valhalla público compartido (FOSSGIS), que tiene límite de solicitudes. Para uso intensivo, introduzca la URL de su propio servidor en el campo «Servidor de enrutamiento (Valhalla)» de arriba."
  },
  "statistics": {
    "title": "Estadísticas espaciales",
    "description": "Autocorrelación espacial, análisis de puntos calientes y medidas de densidad. Todas las herramientas se ejecutan en el cliente sobre sus capas GeoJSON.",
    "heading": "Estadísticas espaciales",
    "run": "Ejecutar",
    "requiredFieldLegend": "Indica un campo obligatorio",
    "outputPlaceholder": "El resultado aparecerá aquí."
  },
  "processing": {
    "filePicker": {
      "filePath": "Ruta de archivo",
      "chooseFile": "Elegir archivo",
      "chooseFilePlaceholder": "Elegir un archivo",
      "chooseInputFile": "Elegir archivo de entrada",
      "chooseOutputFile": "Elegir archivo de salida"
    },
    "searchTools": "Buscar herramientas",
    "refreshCatalog": "Actualizar catálogo",
    "increaseValue": "Aumentar valor",
    "decreaseValue": "Disminuir valor",
    "distance": {
      "unitLabel": "Unidad de distancia",
      "units": {
        "degrees": "Grados",
        "meters": "Metros",
        "kilometers": "Kilómetros",
        "feet": "Pies",
        "miles": "Millas"
      },
      "north": "{{latitude}}°N",
      "south": "{{latitude}}°S",
      "equator": "el ecuador",
      "geographicNote": "Las capas seleccionadas usan un CRS geográfico (WGS84), por lo que las distancias están en grados. Elija una unidad junto a un campo de distancia para introducir metros, o reproyecte a un CRS proyectado para obtener resultados exactos.",
      "converted": "Se envía a la herramienta como {{degrees}}°, convertido en {{latitude}}. Un grado varía con la latitud y la dirección, así que esto es aproximado.",
      "convertedEmpty": "Los valores se convertirán a grados en {{latitude}}. Un grado varía con la latitud y la dirección, así que esto es aproximado.",
      "notANumber": "No es un número, así que se pasa a la herramienta tal cual en vez de convertirse. Use un decimal simple como 12000 o 1.5."
    },
    "history": {
      "title": "Historial de procesamiento",
      "description": "Cada ejecución de procesamiento de este proyecto, de la más reciente a la más antigua. Vuelva a ejecutar una herramienta, reábrala con los mismos parámetros o copie la ejecución como JSON o Python.",
      "empty": "Aún no se han registrado ejecuciones de procesamiento. Ejecute una herramienta desde el menú Procesamiento y aparecerá aquí.",
      "rerun": "Volver a ejecutar",
      "editRerun": "Editar y volver a ejecutar",
      "copyJson": "Copiar JSON",
      "copyPython": "Copiar Python",
      "copied": "Copiado",
      "clear": "Borrar historial",
      "count_one": "{{count}} ejecución registrada",
      "count_other": "{{count}} ejecuciones registradas",
      "toolUnavailable": "La herramienta «{{toolId}}» ya no está disponible"
    },
    "modelBuilder": {
      "moveStepUp": "Mover paso arriba",
      "moveStepDown": "Mover paso abajo",
      "removeStep": "Quitar paso",
      "title": "Lotes y modelos",
      "description": "Ejecute una herramienta vectorial sobre muchas capas, o encadene herramientas en un modelo reutilizable guardado con su proyecto.",
      "tabBatch": "Lote",
      "tabModels": "Modelos",
      "outputPlaceholder": "La salida aparecerá aquí.",
      "tool": "Herramienta",
      "sharedParameters": "Parámetros compartidos",
      "noExtraParameters": "Esta herramienta no tiene parámetros adicionales.",
      "inputLayers": "Capas de entrada",
      "selectAll": "Seleccionar todo",
      "clearSelection": "Limpiar",
      "noCompatibleLayers": "No hay capas GeoJSON compatibles.",
      "newModel": "Nuevo modelo",
      "noSavedModels": "Aún no hay modelos guardados.",
      "untitledModel": "Modelo sin título",
      "modelName": "Nombre del modelo",
      "emptyPipelineHint": "Añada un paso para empezar a construir la cadena. El primer paso lee una capa de entrada; cada paso posterior recibe la salida del paso anterior.",
      "addStep": "Añadir paso",
      "runModel": "Ejecutar el modelo",
      "deleteModel": "Eliminar",
      "inputPreviousStep": "Entrada: ← salida del paso anterior",
      "unknownTool": "Herramienta desconocida «{{id}}»",
      "noParameters": "Sin parámetros."
    },
    "parameterField": {
      "selectLayer": "Seleccionar una capa...",
      "selectField": "Seleccionar un campo...",
      "selectLayerFirst": "Seleccione primero una capa"
    },
    "whitebox": {
      "run": "Ejecutar",
      "running": "Ejecutando…",
      "runLocal": "Ejecutar localmente (WASM)",
      "runLocalHint": "Ejecutar localmente en WebAssembly (sin sidecar de Python)",
      "runningLocally": "Ejecutando localmente con WebAssembly. No se requiere sidecar.",
      "copyLink": "Copiar enlace",
      "copyLinkCopied": "¡Copiado!",
      "copyLinkHint": "Copiar un enlace para compartir que abre esta herramienta con la configuración actual",
      "copyLinkFailed": "No se pudo copiar el enlace al portapapeles.",
      "catalogSnapshotError": "No se pudo cargar la instantánea del catálogo de Whitebox.",
      "localRunnerError": "No se pudo cargar el ejecutor de herramientas local (WASM). Actualice e inténtelo de nuevo, o use el sidecar si está disponible.",
      "output": {
        "geojson": "GeoJSON (añadir al mapa)",
        "geoparquet": "GeoParquet (descargar, conserva CRS)",
        "flatgeobuf": "FlatGeobuf (descargar, conserva CRS)",
        "shapefile": "Shapefile (descargar, conserva CRS)",
        "projectedHint": "Guardado en sus descargas en el CRS de destino. El mapa solo muestra EPSG:4326, así que un resultado proyectado no se añade como capa."
      },
      "filterBySource": "Filtrar por origen",
      "allSources": "Todos los orígenes",
      "geolibreTools": "Herramientas de GeoLibre",
      "whiteboxTools": "Herramientas de Whitebox",
      "toolbox": "Caja de herramientas de Whitebox",
      "checkingRuntime": "Comprobando el entorno de ejecución.",
      "toolsAvailable_one": "{{count}} herramienta disponible.",
      "toolsAvailable_other": "{{count}} herramientas disponibles.",
      "runtimeUnavailable": "El entorno de ejecución de Whitebox no está disponible.",
      "useMapExtent": "Usar la extensión del mapa",
      "fromLayer": "Desde capa",
      "drawBbox": "Dibujar en el mapa",
      "drawingBbox": "Dibujando…",
      "drawBboxHint": "Arrastre un cuadro en el mapa para definir el cuadro delimitador. Pulse Esc para cancelar.",
      "mapExtentPlaceholder": "minX,minY,maxX,maxY",
      "mapExtentUnavailable": "La vista del mapa aún no está disponible. Espere a que el mapa se cargue e inténtelo de nuevo.",
      "mapExtentInvalid": "La vista actual del mapa no puede usarse como cuadro delimitador: cruza el meridiano de 180° o se extiende más allá de los límites válidos de longitud/latitud. Ajuste la vista e inténtelo de nuevo.",
      "extentLabel": "Área de interés",
      "extentNorth": "Norte",
      "extentSouth": "Sur",
      "extentWest": "Oeste",
      "extentEast": "Este",
      "extentHint": "Tome el rectángulo de la vista actual del mapa, o dibuje uno en el mapa, en lugar de escribir cada límite. Las coordenadas se rellenan como WGS84 (EPSG:4326).",
      "noToolSelected": "Ninguna herramienta seleccionada",
      "optionDefault": "Predeterminado",
      "optionPath": "Ruta",
      "selectedLayer": "Capa seleccionada",
      "filePath": "Ruta del archivo",
      "auto": "Automático",
      "chooseOutputPath": "Elegir la ruta de salida",
      "chooseInputPath": "Elegir la ruta de entrada",
      "categoryGeneral": "General",
      "categoryAll": "Todas ({{total}})",
      "errorLoadSnapshot": "No se pudo cargar la instantánea del catálogo de Whitebox.",
      "errorLoadLive": "No se pudo cargar el catálogo en vivo.",
      "errorConnect": "No se pudo conectar con el sidecar.",
      "errorPoll": "No se pudo consultar el trabajo.",
      "errorStartTool": "No se pudo iniciar la herramienta de Whitebox.",
      "errorStartSidecar": "No se pudo iniciar el sidecar de GeoLibre.",
      "errorStopSidecar": "No se pudo detener el sidecar de GeoLibre.",
      "noToolsFound": "No se encontraron herramientas.",
      "noParameters": "Esta herramienta no tiene parámetros.",
      "noOutput": "Aún no hay salida.",
      "enabled": "Activado",
      "requiredSuffix": " | obligatorio",
      "selectField": "Seleccione un campo",
      "fieldName": "Nombre del campo",
      "crs": {
        "browse": "Examinar",
        "codePlaceholder": "Código EPSG",
        "searchLabel": "Buscar sistemas de referencia de coordenadas",
        "searchPlaceholder": "Buscar por nombre o código EPSG",
        "geographic": "Geográfico",
        "projected": "Proyectado",
        "noResults": "No hay ningún sistema de coordenadas coincidente. Aun así puede escribirse cualquier código EPSG."
      },
      "vectorUnitsNote": "Las capas vectoriales se leen como WGS84, por lo que los valores de distancia, espaciado y tolerancia están en grados, no en metros. 1° equivale a unos 111 km y 0,001° a unos 111 m."
    },
    "sidecar": {
      "unavailableTitle": "El servidor de procesamiento no está disponible.",
      "showHelp": "Mostrar qué significa esto y cómo solucionarlo",
      "hideHelp": "Ocultar detalles",
      "intro": "El servidor de procesamiento es un ayudante local opcional ({{sidecarUrl}}) que ejecuta herramientas más pesadas basadas en Python en segundo plano, separado de la aplicación. La mayoría de las herramientas de Whitebox no lo necesitan: pueden ejecutarse íntegramente en su navegador con WebAssembly.",
      "wasmTipTitle": "Ejecutar sin el servidor",
      "wasmTip": "Active «Ejecutar localmente (WASM)» para ejecutar las herramientas de Whitebox en su navegador. No se requiere servidor, instalación ni configuración.",
      "runLocallyButton": "Ejecutar localmente (WASM)",
      "troubleshootingTitle": "¿Aún quiere usar el servidor?",
      "stepStartServerDesktop": "Haga clic en «Iniciar servidor» en el panel de la lista de herramientas para iniciarlo y luego espere unos segundos a que se conecte.",
      "stepStartServerBrowser": "El servidor solo se puede iniciar desde la aplicación de escritorio de GeoLibre. En el navegador, mantenga activado «Ejecutar localmente (WASM)».",
      "stepCheckPort": "Asegúrese de que un firewall, antivirus o política de red no esté bloqueando el puerto local {{port}}.",
      "stepRestart": "Si el servidor se detuvo inesperadamente, reinicie la aplicación de escritorio de GeoLibre y vuelva a abrir este diálogo."
    },
    "vectorTools": {
      "title": "Herramientas vectoriales",
      "description": "Ejecute operaciones comunes de geometría vectorial sobre sus capas GeoJSON.",
      "engine": "Motor",
      "engineClient": "Cliente (Turf.js)",
      "engineSidecar": "Sidecar (GeoPandas)",
      "enginePyodide": "Python (Pyodide)",
      "checkingSidecar": "Comprobando la disponibilidad del sidecar...",
      "sidecarUnavailableClient": "El sidecar de GeoPandas no está disponible. Inicie el sidecar con el extra vector, o cambie al motor cliente.",
      "sidecarUnavailablePyodide": "El sidecar de GeoPandas no está disponible. Inicie el sidecar con el extra vector, o cambie a Python (Pyodide).",
      "pyodideNote": "Ejecuta GeoPandas en su navegador. La primera ejecución descarga el entorno de Python (una sola vez, necesita conexión a internet).",
      "run": "Ejecutar",
      "outputPlaceholder": "La salida aparecerá aquí.",
      "resolutionRange": "Resolución (0-{{max}})"
    }
  },
  "segmentation": {
    "title": "Segmentación con IA",
    "description": "Convierte imágenes en entidades vectoriales con SAM3 (segment-geospatial). Elija un GeoTIFF, describa qué segmentar y obtenga polígonos como una nueva capa.",
    "startServer": "Iniciar servidor",
    "downloadDesktop": "Descargar la aplicación de escritorio",
    "imageLabel": "Imagen (GeoTIFF)",
    "imagePlaceholder": "Elegir un GeoTIFF…",
    "chooseImage": "Elegir imagen",
    "modeLabel": "Modo",
    "modeText": "Instrucción de texto",
    "modeAutomatic": "Automático (todo)",
    "promptLabel": "Instrucción",
    "promptPlaceholder": "p. ej., árboles, edificios, agua",
    "confidenceLabel": "Umbral de confianza",
    "segment": "Segmentar",
    "status": {
      "checking": "Comprobando el servicio de segmentación con IA…",
      "unavailableDesktop": "El servicio de segmentación con IA aún no está en ejecución. Inicie el servidor de GeoLibre con segment-geospatial activado para usarlo.",
      "unavailableWeb": "La segmentación con IA no está disponible en el navegador. Use la aplicación de escritorio de GeoLibre para ejecutarla."
    },
    "error": {
      "chooseImage": "Elija una imagen (GeoTIFF) para segmentar.",
      "enterPrompt": "Introduzca una instrucción de texto, p. ej., «árboles» o «edificios».",
      "startServer": "No se pudo iniciar el sidecar de GeoLibre.",
      "failed": "Error en la segmentación."
    },
    "noObjects": "No se encontraron objetos.",
    "added": "Se añadieron {{count}} entidad(es) como «{{name}}».",
    "layerName": "Segmentación: {{prompt}}",
    "layerNameDefault": "Segmentación",
    "sidecar": {
      "title": "No se pudo iniciar el servidor de segmentación con IA.",
      "intro": "La segmentación con IA se ejecuta en un servidor auxiliar local ({{sidecarUrl}}) que aloja el modelo SAM3 de segment-geospatial. Ejecuta Python en segundo plano, separado de la aplicación, y no forma parte de la compilación del navegador.",
      "troubleshootingTitle": "Cómo poner en marcha el servidor",
      "stepInstall": "Asegúrese de que el servidor de GeoLibre esté instalado con el backend segment-geospatial activado, para que el modelo de segmentación esté disponible.",
      "stepStartServerDesktop": "Haga clic en «Iniciar servidor» arriba para iniciarlo y luego espere unos segundos a que el modelo se conecte."
    }
  },
  "objectDetection": {
    "title": "Detección de objetos",
    "description": "Ejecute un modelo YOLO exportado a ONNX sobre un GeoTIFF, completamente en el navegador. Los cuadros detectados se georreferencian y cada clase se añade como su propia capa.",
    "hint": "Use un modelo COCO integrado (que se descarga y almacena en caché una vez) o aporte su propio ONNX de YOLOv5/v8/v11. La detección se ejecuta localmente en el navegador. Los modelos integrados detectan objetos cotidianos; para imágenes aéreas, aporte su propio modelo entrenado con vistas cenitales.",
    "imageLabel": "Imagen (GeoTIFF)",
    "imagePlaceholder": "Elija un GeoTIFF…",
    "chooseImage": "Elegir imagen",
    "modelLabel": "Modelo",
    "modelSourceBuiltin": "Integrado (descarga)",
    "modelSourceLocal": "Archivo local",
    "builtinModelLabel": "Modelo integrado",
    "modelFileLabel": "Archivo de modelo (ONNX)",
    "modelPlaceholder": "Elija un modelo .onnx…",
    "chooseModel": "Elegir modelo",
    "downloadingModel": "Descargando modelo…",
    "classNamesLabel": "Nombres de clase (separados por comas, opcional)",
    "classNamesPlaceholder": "p. ej. coche, árbol, edificio",
    "confidenceLabel": "Confianza",
    "iouLabel": "IoU (NMS)",
    "inputSizeLabel": "Tamaño de entrada",
    "detect": "Detectar",
    "noObjects": "No se detectaron objetos. Pruebe a reducir el umbral de confianza.",
    "added": "Se añadieron {{count}} detección(es) en {{classes}} clase(s).",
    "layerName": "Detección: {{class}}",
    "error": {
      "chooseImage": "Elija una imagen (GeoTIFF) sobre la que ejecutar la detección.",
      "photoLocation": "Esta foto no tiene coordenadas GPS utilizables. Elija una foto geoetiquetada.",
      "chooseModel": "Elija un modelo YOLO exportado a ONNX (.onnx).",
      "downloadModel": "No se pudo descargar el modelo. Compruebe su conexión e inténtelo de nuevo.",
      "failed": "La detección falló."
    }
  },
  "segmentEverything": {
    "title": "Segmentar todo",
    "description": "Ejecute SlimSAM automáticamente sobre un GeoTIFF, completamente en el navegador. Cada objeto detectado se convierte en un polígono georreferenciado añadido como una sola capa.",
    "hint": "Se muestrea una cuadrícula de puntos por toda la imagen y se segmenta con SlimSAM (que se descarga y almacena en caché una vez). Sin clics ni etiquetas: las cuadrículas más densas encuentran más objetos, pero tardan más.",
    "imageLabel": "Imagen (GeoTIFF)",
    "imagePlaceholder": "Elija un GeoTIFF…",
    "chooseImage": "Elegir imagen",
    "gridLabel": "Cuadrícula",
    "qualityLabel": "Calidad",
    "minSizeLabel": "Tamaño mín. %",
    "run": "Segmentar",
    "downloadingModel": "Descargando modelo…",
    "progress": "Segmentando… {{done}}/{{total}}",
    "noObjects": "No se segmentó ningún objeto. Pruebe con una cuadrícula más densa o un umbral de calidad más bajo.",
    "added": "Se añadieron {{count}} segmento(s).",
    "layerName": "Segmentos",
    "error": {
      "chooseImage": "Elija una imagen (GeoTIFF) para segmentar.",
      "downloadModel": "No se pudo descargar el modelo. Compruebe su conexión e inténtelo de nuevo.",
      "failed": "La segmentación falló."
    }
  },
  "pluginPanel": {
    "expand": "Expandir panel",
    "collapse": "Contraer panel",
    "close": "Cerrar panel",
    "resize": "Cambiar el tamaño del panel",
    "moveLeft": "Mover panel a la izquierda",
    "moveRight": "Mover panel a la derecha",
    "mergeIntoStyleRail": "Combinar en la barra de estilo",
    "mergeIntoLayersRail": "Combinar en la barra de capas",
    "detach": "Separar como panel móvil",
    "collapsedLabel": "{{title}} (contraído)"
  },
  "sharedRail": {
    "label": "Barra lateral",
    "layers": "Capas",
    "style": "Estilo",
    "expand": "Expandir {{title}}",
    "collapse": "Contraer {{title}}"
  },
  "attributeTable": {
    "title": "Tabla de atributos",
    "resize": "Cambiar el tamaño de la tabla de atributos",
    "editValues": "Editar valores de atributos",
    "editTitleFinishGeometry": "Finalice la edición de geometría para editar atributos",
    "editTitleReadOnly": "La edición no está disponible para las capas de Añadir capa vectorial",
    "editTitleUseSaveCancel": "Use Guardar o Cancelar para finalizar la edición",
    "exitEditMode": "Salir del modo de edición",
    "editTitleDuckdb": "Editar en memoria los atributos de consulta de DuckDB mostrados",
    "saveEdits": "Guardar ediciones de atributos",
    "saveTitleInvalid": "Corrija el JSON no válido antes de guardar",
    "saveTitleDuckdb": "Guardar ediciones de atributos de DuckDB en memoria",
    "addFieldTitle": "Añadir un nuevo campo",
    "addField": "Añadir campo",
    "fieldCalculatorTitle": "Calcular valores de campo a partir de una expresión",
    "fieldCalculator": "Calculadora de campos",
    "manageFieldsTitle": "Mostrar u ocultar campos",
    "manageFields": "Administrar campos",
    "columnExplorerTitle": "Explorar todos los campos de un vistazo",
    "columnExplorerTitleDisabled": "El explorador de columnas requiere una capa vectorial o de consulta DuckDB",
    "columnExplorer": "Explorador de columnas",
    "statisticsTitle": "Resumen de estadísticas de campo",
    "statisticsTitleDisabled": "Las estadísticas requieren una capa vectorial o de consulta DuckDB",
    "statistics": "Estadísticas de campo",
    "chartsTitle": "Graficar campos numéricos",
    "chartsTitleDisabled": "Los gráficos requieren una capa vectorial o de consulta DuckDB",
    "charts": "Gráficos",
    "dashboardTitle": "Abrir el panel de control para crear widgets de gráficos",
    "dashboard": "Panel de control",
    "exportSelectedLayer": "Exportar capa seleccionada",
    "exportTitleDisabled": "La exportación requiere una capa respaldada por GeoJSON",
    "cancelEdits": "Cancelar ediciones de atributos",
    "searchPlaceholder": "Buscar atributos...",
    "searchAria": "Buscar atributos",
    "clearSelectedFeature": "Borrar entidad seleccionada",
    "statusFeatures_one": "{{count}} entidad",
    "statusFeatures_other": "{{count}} entidades",
    "statusShown_one": "{{count}} mostrada",
    "statusShown_other": "{{count}} mostradas",
    "statusSelected_one": "{{count}} seleccionada",
    "statusSelected_other": "{{count}} seleccionadas",
    "featureViewAria": "Vista de entidades",
    "showAllFeatures": "Mostrar todas las entidades",
    "showSelectedFeatures": "Mostrar seleccionadas ({{count}})",
    "expand": "Expandir tabla de atributos",
    "collapse": "Contraer tabla de atributos",
    "close": "Cerrar tabla de atributos",
    "newFieldPlaceholder": "p. ej., categoría",
    "defaultValuePlaceholder": "Dejar en blanco para vacío",
    "newFieldNamePlaceholder": "Nombre del nuevo campo",
    "showFields": "Mostrar campos",
    "noFields": "Sin campos",
    "showAllFields": "Mostrar todos los campos",
    "buttons": {
      "edit": "Editar",
      "calculate": "Calcular",
      "fields": "Campos",
      "explore": "Explorar",
      "statistics": "Estadísticas",
      "export": "Exportar"
    },
    "chart": {
      "field": "Campo",
      "xAxis": "Eje X",
      "yAxis": "Eje Y",
      "category": "Categoría",
      "value": "Valor",
      "title": "Gráficos",
      "description": "Visualizar campos en «{{layer}}».",
      "noChartableFields": "Esta capa no tiene campos numéricos ni categóricos que representar.",
      "chartType": "Tipo de gráfico",
      "typeHistogram": "Histograma",
      "typeScatter": "Dispersión",
      "typeBar": "Barras",
      "typeLine": "Líneas",
      "typeBox": "Diagrama de caja",
      "typePie": "Sectores",
      "bins": "Intervalos",
      "aggregate": "Agregado",
      "aggCount": "Recuento",
      "aggSum": "Suma",
      "aggAverage": "Promedio",
      "download": "Descargar",
      "downloadPng": "Imagen PNG",
      "downloadSvg": "Vector SVG",
      "exportError": "No se pudo exportar el gráfico."
    },
    "selectedLayerName": "- {{name}}",
    "noLayerSelected": "- seleccione una capa con atributos",
    "zoomToSelection": "Ajustar zoom a la selección",
    "loadingAttributes": "Cargando atributos de la capa…",
    "requiresVectorLayer": "La tabla de atributos requiere una capa vectorial o de consulta DuckDB.",
    "invalidJson": "JSON no válido",
    "editCellAria": "Editar {{col}} de la entidad {{featureId}}",
    "resizeColumn": "Cambiar el tamaño de la columna {{name}}",
    "renameFieldAria": "Cambiar el nombre del campo {{name}}",
    "manageFieldTitle": "Administrar el campo \"{{name}}\"",
    "manageFieldAria": "Administrar el campo {{name}}",
    "renameField": "Cambiar el nombre del campo",
    "hideField": "Ocultar campo",
    "excludeField": "Excluir el campo al exportar",
    "includeField": "Incluir el campo al exportar",
    "moveLeft": "Mover a la izquierda",
    "moveRight": "Mover a la derecha",
    "deleteField": "Eliminar campo",
    "joinedColumnTitle": "Columna unida, derivada de una tabla de unión. Edita la tabla o la definición de la unión en su lugar.",
    "virtualColumnTitle": "Campo virtual, calculado a partir de una expresión. Edita su definición en el panel de estilo de la capa en su lugar.",
    "deleteFieldConfirm": "Esto elimina permanentemente el campo \"{{field}}\" de todas las entidades de \"{{layer}}\". El estilo o las etiquetas que lo referencian se borrarán. Esto no se puede deshacer.",
    "addFieldDescription": "Añada un nuevo campo a todas las entidades de \"{{layer}}\".",
    "fieldName": "Nombre del campo",
    "fieldExists": "Ya existe un campo llamado \"{{name}}\".",
    "fieldType": "Tipo",
    "typeText": "Texto",
    "typeNumber": "Número",
    "typeBoolean": "Booleano",
    "defaultValue": "Valor predeterminado",
    "noDefault": "(sin valor predeterminado)",
    "noFeaturesForField": "Esta capa no tiene entidades a las que añadir un campo.",
    "calcDescription": "Calcule valores a partir de una expresión JavaScript y escríbalos en un campo de \"{{layer}}\".",
    "targetField": "Campo de destino",
    "updateField": "Actualizar campo",
    "createField": "Crear campo",
    "outputType": "Tipo de salida",
    "outputAuto": "Automático (mantener el tipo calculado)",
    "expression": "Expresión",
    "calcExpressionPlaceholder": "p. ej., pop / area, o upper(name), o pop > 100 ? \"big\" : \"small\"",
    "fieldsLabel": "Campos:",
    "insertField": "Insertar {{name}}",
    "functionsLabel": "Funciones:",
    "insertFunction": "Insertar {{name}}()",
    "geomMeasureLabel": "Geometría:",
    "geomMetric": {
      "length": "Longitud",
      "perimeter": "Perímetro",
      "area": "Área"
    },
    "geomInsert": "Insertar",
    "sampleRowErrored": "Error en la fila de muestra (otras filas aún podrían calcularse): {{message}}",
    "preview": "Vista previa:",
    "onlySelectedFeature": "Actualizar solo la entidad seleccionada",
    "evaluationFailed": "Error en la evaluación.",
    "invalidExpression": "Expresión no válida.",
    "calcCouldNotApply": "No se pudo aplicar el cálculo a esta capa.",
    "calcAppliedWithErrors": "Aplicado, pero {{errors}} de {{evaluated}} entidad(es) generaron un error y se escribieron como null.",
    "exportFailed": "No se pudo exportar la capa seleccionada.",
    "saveTitleFormErrors": "Corrija las infracciones del formulario de atributos antes de guardar"
  },
  "styleManager": {
    "title": "Administrador de estilos",
    "description": "Guarde, explore y aplique estilos, símbolos, ajustes preestablecidos de etiquetas y rampas de color reutilizables en capas y proyectos.",
    "searchPlaceholder": "Buscar estilos y etiquetas…",
    "presetsSection": "Ajustes preestablecidos integrados",
    "librarySection": "Mi biblioteca",
    "projectSection": "Este proyecto",
    "empty": "No hay estilos guardados que coincidan. Guarde el estilo de una capa o importe una biblioteca para empezar.",
    "apply": "Aplicar",
    "delete": "Eliminar",
    "saveCurrent": "Guardar estilo actual…",
    "nameLabel": "Nombre",
    "kindLabel": "Qué guardar",
    "kindStyle": "Estilo completo",
    "kindSymbol": "Solo símbolo",
    "kindLabels": "Solo etiquetas",
    "kindRamp": "Solo rampa de color",
    "tagsLabel": "Etiquetas",
    "tagsPlaceholder": "límite, mapa base (separados por comas)",
    "scopeLabel": "Guardar en",
    "scopeApp": "Mi biblioteca (todos los proyectos)",
    "scopeProject": "Solo este proyecto",
    "saveButton": "Guardar estilo",
    "cancel": "Cancelar",
    "import": "Importar…",
    "export": "Exportar…",
    "importFilterName": "Biblioteca de estilos / QML / SLD",
    "exportFilterName": "Biblioteca de estilos de GeoLibre",
    "applied": "Se aplicó «{{name}}» a {{layer}}.",
    "appliedRampHint": "Se aplicó «{{name}}». Cambie la capa a estilo graduado o categorizado para ver la rampa.",
    "saved": "Se guardó «{{name}}» en la biblioteca.",
    "deleted": "Se eliminó «{{name}}».",
    "importedCount_one": "Se importó {{count}} estilo.",
    "importedCount_other": "Se importaron {{count}} estilos.",
    "importedEntryName": "Estilo importado",
    "importInvalid": "Ese archivo no es una biblioteca de estilos, QML ni SLD.",
    "importNoMatch": "No se pudo leer ninguna simbología de ese estilo.",
    "exportEmpty": "No hay estilos guardados para exportar.",
    "exportFailed": "No se pudo exportar la biblioteca de estilos.",
    "exportSuccess": "Biblioteca de estilos exportada.",
    "noLayer": "Seleccione una capa vectorial para guardar o aplicar estilos."
  },
  "style": {
    "panelLabel": "Estilo de capa",
    "panelLabelCollapsed": "Estilo de capa (contraído)",
    "heading": "Estilo",
    "headingWithLayer": "Estilo - {{name}}",
    "resizePanel": "Cambiar el tamaño del panel de estilo",
    "expand": "Expandir estilo",
    "collapse": "Contraer estilo",
    "openStyleManager": "Estilos guardados…",
    "addClass": "Añadir clase",
    "removeClass": "Quitar clase",
    "beforeIdSavedUnavailable": "Guardado (no disponible)",
    "raster": {
      "greyscale": "Escala de grises",
      "greyscaleHint": "Alternar un mapa base en escala de grises (lleva la saturación a su mínimo)",
      "reset": "Restablecer",
      "resetHint": "Restablecer los ajustes a sus valores predeterminados",
      "exactValueHint": "Doble clic para introducir un valor exacto",
      "opacity": "Opacidad",
      "brightnessMin": "Brillo mínimo",
      "brightnessMax": "Brillo máximo",
      "saturation": "Saturación",
      "contrast": "Contraste",
      "hueRotate": "Rotación de tono",
      "footerDeck": "Los cambios se aplican en vivo a la opacidad de la capa ráster.",
      "footerMaplibre": "Los cambios se aplican en vivo a las propiedades de pintura ráster de MapLibre.",
      "valueAria": "Valor de {{label}}",
      "editValueAria": "Editar valor de {{label}}"
    },
    "visibility": {
      "minZoom": "Zoom mínimo",
      "maxZoom": "Zoom máximo",
      "minZoomTooltip": "Nivel de zoom en el que aparece esta capa. Los números más altos indican más acercamiento.",
      "maxZoomTooltip": "Nivel de zoom en el que desaparece esta capa. Los números más altos indican más acercamiento."
    },
    "joins": {
      "heading": "Uniones",
      "empty": "Añade columnas de otra capa o tabla haciendo coincidir campos clave. Las columnas unidas se actualizan cuando cambia la tabla y se guardan con el proyecto.",
      "addJoin": "Añadir unión",
      "joinLayer": "Capa de unión",
      "selectLayer": "Selecciona una capa…",
      "joinField": "Campo de unión",
      "targetField": "Campo de destino",
      "selectField": "Selecciona un campo…",
      "fields": "Campos a unir",
      "fieldCount_one": "{{count}} campo",
      "fieldCount_other": "{{count}} campos",
      "prefix": "Prefijo de nombre de campo",
      "prefixPlaceholder": "p. ej. census_",
      "add": "Añadir",
      "cancel": "Cancelar",
      "remove": "Eliminar unión",
      "enabledTitle": "Aplicar esta unión",
      "missingLayer": "Capa de unión no encontrada",
      "noCandidates": "Ninguna otra capa tiene una tabla de atributos para unir",
      "statsMatched": "{{matched}} de {{total}} entidades coincidentes",
      "statsUnmatchedJoin_one": "{{count}} fila de la tabla sin coincidencia",
      "statsUnmatchedJoin_other": "{{count}} filas de la tabla sin coincidencia"
    },
    "virtualFields": {
      "heading": "Campos virtuales",
      "empty": "Añade columnas basadas en expresiones que se recalculan cada vez que cambian los datos. Los campos virtuales se guardan con el proyecto y aparecen en todos los lugares donde aparecen los campos: la tabla de atributos, el estilo, las etiquetas y la selección.",
      "addField": "Añadir campo virtual",
      "name": "Nombre del campo",
      "namePlaceholder": "p. ej. density",
      "nameTaken": "Ya existe una columna con este nombre",
      "nameConflict": "No aplicado: el nombre entra en conflicto con una columna existente",
      "expression": "Expresión",
      "expressionPlaceholder": "[\"/\", [\"get\", \"pop\"], [\"get\", \"area_km2\"]]",
      "expressionTarget": "Expresión del campo virtual",
      "openBuilder": "Abrir el editor",
      "invalidExpression": "Expresión no válida",
      "add": "Añadir",
      "save": "Guardar",
      "cancel": "Cancelar",
      "edit": "Editar campo virtual",
      "remove": "Eliminar campo virtual",
      "enabledTitle": "Aplicar este campo virtual",
      "evaluationErrors_one": "{{count}} entidad no se pudo evaluar (celda nula)",
      "evaluationErrors_other": "{{count}} entidades no se pudieron evaluar (celdas nulas)"
    },
    "labels": {
      "heading": "Etiquetas",
      "show": "Mostrar etiquetas",
      "field": "Campo de etiqueta",
      "noAttributes": "No se encontraron atributos",
      "selectField": "Seleccionar un campo…",
      "placement": "Colocación",
      "placementPoint": "Centroide / punto",
      "placementLine": "A lo largo del borde de línea / polígono",
      "textSize": "Tamaño de texto",
      "haloWidth": "Ancho del halo",
      "textColor": "Color de texto",
      "haloColor": "Color del halo",
      "minZoom": "Zoom mínimo",
      "maxZoom": "Zoom máximo",
      "allowOverlap": "Permitir que las etiquetas se superpongan",
      "anchor": "Anclaje",
      "anchorCenter": "Centro",
      "anchorLeft": "Izquierda",
      "anchorRight": "Derecha",
      "anchorTop": "Arriba",
      "anchorBottom": "Abajo",
      "anchorTopLeft": "Superior izquierda",
      "anchorTopRight": "Superior derecha",
      "anchorBottomLeft": "Inferior izquierda",
      "anchorBottomRight": "Inferior derecha",
      "offsetX": "Desplazamiento X (em)",
      "offsetY": "Desplazamiento Y (em)",
      "rotation": "Rotación (°)",
      "maxWidth": "Ancho de ajuste (em)",
      "transform": "Mayúsculas/minúsculas",
      "transformNone": "Como se escribió",
      "transformUppercase": "MAYÚSCULAS",
      "transformLowercase": "minúsculas",
      "dedupe": "Etiquetas duplicadas",
      "dedupeOff": "Etiquetar cada entidad",
      "dedupeUnique": "Una etiqueta por ubicación",
      "dedupeConcatenate": "Combinar valores en una ubicación",
      "dedupeHint": "Combina los puntos apilados en la misma coordenada. Usa el campo de etiqueta en las capas de puntos locales.",
      "expression": "Expresión (opcional)",
      "expressionHint": "Una expresión de MapLibre (JSON). Reemplaza el campo cuando se establece.",
      "expressionInvalid": "No es una expresión de MapLibre válida (debe ser un array JSON). Este valor se ignora.",
      "dataDefined": {
        "heading": "Sustituciones definidas por datos",
        "size": "Tamaño",
        "color": "Color",
        "opacity": "Opacidad",
        "visibility": "Visibilidad",
        "priority": "Prioridad",
        "sizeTarget": "Expresión de tamaño de etiqueta",
        "colorTarget": "Expresión de color de etiqueta",
        "opacityTarget": "Expresión de opacidad de etiqueta",
        "visibilityTarget": "Expresión de visibilidad de etiqueta",
        "priorityTarget": "Expresión de prioridad de etiqueta",
        "notSet": "Sin definir",
        "clear": "Borrar expresión",
        "hint": "Expresiones MapLibre por entidad. Tamaño, opacidad y prioridad producen números (las etiquetas con valores de prioridad más bajos se colocan primero), color un color y visibilidad verdadero/falso. Se ignoran mientras la combinación de etiquetas duplicadas está activa. Una expresión de opacidad reemplaza la opacidad de la capa para las etiquetas."
      }
    },
    "elevation3d": {
      "mode": "3D (valores Z)",
      "fillColor": "Color de relleno",
      "outlineColor": "Color de contorno",
      "strokeWidth": "Ancho de trazo",
      "strokeWidthMeters": "Ancho de trazo (metros)",
      "fillOpacity": "Opacidad de relleno",
      "circleRadius": "Radio de círculo",
      "verticalScale": "Exageración vertical",
      "verticalScaleTooltip": "Multiplica el valor Z de cada coordenada. 1 renderiza elevaciones reales; los valores más altos enfatizan el relieve.",
      "offset": "Desplazamiento de altitud (m)",
      "offsetTooltip": "Altura constante en metros añadida a cada entidad, p. ej., para elevar un track sobre edificios o terreno 3D.",
      "footer": "Renderizado en 3D según los valores Z de las coordenadas mediante deck.gl. Los cambios se aplican en vivo. La identificación y el resaltado de entidades no están disponibles en este modo."
    },
    "diagrams": {
      "heading": "Diagramas",
      "chartType": "Tipo de gráfico",
      "typeNone": "Ninguno",
      "typePie": "Gráfico circular",
      "typeDonut": "Gráfico de anillo",
      "typeBar": "Gráfico de barras",
      "typeStackedBar": "Barras apiladas",
      "fields": "Atributos",
      "addField": "Añadir atributo",
      "removeField": "Eliminar atributo",
      "noFields": "Añade atributos numéricos para graficar en cada entidad.",
      "fieldAttribute": "Atributo del diagrama {{index}}",
      "sizeMode": "Tamaño",
      "sizeFixed": "Tamaño fijo",
      "sizeSum": "Escalado por suma de atributos",
      "sizeAttribute": "Escalado por atributo",
      "sizeField": "Atributo de tamaño",
      "size": "Tamaño (px)",
      "minZoom": "Zoom mínimo",
      "declutter": "Ocultar diagramas superpuestos",
      "truncated": "Los diagramas se dibujan solo para {{count}} entidades; el resto no se representa.",
      "atlasFull": "{{count}} diagramas no caben con este tamaño y se ocultan. Reduce el tamaño del diagrama."
    },
    "symbology": {
      "colormap": "Mapa de colores",
      "modeSingle": "Simbología única",
      "modeGraduated": "Graduada",
      "modeCategorized": "Categorizada",
      "modeRuleBased": "Basada en reglas",
      "modeExpression": "Expresión avanzada",
      "rules": "Reglas",
      "addRule": "Añadir regla",
      "removeRule": "Quitar regla",
      "noRulesPrefix": "Aún no hay reglas. Añada una regla y asígnele una expresión de filtro de MapLibre (p. ej., ",
      "noRulesSuffix": "). La primera regla que coincida gana; la regla Else colorea todo lo demás.",
      "ruleColor": "Color de la regla {{index}}",
      "ruleColorPick": "Elegir el color de la regla {{index}} de la pantalla",
      "ruleLabel": "Etiqueta de la regla {{index}}",
      "ruleFilter": "Filtro de la regla {{index}}",
      "ruleEnabled": "Activar la regla {{index}}",
      "ruleAddChild": "Añadir subregla",
      "ruleOptions": "Símbolo y visibilidad",
      "ruleMinZoom": "Zoom mínimo",
      "ruleMaxZoom": "Zoom máximo",
      "ruleZoomInvalid": "El zoom mínimo debe ser menor que el máximo: esta regla nunca se aplica mientras el rango esté vacío.",
      "ruleStrokeWidth": "Ancho de trazo",
      "ruleFillOpacity": "Opacidad del relleno",
      "ruleCircleSize": "Radio del círculo",
      "ruleOutlineColor": "Sobrescribir el color del contorno",
      "ruleOutlineColorPick": "Elegir el color del contorno de la regla {{index}} de la pantalla",
      "ruleInherit": "Heredado",
      "ruleGroupNote": "Esta regla tiene subreglas: restringe lo que pueden coincidir sus subreglas y no se dibuja por sí misma.",
      "labelPlaceholder": "Etiqueta (opcional)",
      "filterInvalid": "Filtro no válido: debe ser una expresión de array JSON. Esta regla se omite hasta que se corrija.",
      "elseRuleColor": "Color de la regla Else",
      "elseRuleColorPick": "Elegir el color de la regla Else de la pantalla",
      "elseRuleEnabled": "Activar la regla «si no» (si está desactivada, se ocultan los elementos que no coinciden con ninguna regla)",
      "elseAllOtherFeatures": "Else (todas las demás entidades)",
      "applyHint": "Haga clic en Aplicar para activar el renderizado basado en reglas.",
      "rulesApplyLive": "Los cambios en las reglas se aplican al mapa de inmediato; no hace falta un paso de aplicación aparte.",
      "proportionalSize": "Tamaño proporcional",
      "sizeByValue": "Tamaño según valor",
      "sizeField": "Campo de tamaño",
      "chooseField": "Elegir un campo…",
      "minValue": "Valor mínimo",
      "maxValue": "Valor máximo",
      "minSize": "Tamaño mínimo (px)",
      "maxSize": "Tamaño máximo (px)",
      "sizeLegend": "Leyenda de tamaño",
      "fillPattern": "Patrón de relleno",
      "patternColor": "Color del patrón",
      "patternSvg": "SVG del patrón",
      "svgPlaceholder": "<svg xmlns='http://www.w3.org/2000/svg' ...>…</svg> o una URL de datos/https",
      "marker": "Marcador",
      "useMarkerIcon": "Usar icono de marcador",
      "markerShape": "Forma del marcador",
      "markerColor": "Color del marcador",
      "markerSize": "Tamaño del marcador (px)",
      "markerSvg": "SVG del marcador",
      "markerShapes": {
        "circle": "Círculo",
        "square": "Cuadrado",
        "triangle": "Triángulo",
        "diamond": "Rombo",
        "star": "Estrella",
        "cross": "Cruz",
        "pin": "Pin",
        "custom": "SVG personalizado"
      },
      "fillPatterns": {
        "none": "Ninguno (relleno sólido)",
        "hatch": "Rayado",
        "crossHatch": "Rayado cruzado",
        "horizontal": "Líneas horizontales",
        "vertical": "Líneas verticales",
        "dots": "Puntos",
        "svg": "SVG personalizado"
      },
      "transparent": "Transparente",
      "transparentSwatch": "Sin color (transparente). Haga clic para elegir un color.",
      "styleType": "Tipo de estilo",
      "attribute": "Atributo",
      "classes": "Clases",
      "allClasses": "Todas ({{total}})",
      "scheme": "Esquema",
      "stops": "Paradas",
      "categories": "Categorías",
      "classColor": "Color de la clase {{index}}",
      "classColorPick": "Elegir el color de la clase {{index}} de la pantalla",
      "classValue": "Valor de la clase {{index}}",
      "colorExpression": "Expresión de color",
      "applyStyleType": "Aplicar tipo de estilo",
      "pointRenderer": "Renderizador de puntos",
      "pointRendererSingle": "Símbolo único",
      "pointRendererHeatmap": "Heatmap",
      "pointRendererClustered": "Agrupado",
      "heatmapRadius": "Radio de Heatmap",
      "heatmapIntensity": "Intensidad de Heatmap",
      "clusterRadius": "Radio de clúster (px)",
      "clusterMaxZoom": "Zoom máximo de clúster",
      "strokeWidthUnit": "Unidad de ancho de trazo",
      "strokeWidthUnitPixels": "Píxeles (constante en pantalla)",
      "strokeWidthUnitMeters": "Metros (se escala con el mapa)",
      "textHaloColor": "Color del halo de texto",
      "textHaloWidth": "Ancho del halo de texto",
      "schemeEqualInterval": "Intervalo igual",
      "schemeQuantile": "Cuantil",
      "schemeNaturalBreaks": "Cortes naturales",
      "schemeTopValues": "Más frecuentes",
      "schemeAlphabetical": "Alfabético",
      "schemeFirstValues": "Primeros valores",
      "errorChooseAttribute": "Elija un atributo para este modo de estilo.",
      "errorAttributesUnavailable": "No se pudieron cargar los valores de atributo de esta capa.",
      "errorProportionalSizeField": "El campo de tamaño debe ser numérico y tener más de un valor distinto.",
      "errorGraduatedStops": "El estilo graduado requiere al menos dos paradas numéricas.",
      "errorCategorizedStops": "El estilo categorizado requiere al menos una categoría.",
      "invertedFill": "Relleno invertido",
      "invertedFillHint": "Rellenar fuera de los elementos"
    },
    "suggestions": {
      "title": "Sugerencias de estilo",
      "dismiss": "Descartar sugerencias",
      "categorize": "Categorizar por {{field}}",
      "graduate": "Graduar por {{field}}",
      "heatmap": "Mapa de calor"
    },
    "selectLayerHint": "Seleccione una capa para editar su estilo.",
    "layerOrderDefault": "Orden de capas (predeterminado)",
    "increaseValue": "Aumentar {{label}}",
    "decreaseValue": "Disminuir {{label}}",
    "visualization": "Visualización",
    "mode2d": "2D",
    "mode3dExtrusion": "Extrusión 3D",
    "noControls": "Los controles de estilo aún no están disponibles para este tipo de capa.",
    "selectedLayerType": "Tipo de capa seleccionada: {{type}}",
    "footerDeck": "Los cambios se aplican en vivo al estilo de la capa deck.gl de DuckDB.",
    "footerMaplibre": "Los cambios se aplican en vivo a las propiedades de pintura de MapLibre.",
    "pluginPaintedFooter": "Esta capa la dibuja su plugin, que proporciona sus propios controles de estilo.",
    "extrusion": {
      "color": "Color de extrusión",
      "opacity": "Opacidad de extrusión",
      "advanced": "Expresión de altura avanzada",
      "heightExpression": "Expresión de altura",
      "heightProperty": "Propiedad de altura",
      "heightScale": "Escala de altura",
      "base": "Altura de base",
      "apply": "Aplicar extrusión 3D",
      "footer": "La configuración de extrusión 3D se aplica al guardar."
    },
    "expressionLabels": {
      "style": "Expresión de estilo",
      "color": "Expresión de color",
      "height": "Expresión de altura"
    },
    "expressionErrors": {
      "notArray": "{{label}} debe ser una expresión de array JSON.",
      "notOperator": "{{label}} debe comenzar con un operador, p. ej., [\"==\", [\"get\", \"field\"], value].",
      "notJson": "{{label}} no es JSON válido: {{message}}"
    },
    "expressionBuilder": {
      "title": "Generador de expresiones",
      "openBuilder": "Abrir el generador de expresiones",
      "openBuilderForRule": "Abrir el generador de expresiones para la regla {{index}}",
      "expressionLabel": "Expresión",
      "clear": "Borrar expresión",
      "valid": "Expresión válida.",
      "apply": "Aplicar",
      "preview": "Vista previa",
      "previewEmpty": "Introduzca una expresión para ver una vista previa en directo.",
      "previewNoFeatures": "No hay entidades con las que hacer la vista previa.",
      "sampleFeature": "Entidad {{index}} de {{count}}",
      "previousFeature": "Entidad anterior",
      "nextFeature": "Entidad siguiente",
      "filterMatches": "Coincide con esta entidad",
      "filterNoMatch": "No coincide con esta entidad",
      "fields": "Campos",
      "noFields": "Esta capa no tiene campos de atributos.",
      "insertField": "Insertar el campo {{name}}",
      "functionsHeading": "Funciones",
      "functionSearch": "Buscar funciones",
      "noFunctionMatches": "Ninguna función coincide con la búsqueda.",
      "variables": "Variables",
      "variablesHint": "Las variables se sustituyen por sus valores actuales cuando se aplica la expresión.",
      "categories": {
        "data": "Datos y búsqueda",
        "decision": "Condicionales y comparación",
        "math": "Matemáticas",
        "string": "Cadenas",
        "conversion": "Conversión de tipos",
        "camera": "Zoom y color"
      },
      "functions": {
        "get": "Devuelve el valor del atributo de entidad indicado.",
        "has": "Verdadero cuando la entidad tiene el atributo indicado.",
        "id": "Devuelve el id de la entidad.",
        "properties": "Devuelve el objeto de atributos completo de la entidad.",
        "geometryType": "Devuelve el tipo de geometría de la entidad (Point, LineString, Polygon, ...).",
        "at": "Devuelve el elemento de la matriz en el índice dado.",
        "in": "Verdadero cuando el primer valor está contenido en el segundo (cadena o matriz).",
        "indexOf": "Devuelve la posición del primer valor dentro del segundo, o -1.",
        "length": "Devuelve la longitud de una cadena o matriz.",
        "literal": "Inserta una matriz u objeto literal en la expresión.",
        "typeofOp": "Devuelve el nombre del tipo del valor.",
        "caseOp": "Devuelve la primera salida cuya condición sea verdadera; de lo contrario, el valor de reserva.",
        "match": "Compara una entrada con los valores indicados y devuelve la salida coincidente.",
        "coalesce": "Devuelve el primer valor no nulo.",
        "eq": "Verdadero cuando ambos valores son iguales.",
        "neq": "Verdadero cuando los valores difieren.",
        "gt": "Verdadero cuando el primer valor es mayor que el segundo.",
        "gte": "Verdadero cuando el primer valor es mayor o igual que el segundo.",
        "lt": "Verdadero cuando el primer valor es menor que el segundo.",
        "lte": "Verdadero cuando el primer valor es menor o igual que el segundo.",
        "all": "Verdadero cuando todas las condiciones son verdaderas.",
        "any": "Verdadero cuando al menos una condición es verdadera.",
        "not": "Niega un booleano.",
        "add": "Suma números.",
        "subtract": "Resta el segundo número al primero.",
        "multiply": "Multiplica números.",
        "divide": "Divide el primer número entre el segundo.",
        "modulo": "Devuelve el resto de una división.",
        "power": "Eleva el primer número a la potencia del segundo.",
        "abs": "Devuelve el valor absoluto.",
        "ceil": "Redondea al alza al entero más cercano.",
        "floor": "Redondea a la baja al entero más cercano.",
        "round": "Redondea al entero más cercano.",
        "sqrt": "Devuelve la raíz cuadrada.",
        "ln": "Devuelve el logaritmo natural.",
        "log10": "Devuelve el logaritmo en base 10.",
        "min": "Devuelve el menor de los valores.",
        "max": "Devuelve el mayor de los valores.",
        "concat": "Une los valores en una sola cadena.",
        "upcase": "Convierte una cadena a mayúsculas.",
        "downcase": "Convierte una cadena a minúsculas.",
        "slice": "Devuelve una sección de una cadena o matriz.",
        "toNumber": "Convierte un valor en un número.",
        "toString": "Convierte un valor en una cadena.",
        "toBoolean": "Convierte un valor en verdadero o falso.",
        "toColor": "Convierte un valor en un color.",
        "zoom": "El nivel de zoom actual del mapa (evaluado en directo por el mapa).",
        "interpolate": "Combina suavemente las salidas a medida que cambia la entrada.",
        "step": "Devuelve salidas escalonadas en los umbrales de entrada dados.",
        "rgb": "Crea un color a partir de rojo, verde y azul (0-255).",
        "rgba": "Crea un color a partir de rojo, verde, azul y alfa."
      }
    },
    "decorations": {
      "heading": "Decoración de línea",
      "typeNone": "Ninguna",
      "typeArrow": "Flechas",
      "typeTriangle": "Triángulos",
      "typeCircle": "Círculos",
      "typeSquare": "Cuadrados",
      "color": "Color de decoración",
      "size": "Tamaño del símbolo (px)",
      "spacing": "Espaciado (px)"
    },
    "generator": {
      "heading": "Generador de geometría",
      "type": "Geometría derivada",
      "typeNone": "Ninguna",
      "typeCentroid": "Centroides",
      "typeBoundingBox": "Cuadros delimitadores",
      "typeConvexHull": "Envolventes convexas",
      "typeBuffer": "Zonas de influencia",
      "bufferDistance": "Distancia de influencia (m)",
      "fillColor": "Color de relleno",
      "strokeColor": "Color de contorno",
      "strokeWidth": "Ancho de contorno (px)",
      "opacity": "Opacidad de relleno",
      "circleRadius": "Radio de punto (px)"
    },
    "attributeForm": {
      "heading": "Formulario de atributos",
      "empty": "No hay campos configurados. Asigne un widget de edición, una restricción o una regla de visibilidad a un campo.",
      "configureField": "Configurar campo",
      "field": "Campo",
      "selectField": "Seleccionar campo…",
      "widgetLabel": "Widget de edición",
      "widget": {
        "text": "Texto",
        "number": "Número",
        "range": "Rango",
        "checkbox": "Casilla de verificación",
        "date": "Fecha",
        "valueMap": "Mapa de valores"
      },
      "alias": "Alias",
      "required": "Obligatorio",
      "requiredTag": "obligatorio",
      "constraintTag": "restricción",
      "visibilityTag": "visibilidad",
      "valueMap": "Entradas del mapa de valores",
      "valueMapPlaceholder": "residential=Residential\ncommercial=Commercial",
      "valueMapHint": "Una entrada por línea: valor o valor=Etiqueta.",
      "min": "Mín",
      "max": "Máx",
      "step": "Paso",
      "constraintExpression": "Expresión de restricción",
      "constraintPlaceholder": "[\">\", [\"get\", \"population\"], 0]",
      "constraintDescription": "Descripción de la restricción",
      "constraintDescriptionPlaceholder": "Se muestra cuando la restricción falla",
      "visibilityExpression": "Expresión de visibilidad",
      "visibilityPlaceholder": "[\"==\", [\"get\", \"type\"], \"school\"]",
      "invalidExpression": "Expresión no válida",
      "openBuilder": "Abrir el generador de expresiones",
      "edit": "Editar configuración del campo",
      "remove": "Eliminar configuración del campo",
      "cancel": "Cancelar",
      "save": "Guardar",
      "noFields": "La capa no tiene campos de atributos para configurar.",
      "minMaxInvalid": "El mínimo debe ser menor o igual que el máximo."
    }
  },
  "layers": {
    "panelCollapsedLabel": "Capas (contraído)",
    "expand": "Expandir capas",
    "collapse": "Contraer capas",
    "resizePanel": "Cambiar el tamaño del panel de capas",
    "dragToReorder": "Arrastrar para reordenar",
    "saveGeometryEdits": "Guardar ediciones de geometría",
    "discardGeometryEdits": "Descartar ediciones de geometría",
    "moveUp": "Mover arriba",
    "moveDown": "Mover abajo",
    "zoomToLayer": "Ajustar zoom a la capa",
    "layerActions": "Acciones de capa",
    "metadata": "Metadatos",
    "removeLayer": "Quitar capa",
    "identifyFeatures": "Identificar entidades",
    "identifyDeactivate": "Desactivar identificación",
    "identifyInspectPixels": "Inspeccionar valores de píxel",
    "identifyStopInspectPixels": "Dejar de inspeccionar valores de píxel",
    "identifyUnavailable": "Identificar solo está disponible para capas vectoriales, WMS y COG",
    "exportGeoTiff": "GeoTIFF (COG)",
    "extractSubset": "Extraer subconjunto…",
    "stylesMenu": "Estilos",
    "exportMapboxStyle": "Exportar como estilo de Mapbox GL",
    "exportSldStyle": "Exportar como OGC SLD",
    "exportQmlStyle": "Exportar como QML de QGIS",
    "exportStyleSuccess": "Estilo exportado.",
    "exportStyleDataNotReady": "Los datos de la capa aún no están listos. Inténtelo de nuevo en un momento.",
    "exportStyleNeedsFeatures": "La exportación de estilo requiere una capa vectorial con entidades.",
    "exportStyleError": "No se pudo exportar el estilo de esta capa.",
    "importStyle": "Importar estilo (Mapbox GL / SLD / QML)…",
    "openStyleManager": "Estilos guardados (Administrador de estilos)…",
    "importStyleSuccess": "Estilo importado.",
    "importStyleInvalid": "Ese archivo no es un JSON, SLD o QML válido.",
    "importStyleNoMatch": "No se pudo leer ninguna simbología de ese estilo.",
    "importStyleError": "No se pudo importar este estilo.",
    "copyStyle": "Copiar estilo",
    "pasteStyle": "Pegar estilo",
    "pasteStyleFrom": "Pegar el estilo de «{{name}}»",
    "pasteStyleEmpty": "Copie primero el estilo de una capa",
    "pasteStyleMismatch": "El estilo copiado es para otro tipo de capa",
    "styleCopied": "Estilo copiado de «{{name}}».",
    "stylePasted": "Estilo pegado de «{{name}}».",
    "saveToLibrary": "Guardar en Mis datos",
    "savedToLibrary": "«{{name}}» guardado en Mis datos.",
    "saveToLibraryNoSource": "Esta capa no tiene una fuente que se pueda volver a añadir, así que no se puede guardar en Mis datos.",
    "saveToLibraryTooLarge": "Las entidades de esta capa son su única copia y son demasiado grandes para guardarlas en Mis datos.",
    "saveToLibraryConfigTooLarge": "La configuración guardada de esta capa es demasiado grande para Mis datos.",
    "bindToTimeSlider": "Vincular al control deslizante de tiempo…",
    "bindTimeDimensionToTimeSlider": "Vincular la dimensión temporal al control deslizante de tiempo",
    "bindNoTimeDimension": "Esta capa no tiene una dimensión temporal legible.",
    "unbindFromTimeSlider": "Desvincular del control deslizante de tiempo",
    "bindDialogDescription": "Filtra las entidades de esta capa por una propiedad de fecha o marca de tiempo mientras recorre la línea de tiempo. La capa conserva su estilo y opacidad.",
    "bindScanning": "Buscando propiedades de fecha y marca de tiempo en las entidades…",
    "bindNoProperty": "No se encontró ninguna propiedad de fecha o marca de tiempo en esta capa.",
    "bindNoTimestamps": "La propiedad seleccionada no tiene marcas de tiempo legibles. Elija otra propiedad.",
    "bindTileNoFeatures": "Aún no hay teselas cargadas para esta capa. Ajuste el zoom a la capa y vuelva a intentarlo.",
    "bindRange": "Intervalo de tiempo",
    "bindRangeEnd": "Fin del intervalo de tiempo",
    "bindRangeHint": "Obtenido de las teselas cargadas hasta ahora, por lo que puede ser más estrecho que el conjunto de datos completo. Introduzca un año (1958) o una fecha (1958-03-01).",
    "bindRangeInvalid": "Introduzca ambos límites como un año (1958) o una fecha (1958-03-01).",
    "bindProperty": "Propiedad de tiempo",
    "bindWindow": "Mostrar entidades",
    "bindWindowStep": "En el paso actual",
    "bindWindowWide": "Dentro de un paso antes y después",
    "bindWindowWider": "Dentro de tres pasos antes y después",
    "bindWindowCumulative": "Todo hasta el paso actual (acumulativo)",
    "bindCancel": "Cancelar",
    "bindConfirm": "Vincular",
    "openRasterStylePanel": "Editar estilo ráster…",
    "exportRasterSuccess": "Ráster exportado.",
    "exportRasterError": "No se pudo exportar este ráster.",
    "saveEditsToSource": "Guardar ediciones en el archivo de origen",
    "saveEditsSuccess": "Se guardaron {{count}} entidad(es) en el archivo de origen.",
    "saveEditsNoFeatures": "Esta capa no tiene entidades que guardar.",
    "saveEditsError": "No se pudieron guardar las ediciones en el archivo de origen.",
    "saveEditsToPostgis": "Guardar ediciones en la tabla de PostGIS",
    "saveEditsPostgisSuccess": "Guardado en {{table}}: {{inserted}} insertadas, {{updated}} actualizadas, {{deleted}} eliminadas.",
    "saveEditsPostgisSkippedFields": "No se guardaron los campos sin una columna de tabla coincidente: {{fields}}.",
    "saveEditsPostgisRefreshWarning": "Las ediciones se guardaron en la tabla, pero falló la actualización de la capa. Vuelva a cargar la capa antes de guardar de nuevo, o las entidades nuevas podrían insertarse dos veces.",
    "saveEditsPostgisNoConnection": "No hay ninguna conexión de PostgreSQL disponible para esta capa. Vuelva a conectar en Añadir datos > PostgreSQL, e inténtelo de nuevo.",
    "typeBasemap": "mapa base",
    "searchPlaces": "Buscar lugares",
    "searchPlacesPlaceholder": "Buscar lugares, coordenadas o celda H3...",
    "searchPlacesSearching": "Buscando...",
    "searchPlacesNoResults": "No se encontraron lugares",
    "searchPlacesError": "Error en la búsqueda. Inténtelo de nuevo.",
    "searchPlacesClear": "Borrar búsqueda",
    "searchPlacesGoToCoordinate": "Ir a {{coordinate}}",
    "searchPlacesGoToH3Cell": "Ir a la celda H3 {{cell}} (res. {{resolution}})",
    "background": "Fondo",
    "backgroundCannotReorder": "El fondo no se puede reordenar",
    "hideBackground": "Ocultar fondo",
    "showBackground": "Mostrar fondo",
    "opacity": "Opacidad",
    "opacityExactHint": "Doble clic para introducir un valor exacto",
    "opacityFor": "Opacidad de {{name}}",
    "opacityValueInputAria": "Valor de {{label}}",
    "opacityValueEditAria": "Editar valor de {{label}}",
    "basemapOpacity": "Opacidad del mapa base",
    "newGroup": "Nuevo grupo",
    "basemaps": "Mapas base",
    "geoEditor": "GeoEditor",
    "collapseGroup": "Contraer grupo",
    "expandGroup": "Expandir grupo",
    "hideGroup": "Ocultar grupo",
    "showGroup": "Mostrar grupo",
    "renameGroup": "Cambiar el nombre del grupo",
    "moveGroupUp": "Mover grupo arriba",
    "moveGroupDown": "Mover grupo abajo",
    "ungroupKeepLayers": "Desagrupar (conservar capas)",
    "deleteGroupAndLayers": "Eliminar grupo y capas",
    "groupActions": "Acciones de grupo",
    "addDataToGroup": "Añadir datos al grupo",
    "groupOpacity": "Opacidad",
    "groupOpacityAria": "Opacidad del grupo {{name}}",
    "doubleClickToRename": "Doble clic para cambiar el nombre",
    "doubleClickToChangeBasemap": "Doble clic para cambiar el mapa base",
    "renameNamed": "Cambiar el nombre de {{name}}",
    "newGroupFromLayer": "Nuevo grupo a partir de la capa",
    "newGroupFromSelectedLayers": "Nuevo grupo a partir de las capas seleccionadas",
    "moveToGroup": "Mover al grupo",
    "moveSelectedToGroup": "Mover las capas seleccionadas al grupo",
    "removeFromGroup": "Quitar del grupo",
    "hiddenByGroup": "Oculta porque su grupo no es visible",
    "empty": "No hay capas de datos. Añada datos desde la barra de herramientas.",
    "emptyBeginner": "Aún no hay capas. Añada mapas base a través de Complementos → Mapas base, o sus propios datos a través del menú Añadir datos.",
    "hideAllLayers": "Ocultar todas las capas",
    "showAllLayers": "Mostrar todas las capas",
    "dragNamedToReorder": "Arrastrar {{name}} para reordenar",
    "hideLayer": "Ocultar capa",
    "showLayer": "Mostrar capa",
    "editingGeometry": "Editando geometría",
    "rename": "Cambiar el nombre",
    "materializeToEditable": "Materializar como capa editable",
    "finishEditingGeometry": "Finalizar la edición de geometría",
    "editGeometry": "Editar geometría",
    "openAttributeTable": "Abrir tabla de atributos",
    "openRasterAttributeTable": "Abrir la tabla de atributos ráster",
    "export": "Exportar",
    "refresh": "Actualizar",
    "autoRefreshOn": "Actualización automática activada",
    "lastSynced": "Última sincronización {{time}}",
    "syncErrorStatus": "Error de sincronización: {{message}}",
    "autoRefresh": "Actualización automática",
    "refreshWfsGeojsonOnly": "Solo URL de WFS y GeoJSON",
    "editSqlQuery": "Editar consulta en el Espacio de trabajo SQL",
    "reloadFromDisk": "Recargar desde el disco",
    "watchFile": "Vigilar cambios en el archivo",
    "watchError": "No se pudo vigilar los cambios en este archivo.",
    "autoRefreshDialogTitle": "Actualización automática de {{name}}",
    "layerFallback": "Capa",
    "autoRefreshDialogDescription": "Recargar esta capa desde su origen en un intervalo fijo.",
    "interval": "Intervalo",
    "custom": "Personalizado",
    "customIntervalSeconds": "Intervalo personalizado (segundos)",
    "refreshFailurePolicy": "Si falla la actualización",
    "refreshFailureKeepLast": "Conservar los últimos datos correctos",
    "refreshFailureClear": "Vaciar la capa",
    "apply": "Aplicar",
    "enterPositiveSeconds": "Introduzca un número positivo de segundos.",
    "metadataDialogTitle": "Metadatos de {{name}}",
    "metadataDialogDescription": "Metadatos de la capa e información de origen",
    "metadataRasterLoading": "Leyendo los metadatos del ráster…",
    "metadataRasterError": "No se pudieron leer los metadatos de este ráster.",
    "resizeMetadataDialog": "Redimensionar el diálogo de metadatos",
    "removeLayerConfirmTitle": "¿Quitar capa?",
    "removeLayerConfirmBody": "Esto quita {{name}} del proyecto y del mapa.",
    "thisLayerFallback": "esta capa",
    "refreshingAuto": "Actualizando automáticamente...",
    "refreshing": "Actualizando...",
    "refreshVectorControlError": "No se pudo actualizar esta capa. Intente volver a abrir el panel Añadir capa vectorial.",
    "refreshed": "Actualizado.",
    "refreshedCount": "Se actualizaron {{count}} entidades.",
    "refreshError": "No se pudo actualizar esta capa.",
    "exportNeedsFeatures": "La exportación requiere una capa vectorial con entidades.",
    "exportedWithWarnings": "Capa exportada. {{warnings}}",
    "exported": "Capa exportada.",
    "exportLayerError": "No se pudo exportar esta capa.",
    "refreshIntervals": {
      "off": "Desactivado",
      "s15": "15 segundos",
      "s30": "30 segundos",
      "m1": "1 minuto",
      "m5": "5 minutos",
      "m15": "15 minutos"
    }
  },
  "timeSliderSymbology": {
    "bands": "Bandas",
    "bandsPlaceholder": "auto",
    "bandsHint": "Números de banda desde 1, separados por comas (p. ej. 4,3,2). Déjalo vacío para el valor predeterminado.",
    "bandsInvalid": "Introduce números de banda enteros de 1 o más, separados por comas.",
    "colormapNone": "Ninguno (RGB / multibanda)"
  },
  "rasterSymbology": {
    "gamma": "Gamma",
    "min": "Mín",
    "max": "Máx",
    "value": "Valor",
    "autoPlaceholder": "auto",
    "colorRampLabel": "Rampa de color",
    "reverseRamp": "Invertir rampa",
    "customRamp": "Personalizado…",
    "customColors": "Colores personalizados",
    "customColorsValid": "{{count}} colores, de bajo a alto. Use Invertir para voltear.",
    "customColorsHint": "Introduzca al menos dos códigos hexadecimales, separados por comas o espacios.",
    "imagePalette": "Paleta de imagen",
    "createLegend": "Crear leyenda a partir de la paleta",
    "createLegendHint": "Añade una leyenda con un elemento por valor de píxel, usando los colores de la paleta del ráster. Cambie el nombre de los elementos a nombres de clase después.",
    "createLegendPending": "Leyendo paleta…",
    "createLegendEmpty": "No se encontraron colores de paleta para este ráster.",
    "createLegendError": "No se pudo leer la paleta del ráster.",
    "heading": "Simbología ráster",
    "renderMode": "Modo de representación",
    "modeSingle": "Banda única (pseudocolor)",
    "modeIndex": "Índice (diferencia normalizada)",
    "modeRgb": "Composición RGB",
    "band": "Banda",
    "stretch": "Realce",
    "stretchLinear": "Lineal",
    "stretchLog": "Logarítmico",
    "stretchSqrt": "Raíz cuadrada",
    "index": "Índice",
    "classifyToggle": "Clasificar en clases discretas",
    "method": "Método",
    "methodEqualInterval": "Intervalo igual",
    "methodQuantile": "Cuantil",
    "methodManual": "Cortes manuales",
    "classes": "Clases",
    "classEdges": "Límites de clase",
    "noData": "Sin datos",
    "nodataAuto": "Automático (del archivo)",
    "nodataOff": "Representar todos los píxeles",
    "nodataCustom": "Valor personalizado"
  },
  "rasterAttributeTable": {
    "title": "Tabla de atributos ráster",
    "resize": "Cambiar el tamaño de la tabla de atributos ráster",
    "noRasterSelected": "Seleccione una capa ráster para ver su tabla de atributos.",
    "computing": "Leyendo las clases del ráster…",
    "empty": "Aún no hay clases. Use Recalcular para construir la tabla.",
    "band": "Banda",
    "bandOption": "Banda {{band}}",
    "close": "Cerrar la tabla de atributos ráster",
    "noSource": "Este ráster no tiene un archivo de origen legible.",
    "readError": "No se pudieron leer los datos del ráster.",
    "bandMissing": "La banda {{band}} no se encontró en este ráster.",
    "notCategorical": "Esta banda tiene demasiados valores distintos para ser categórica.",
    "tooManyClasses": "Aplicar simbología admite hasta {{max}} clases.",
    "symbologyApplied": "Simbología aplicada desde la tabla.",
    "noPalette": "Este ráster no tiene una paleta incrustada.",
    "legendError": "No se pudo abrir la leyenda.",
    "csvError": "No se pudo exportar el archivo CSV.",
    "recomputeTitle": "Escanear el ráster y reconstruir la tabla de clases",
    "applyTitle": "Colorear el ráster según las clases de la tabla",
    "paletteTitle": "Restablecer los colores desde la paleta incrustada",
    "legendTitle": "Rellenar la leyenda del mapa con las clases de la tabla",
    "csvTitle": "Exportar la tabla a CSV",
    "buttons": {
      "recompute": "Recalcular",
      "apply": "Aplicar simbología",
      "palette": "Desde paleta",
      "legend": "A leyenda",
      "csv": "CSV"
    },
    "columns": {
      "value": "Valor",
      "count": "Recuento",
      "percent": "%",
      "area_m2": "Área (m²)",
      "area_ha": "Área (ha)",
      "area_km2": "Área (km²)",
      "color": "Color",
      "label": "Etiqueta"
    },
    "rowColor": "Color para el valor {{value}}",
    "rowLabel": "Etiqueta para el valor {{value}}"
  },
  "raster": {
    "filePickerLabel": "Ráster",
    "cogConvertConfirm": "«{{name}}» es un GeoTIFF simple (por franjas), que no se puede mostrar directamente. ¿Convertirlo ahora a un GeoTIFF optimizado para la nube y cargar ese?",
    "cogConvertRemoteConfirm": "«{{name}}» es un GeoTIFF simple (por franjas), que no se puede mostrar directamente. Mostrarlo implica descargar el archivo completo y convertirlo a un GeoTIFF optimizado para la nube en el navegador, lo que puede ser lento y usar mucha memoria en archivos grandes. ¿Continuar?",
    "cogConvertLargeConfirm": "«{{name}}» es un GeoTIFF grande de {{width}}×{{height}} que no está optimizado para la nube. Convertirlo en el navegador puede ser lento y usar mucha memoria. ¿Convertirlo y cargarlo de todos modos?",
    "cogConvertFailed": "No se pudo convertir «{{name}}» a un GeoTIFF optimizado para la nube. Intente convertirlo con gdal_translate o rio cogeo y luego cargue el resultado.",
    "rasterDownloadFailed": "No se pudo descargar «{{name}}». Es posible que el servidor esté lento, no esté disponible o bloquee solicitudes entre orígenes, o que el archivo sea demasiado grande para mantenerlo en memoria. Compruebe la URL e inténtelo de nuevo.",
    "rasterNotGeotiff": "«{{name}}» no devolvió un GeoTIFF. Es posible que el servidor haya enviado una página de error o de inicio de sesión en su lugar. Compruebe la URL e inténtelo de nuevo."
  },
  "attributeForm": {
    "error": {
      "required": "Se requiere un valor",
      "number": "Debe ser un número",
      "range": "Debe estar entre {{min}} y {{max}}",
      "rangeMin": "Debe ser al menos {{min}}",
      "rangeMax": "Debe ser como máximo {{max}}",
      "valueMap": "El valor no está en la lista permitida",
      "constraint": "Restricción no satisfecha"
    }
  },
  "legendPanel": {
    "edit": "Editar leyenda",
    "done": "Terminar edición",
    "close": "Cerrar leyenda",
    "empty": "No hay capas visibles que mostrar.",
    "renameTitle": "Título de la leyenda",
    "renameEntry": "Renombrar {{name}}",
    "renameItem": "Renombrar {{name}}",
    "moveUp": "Subir",
    "moveDown": "Bajar",
    "hideEntry": "Ocultar de la leyenda",
    "showEntry": "Mostrar en la leyenda",
    "hideItem": "Ocultar elemento",
    "showItem": "Mostrar elemento",
    "customizeEntry": "Personalizar elementos",
    "resetEntry": "Restablecer a automático",
    "removeSection": "Eliminar sección",
    "addSection": "Añadir sección personalizada",
    "newSectionTitle": "Nueva sección",
    "newItemLabel": "Nuevo elemento",
    "addItem": "Añadir elemento",
    "removeItem": "Eliminar elemento",
    "itemColor": "Color del elemento",
    "position": "Posición",
    "positions": {
      "top-left": "Arriba a la izquierda",
      "top-right": "Arriba a la derecha",
      "bottom-left": "Abajo a la izquierda",
      "bottom-right": "Abajo a la derecha"
    },
    "low": "Bajo",
    "high": "Alto",
    "addFromDictionary": "Añadir desde diccionario",
    "dictionaryHint": "Un objeto JSON con pares {\"etiqueta\": \"color\"}, o una línea \"etiqueta: color\" por elemento.",
    "dictionaryAdd": "Añadir sección",
    "cancel": "Cancelar",
    "resize": "Cambiar el tamaño de la leyenda",
    "collapseEntry": "Contraer sección",
    "expandEntry": "Expandir sección",
    "collapsePanel": "Contraer leyenda",
    "expandPanel": "Expandir leyenda",
    "exportJson": "Exportar como JSON"
  },
  "errorBoundary": {
    "title": "Algo salió mal",
    "description": "GeoLibre encontró un error inesperado y no pudo continuar. Puede que su trabajo no esté guardado — intente recuperarlo antes de recargar.",
    "tryAgain": "Reintentar",
    "reload": "Recargar la aplicación",
    "sectionFailed": "{{label}} no se pudo renderizar. El resto de GeoLibre sigue disponible."
  },
  "commandPalette": {
    "title": "Paleta de comandos",
    "searchAria": "Buscar comandos",
    "searchPlaceholder": "Buscar comandos…",
    "listAria": "Comandos",
    "noMatches": "No hay comandos coincidentes"
  },
  "shortcuts": {
    "title": "Atajos de teclado",
    "description": "Pulse {{shortcut}} para buscar cualquier acción en la paleta de comandos.",
    "groupGeneral": "General",
    "groupMapNavigation": "Navegación del mapa",
    "openCommandPalette": "Abrir la paleta de comandos",
    "showKeyboardShortcuts": "Mostrar los atajos de teclado",
    "nav": {
      "zoomIn": "Acercar",
      "zoomOut": "Alejar",
      "pan": "Desplazar",
      "rotate": "Rotar",
      "tilt": "Inclinar"
    }
  },
  "diagnostics": {
    "title": "Diagnóstico",
    "description": "Peticiones de red recientes, errores de MapLibre, advertencias de consola y excepciones en tiempo de ejecución.",
    "countTotal_one": "{{count}} en total",
    "countTotal_other": "{{count}} en total",
    "countErrors_one": "{{count}} error",
    "countErrors_other": "{{count}} errores",
    "countWarnings_one": "{{count}} advertencia",
    "countWarnings_other": "{{count}} advertencias",
    "countNetwork_one": "{{count}} de red",
    "countNetwork_other": "{{count}} de red",
    "countNetworkErrors_one": "{{count}} error de red",
    "countNetworkErrors_other": "{{count}} errores de red",
    "logAllRequests": "Registrar todas las peticiones de red",
    "logAllRequestsHint": "Registra las peticiones de red correctas y abortadas a partir de ahora; las peticiones hechas mientras el registro estaba desactivado no se recuperan. Desactivado por defecto porque registrar cada petición ralentiza la aplicación.",
    "copyJson": "Copiar JSON",
    "copied": "Copiado",
    "clear": "Limpiar",
    "emptyAll": "No se ha capturado ningún diagnóstico.",
    "emptyError": "No se ha capturado ningún diagnóstico de error.",
    "emptyWarning": "No se ha capturado ningún diagnóstico de advertencia.",
    "emptyInfo": "No se ha capturado ningún diagnóstico informativo.",
    "emptyNetwork": "No se ha capturado ningún diagnóstico de red.",
    "emptyNetworkError": "No se ha capturado ningún diagnóstico de error de red."
  },
  "shell": {
    "workspaceTitle": "Espacio de trabajo del mapa de GeoLibre",
    "section": {
      "toolbar": "Barra de herramientas",
      "sharedLeftSidebar": "Barra lateral izquierda compartida",
      "pluginPanelLeftOfLayers": "Panel de complementos (a la izquierda de Capas)",
      "layerPanel": "Panel de capas",
      "pluginPanelRightOfLayers": "Panel de complementos (a la derecha de Capas)",
      "map": "Mapa",
      "pluginFloatingPanels": "Paneles flotantes de complementos",
      "selectionPanels": "Paneles de selección",
      "sunSimulationPanel": "Panel de simulación solar",
      "routeAnimationPanel": "Panel de animación de rutas",
      "flightSimulatorPanel": "Panel del simulador de vuelo",
      "sharedRightSidebar": "Barra lateral derecha compartida",
      "pluginPanelLeftOfStyle": "Panel de complementos (a la izquierda de Estilo)",
      "stylePanel": "Panel de estilo",
      "pluginPanelRightOfStyle": "Panel de complementos (a la derecha de Estilo)",
      "notebook": "Cuaderno",
      "attributeTable": "Tabla de atributos",
      "rasterAttributeTable": "Tabla de atributos ráster",
      "dashboard": "Panel de control",
      "pythonConsole": "Consola de Python",
      "sqlWorkspace": "Espacio de trabajo SQL",
      "assistant": "Asistente",
      "statusBar": "Barra de estado"
    }
  },
  "attributeStats": {
    "title": "Estadísticas de campo",
    "description": "Estadísticas resumidas de un campo en «{{layer}}».",
    "noFields": "Esta capa no tiene campos que resumir.",
    "field": "Campo",
    "scope": "Ámbito",
    "scopeAll": "Todas las entidades ({{total}})",
    "scopeFiltered": "Filtradas ({{total}})",
    "copiedToClipboard": "Copiado al portapapeles.",
    "copy": "Copiar",
    "copyHeader": "Estadísticas de campo — {{field}}",
    "copyHeaderFiltered": "Estadísticas de campo — {{field}} (filtradas)",
    "noValues": "No hay valores que resumir.",
    "mostFrequent": "Valores más frecuentes",
    "noPopulated": "No hay valores rellenados.",
    "stat": {
      "count": "Recuento",
      "nulls": "Nulos",
      "nonNumeric": "No numéricos",
      "unique": "Únicos",
      "min": "Mín",
      "max": "Máx",
      "mean": "Media",
      "median": "Mediana",
      "std": "Desv. típica",
      "sum": "Suma"
    }
  },
  "columnExplorer": {
    "title": "Explorador de columnas",
    "description": "Tipo, completitud y distribución de cada campo en «{{layer}}».",
    "noFields": "Esta capa no tiene campos que explorar.",
    "findField": "Buscar campo",
    "findFieldPlaceholder": "Filtrar campos por nombre...",
    "scope": "Ámbito",
    "scopeAll": "Todas las entidades ({{total}})",
    "scopeFiltered": "Filtradas ({{total}})",
    "fieldsShown": "{{shown}} de {{total}} campos",
    "noMatches": "Ningún campo coincide con «{{search}}».",
    "typeNumeric": "Numérico",
    "typeText": "Texto",
    "completenessTitle": "{{populated}} rellenados, {{nulls}} nulos",
    "populated": "{{total}} rellenados",
    "null": "{{total}} nulos",
    "unique": "{{total}} únicos",
    "min": "Mín",
    "mean": "Media",
    "max": "Máx",
    "noNumericValues": "No hay valores numéricos que representar.",
    "distributionAria": "Distribución de {{field}}: {{total}} valores de {{min}} a {{max}}",
    "noPopulated": "No hay valores rellenados.",
    "moreValues": "+{{total}} valores más"
  },
  "stacPlugin": {
    "title": "Catálogos STAC",
    "footprintLayerName": "Huellas de búsqueda STAC",
    "catalogSearch": "Buscar un catálogo público en STAC Index",
    "catalogSearchPlaceholder": "Buscar nombres de catálogos…",
    "indexLoading": "Cargando STAC Index…",
    "indexUnavailable": "STAC Index no disponible: introduce una URL",
    "indexLoadFailed": "No se pudo cargar STAC Index",
    "urlLabel": "URL del catálogo o de la API STAC",
    "connect": "Conectar",
    "connecting": "Conectando con STAC…",
    "connected": "Conectado. Elige filtros y busca.",
    "connectFailed": "No se pudo conectar con STAC",
    "selectCatalog": "Selecciona un catálogo…",
    "noMatchingCatalogs": "No hay catálogos coincidentes",
    "catalogApiSuffix": " (API)",
    "catalogStaticSuffix": " (estático)",
    "kindApi": "API STAC",
    "kindStatic": "catálogo estático",
    "collectionsHint": "Mantén Ctrl/Cmd para seleccionar varias colecciones; arrastra el borde inferior para cambiar el tamaño",
    "limitToExtent": "Limitar la búsqueda a la extensión actual del mapa",
    "bboxLabel": "Cuadro delimitador (oeste, sur, este, norte)",
    "bboxPlaceholder": "Opcional; anula la extensión del mapa",
    "bboxInvalid": "Introduce un cuadro delimitador válido: oeste, sur, este, norte.",
    "drawBbox": "Dibujar cuadro en el mapa",
    "cancelDrawing": "Cancelar dibujo",
    "clearDrawnBbox": "Borrar cuadro dibujado",
    "drawHint": "Haz clic y arrastra sobre el mapa para dibujar un cuadro de búsqueda.",
    "drawnBbox": "Cuadro dibujado: {{bbox}}",
    "drawnBboxCleared": "Cuadro dibujado borrado.",
    "mapNotReady": "El mapa no está listo para dibujar.",
    "startDate": "Fecha de inicio",
    "endDate": "Fecha de fin",
    "additionalParams": "Parámetros de búsqueda adicionales (JSON, solo API STAC)",
    "additionalInvalid": "Los parámetros de búsqueda adicionales deben ser un objeto JSON.",
    "searchItems": "Buscar elementos",
    "clearResults": "Borrar resultados",
    "resultsCleared": "Resultados de búsqueda borrados.",
    "searching": "Buscando elementos STAC…",
    "loadingMore": "Cargando más elementos…",
    "noResults": "Ningún elemento STAC coincide con estos filtros.",
    "searchFailed": "Error en la búsqueda STAC",
    "showing": "Mostrando {{count}} elementos.",
    "showingOfMatched": "Mostrando {{count}} de {{matched}} elementos.",
    "loadMore": "Cargar más",
    "renderOptions": "Opciones de representación ráster",
    "bands": "Bandas",
    "bandsPlaceholder": "p. ej., 1 o 1,2,3 (predeterminado: automático)",
    "colormap": "Mapa de colores (solo una banda)",
    "colormapDefault": "Predeterminado del renderizador",
    "minValue": "Valor mínimo",
    "maxValue": "Valor máximo",
    "nodata": "Valor NoData",
    "nodataPlaceholder": "Anula la etiqueta NoData del archivo",
    "renderHint": "Deja un campo vacío para que el renderizador lo deduzca del GeoTIFF. Las opciones se aplican a los recursos añadidos después de cambiarlas.",
    "initialStatus": "Elige un catálogo de STAC Index o introduce una URL.",
    "catalogInfo": "{{title}} · {{kind}}",
    "zoom": "Acercar",
    "add": "Añadir",
    "download": "Descargar",
    "adding": "Añadiendo {{asset}}…",
    "added": "{{asset}} añadido al mapa.",
    "addUnsupported": "Solo se pueden añadir al mapa recursos GeoTIFF/COG y GeoJSON",
    "addFailed": "No se pudo añadir el recurso",
    "cogUnsupported": "Este host de GeoLibre no puede visualizar recursos GeoTIFF remotos"
  },
  "vectorExport": {
    "invalidKmlCoordinatesByPosition": "La exportación KML no pudo escribir la entidad {{position}} porque tiene coordenadas no válidas.",
    "invalidKmlCoordinatesById": "La exportación KML no pudo escribir la entidad con ID {{id}} porque tiene coordenadas no válidas."
  },
  "comments": {
    "title": "Comentarios",
    "addDialogTitle": "Añadir comentario de revisión",
    "addDialogDescription": "Publique una nota anclada en este proyecto para la revisión del equipo o como referencia sin conexión.",
    "authorNameLabel": "Su nombre (se pregunta una vez y se guarda automáticamente)",
    "authorNamePlaceholder": "p. ej., Alex o Sara",
    "commentLabel": "Comentario / Observaciones",
    "commentPlaceholder": "Escriba aquí su nota de revisión u observaciones...",
    "confirmDelete": "¿Seguro que desea eliminar este hilo de comentarios?",
    "sessionDisconnected": "Sesión desconectada.",
    "defaultAuthorName": "Autor"
  },
  "s2Plugin": {
    "title": "Cuadrícula S2",
    "controlTitle": "Configuración de la cuadrícula S2",
    "autoResolution": "Resolución automática",
    "resolution": "Resolución",
    "cellCount": "Celdas en la vista: {{count}}",
    "tooManyCells": "Esta vista supera el límite de {{limit}} celdas. Acerque el zoom o reduzca la resolución.",
    "fillColor": "Color de relleno",
    "fillOpacity": "Opacidad de relleno",
    "lineColor": "Color de contorno",
    "lineWidth": "Ancho del contorno",
    "showLabels": "Mostrar los id de celda",
    "identifyHint": "Haga clic en el mapa para identificar una celda S2.",
    "selectedCell": "Celda seleccionada",
    "noSelection": "Ninguna celda seleccionada",
    "copyId": "Copiar id",
    "parent": "Celda padre",
    "children": "Celdas hijas",
    "neighbors": "Vecinas",
    "center": "Centro",
    "zoomToCell": "Ajustar zoom a la celda",
    "addAsLayer": "Añadir la cuadrícula como capa",
    "exportGeoJson": "Exportar GeoJSON",
    "exportCsv": "Exportar CSV",
    "includeNeighbors": "Incluir las vecinas de la celda seleccionada",
    "includeParents": "Incluir las celdas padre de la celda seleccionada"
  },
  "a5Plugin": {
    "title": "Cuadrícula A5",
    "controlTitle": "Configuración de la cuadrícula A5",
    "autoResolution": "Resolución automática",
    "resolution": "Resolución",
    "cellCount": "Celdas en la vista: {{count}}",
    "tooManyCells": "Esta vista supera el límite de {{limit}} celdas. Acerque el zoom o reduzca la resolución.",
    "fillColor": "Color de relleno",
    "fillOpacity": "Opacidad de relleno",
    "lineColor": "Color de contorno",
    "lineWidth": "Ancho del contorno",
    "showLabels": "Mostrar los id de celda",
    "identifyHint": "Haga clic en el mapa para identificar una celda A5.",
    "selectedCell": "Celda seleccionada",
    "noSelection": "Ninguna celda seleccionada",
    "copyId": "Copiar id",
    "parent": "Celda padre",
    "children": "Celdas hijas",
    "neighbors": "Vecinas",
    "center": "Centro",
    "zoomToCell": "Ajustar zoom a la celda",
    "addAsLayer": "Añadir la cuadrícula como capa",
    "exportGeoJson": "Exportar GeoJSON",
    "exportCsv": "Exportar CSV",
    "includeNeighbors": "Incluir las vecinas de la celda seleccionada",
    "includeParents": "Incluir las celdas padre de la celda seleccionada"
  },
  "dggridPlugin": {
    "title": "DGGRID",
    "controlTitle": "Configuración de DGGRID",
    "cellType": "Tipo de celda",
    "topologyHexagon": "Hexágono",
    "topologyDiamond": "Rombo",
    "topologyTriangle": "Triángulo",
    "projection": "Proyección",
    "aperture": "Apertura",
    "autoResolution": "Resolución automática",
    "resolution": "Resolución",
    "cellCount": "Celdas en la vista: {{count}}",
    "tooManyCells": "Esta vista supera el límite de {{limit}} celdas. Acerque el zoom o reduzca la resolución.",
    "fillColor": "Color de relleno",
    "fillOpacity": "Opacidad de relleno",
    "lineColor": "Color de contorno",
    "lineWidth": "Ancho del contorno",
    "showLabels": "Mostrar los id de celda",
    "identifyHint": "Haga clic en el mapa para identificar una celda DGGRID.",
    "selectedCell": "Celda seleccionada",
    "noSelection": "Ninguna celda seleccionada",
    "copyId": "Copiar id",
    "parent": "Celda padre",
    "children": "Celdas hijas",
    "neighbors": "Vecinas",
    "center": "Centro",
    "zoomToCell": "Ajustar zoom a la celda",
    "addAsLayer": "Añadir la cuadrícula como capa",
    "exportGeoJson": "Exportar GeoJSON",
    "exportCsv": "Exportar CSV",
    "includeNeighbors": "Incluir las vecinas de la celda seleccionada",
    "includeParents": "Incluir las celdas padre de la celda seleccionada"
  },
  "dggalPlugin": {
    "title": "DGGAL",
    "controlTitle": "Configuración de DGGAL",
    "gridType": "Tipo de DGGS",
    "autoResolution": "Resolución automática",
    "resolution": "Resolución",
    "cellCount": "Celdas en la vista: {{count}}",
    "tooManyCells": "Esta vista supera el límite de {{limit}} celdas. Acerque el zoom o reduzca la resolución.",
    "fillColor": "Color de relleno",
    "fillOpacity": "Opacidad de relleno",
    "lineColor": "Color de contorno",
    "lineWidth": "Ancho del contorno",
    "showLabels": "Mostrar los id de celda",
    "identifyHint": "Haga clic en el mapa para identificar una celda DGGAL.",
    "selectedCell": "Celda seleccionada",
    "noSelection": "Ninguna celda seleccionada",
    "copyId": "Copiar id",
    "parent": "Celda padre",
    "children": "Celdas hijas",
    "neighbors": "Vecinas",
    "center": "Centro",
    "zoomToCell": "Ajustar zoom a la celda",
    "addAsLayer": "Añadir la cuadrícula como capa",
    "exportGeoJson": "Exportar GeoJSON",
    "exportCsv": "Exportar CSV",
    "includeNeighbors": "Incluir las vecinas de la celda seleccionada",
    "includeParents": "Incluir las celdas padre de la celda seleccionada"
  },
  "olcPlugin": {
    "title": "OLC",
    "controlTitle": "Configuración de OLC",
    "autoResolution": "Resolución automática",
    "resolution": "Resolución",
    "cellCount": "Celdas en la vista: {{count}}",
    "tooManyCells": "Esta vista supera el límite de {{limit}} celdas. Acerque el zoom o reduzca la resolución.",
    "fillColor": "Color de relleno",
    "fillOpacity": "Opacidad de relleno",
    "lineColor": "Color de contorno",
    "lineWidth": "Ancho del contorno",
    "showLabels": "Mostrar los id de celda",
    "identifyHint": "Haga clic en el mapa para identificar una celda OLC.",
    "selectedCell": "Celda seleccionada",
    "noSelection": "Ninguna celda seleccionada",
    "copyId": "Copiar id",
    "parent": "Celda padre",
    "children": "Celdas hijas",
    "neighbors": "Vecinas",
    "center": "Centro",
    "zoomToCell": "Ajustar zoom a la celda",
    "addAsLayer": "Añadir la cuadrícula como capa",
    "exportGeoJson": "Exportar GeoJSON",
    "exportCsv": "Exportar CSV",
    "includeNeighbors": "Incluir las vecinas de la celda seleccionada",
    "includeParent": "Incluir la celda padre de la celda seleccionada"
  },
  "geohashPlugin": {
    "title": "Geohash",
    "controlTitle": "Configuración de Geohash",
    "autoResolution": "Resolución automática",
    "resolution": "Resolución",
    "cellCount": "Celdas en la vista: {{count}}",
    "tooManyCells": "Esta vista supera el límite de {{limit}} celdas. Acerque el zoom o reduzca la resolución.",
    "fillColor": "Color de relleno",
    "fillOpacity": "Opacidad de relleno",
    "lineColor": "Color de contorno",
    "lineWidth": "Ancho del contorno",
    "showLabels": "Mostrar los id de celda",
    "identifyHint": "Haga clic en el mapa para identificar una celda Geohash.",
    "selectedCell": "Celda seleccionada",
    "noSelection": "Ninguna celda seleccionada",
    "copyId": "Copiar id",
    "parent": "Celda padre",
    "children": "Celdas hijas",
    "neighbors": "Vecinas",
    "center": "Centro",
    "zoomToCell": "Ajustar zoom a la celda",
    "addAsLayer": "Añadir la cuadrícula como capa",
    "exportGeoJson": "Exportar GeoJSON",
    "exportCsv": "Exportar CSV",
    "includeNeighbors": "Incluir las vecinas de la celda seleccionada",
    "includeParent": "Incluir la celda padre de la celda seleccionada"
  },
  "tilecodePlugin": {
    "title": "Tilecode",
    "controlTitle": "Configuración de Tilecode",
    "autoResolution": "Resolución automática",
    "resolution": "Resolución",
    "cellCount": "{{count}} teselas en la vista",
    "tooManyCells": "Esta vista supera el límite de {{limit}} teselas. Acerque el zoom o reduzca la resolución.",
    "fillColor": "Color de relleno",
    "fillOpacity": "Opacidad de relleno",
    "lineColor": "Color de contorno",
    "lineWidth": "Ancho del contorno",
    "showLabels": "Mostrar los id de tesela",
    "identifyHint": "Haga clic en el mapa para identificar una tesela.",
    "selectedCell": "Tesela seleccionada",
    "noSelection": "Ninguna tesela seleccionada",
    "copyId": "Copiar id",
    "quadkey": "Quadkey",
    "parent": "Tesela padre",
    "children": "Teselas hijas",
    "neighbors": "Vecinas",
    "center": "Centro",
    "zoomToCell": "Ajustar zoom a la tesela",
    "addAsLayer": "Añadir la cuadrícula como capa",
    "exportGeoJson": "Exportar GeoJSON",
    "exportCsv": "Exportar CSV",
    "includeNeighbors": "Incluir las vecinas de la tesela seleccionada",
    "includeParent": "Incluir la tesela padre de la tesela seleccionada"
  },
  "netcdfSymbology": {
    "heading": "Simbología NetCDF",
    "colorRampLabel": "Mapa de colores",
    "reverse": "Invertir el mapa de colores",
    "colorMin": "Color mín",
    "colorMax": "Color máx",
    "resetRange": "Restablecer al rango de los datos",
    "openCube": "Cubo 3D"
  },
  "netcdfCube": {
    "heading": "Cubo de imagen 3D",
    "close": "Cerrar",
    "settings": "Configuración",
    "setupTitle": "Cubo de imagen 3D",
    "setupDescription": "Elija qué leer antes de construir el cubo. Cada banda es una lectura independiente, así que la extensión y el número de bandas determinan cuánto tarda.",
    "extent": "Extensión",
    "extentView": "Vista actual del mapa",
    "extentDraw": "Dibujar en el mapa",
    "extentFull": "Extensión completa de la capa",
    "viewHint": "Lee lo que el mapa esté mostrando cuando se construya el cubo.",
    "fullHint": "Lee toda la malla. Lento para un cubo del tamaño de una escena.",
    "drawBbox": "Dibujar en el mapa",
    "drawing": "Arrastre un cuadro en el mapa para definir la extensión del cubo",
    "drawHint": "Arrastre un cuadro en el mapa para definir la extensión.",
    "drawnExtent": "O {{west}}, S {{south}}, E {{east}}, N {{north}}",
    "detail": "Detalle",
    "detailOption": "{{size}} celdas por lado",
    "bands": "Bandas",
    "allBands": "Todas ({{count}})",
    "rgbOverlay": "Imagen RGB superpuesta",
    "rgbHint": "Compone tres bandas en una imagen en color colocada sobre la cara superior, para que el cubo se reconozca como un lugar.",
    "red": "Rojo",
    "green": "Verde",
    "blue": "Azul",
    "planeEstimate": "{{count}} lecturas de banda",
    "create": "Crear el cubo",
    "colorRampLabel": "Mapa de colores",
    "reverse": "Invertir",
    "showRgb": "RGB superpuesto",
    "rgbBands": "Bandas RGB",
    "recomposing": "leyendo...",
    "zScale": "Alto",
    "slice": "Corte",
    "sliceAt": "corte en {{band}} {{units}}",
    "reading": "Leyendo la banda {{done}} de {{total}}...",
    "summary": "{{nx}} x {{ny}} celdas, {{nz}} bandas a lo largo de {{axis}}",
    "errorNoCube": "El archivo de origen de esta capa ya no está abierto, así que no se puede leer un cubo.",
    "error": {
      "shapeMismatch": "Los planos de banda de la variable no comparten una misma forma, así que no se pueden apilar en un cubo.",
      "rgbShapeMismatch": "Las bandas RGB elegidas no coinciden con la forma del cubo.",
      "noBands": "Esta variable no tiene bandas que leer.",
      "noReadWindow": "Este cubo no se puede actualizar en su sitio. Vuelva a construirlo desde Configuración."
    }
  },
  "netcdfProfile": {
    "heading": "Perfil espectral",
    "clear": "Borrar",
    "chartAria": "Valores de píxel muestreados a lo largo del eje de bandas",
    "popOut": "Desacoplar",
    "dock": "Acoplar",
    "poppedOutHint": "El gráfico está abierto en una ventana sobre el mapa.",
    "noValues": "No hay valores que representar para estos píxeles.",
    "exportPng": "PNG",
    "exportCsv": "CSV",
    "exportError": "No se pudo exportar el gráfico."
  },
  "netcdfIdentify": {
    "noData": "sin datos",
    "coordinates": "lon, lat",
    "cell": "fila, columna"
  }
}
