{
  "extensionName": {
    "message": "Pedantic Picture Packer"
  },
  "extensionDescription": {
    "message": "Compresión de imágenes de vanguardia con JPEGli, PNGquant y OxiPNG."
  },
  "options_general": {
    "message": "General",
    "description": "options.html legend"
  },
  "sendMode_ask": {
    "message": "Recordar elementos pendientes antes de enviar",
    "description": "Radio label for sendMode=ask"
  },
  "sendMode_auto": {
    "message": "Ejecutar todas las acciones sin confirmación antes de enviar",
    "description": "Radio label for sendMode=auto"
  },
  "sendMode_manual": {
    "message": "Gestiono todo manualmente con el botón de la ventana de redacción",
    "description": "Radio label for sendMode=manual"
  },
  "label_minFileSize": {
    "message": "Tamaño mín. de archivo (KB):",
    "description": "options.html field label"
  },
  "label_minSavingsPercent": {
    "message": "Ahorro mín. (%):",
    "description": "options.html field label"
  },
  "label_replaceText": {
    "message": "Texto de sustitución para imágenes de citas eliminadas:",
    "description": "options.html field label"
  },
  "options_attachments": {
    "message": "Imágenes en adjuntos",
    "description": "options.html legend"
  },
  "options_inline": {
    "message": "Imágenes en línea",
    "description": "options.html legend"
  },
  "options_quotes": {
    "message": "Imágenes en citas",
    "description": "options.html legend"
  },
  "label_compressionProfile": {
    "message": "Perfil de compresión:",
    "description": "options.html field label (appears 3x)"
  },
  "options_editProfile": {
    "message": "Editar perfil de compresión",
    "description": "options.html legend"
  },
  "btn_delete": {
    "message": "Eliminar",
    "description": "options.html button"
  },
  "label_preserveMeta": {
    "message": "Conservar metadatos (EXIF, ICC, XMP)",
    "description": "options.html checkbox"
  },
  "label_crossConvert": {
    "message": "Permitir conversión cruzada (PNG ↔ JPG) si ahorra espacio",
    "description": "options.html checkbox"
  },
  "sublabel_antiAlias": {
    "message": "AntiAlias",
    "description": "options.html sub-label"
  },
  "label_antialiasing": {
    "message": "Antialiasing (factor 1.0–2.0):",
    "description": "options.html field label"
  },
  "label_scaleToDisplay": {
    "message": "Reducir imágenes grandes al tamaño de visualización (no se aplica a adjuntos)",
    "description": "options.html checkbox"
  },
  "sublabel_resize": {
    "message": "Resize",
    "description": "options.html sub-label"
  },
  "label_resizeAlgorithm": {
    "message": "Algoritmo de redimensionado:",
    "description": "options.html field label"
  },
  "sublabel_jpegli": {
    "message": "JPEGli",
    "description": "options.html sub-label"
  },
  "label_jpegQuality": {
    "message": "Calidad JPEG:",
    "description": "options.html field label"
  },
  "label_chromaSubsampling": {
    "message": "Submuestreo de croma:",
    "description": "options.html field label"
  },
  "sublabel_pngquant": {
    "message": "PNGquant",
    "description": "options.html sub-label"
  },
  "label_maxColors": {
    "message": "Máx. colores:",
    "description": "options.html field label"
  },
  "label_minQuality": {
    "message": "Calidad mín.:",
    "description": "options.html field label"
  },
  "label_maxQuality": {
    "message": "Calidad máx.:",
    "description": "options.html field label"
  },
  "label_dithering": {
    "message": "Dithering:",
    "description": "options.html field label"
  },
  "label_speed": {
    "message": "Velocidad (mayor = más rápido):",
    "description": "options.html field label"
  },
  "sublabel_oxipng": {
    "message": "OxiPNG",
    "description": "options.html sub-label"
  },
  "label_oxipngAlpha": {
    "message": "Optimización alfa (visualmente sin pérdidas)",
    "description": "options.html checkbox"
  },
  "label_optimizationLevel": {
    "message": "Nivel de optimización:",
    "description": "options.html field label"
  },
  "btn_saveAs": {
    "message": "Guardar como:",
    "description": "options.html button"
  },
  "label_name": {
    "message": "Nombre:",
    "description": "options.html span"
  },
  "placeholder_templateName": {
    "message": "Nombre del perfil",
    "description": "options.html input placeholder"
  },
  "btn_exportProfiles": {
    "message": "Exportar perfiles",
    "description": "options.html button"
  },
  "btn_importProfiles": {
    "message": "Importar perfiles",
    "description": "options.html button"
  },
  "options_exclusions": {
    "message": "Exclusiones permanentes",
    "description": "options.html legend"
  },
  "label_excludedImages": {
    "message": "Imágenes excluidas:",
    "description": "options.html info text"
  },
  "btn_clearList": {
    "message": "Vaciar lista",
    "description": "options.html button"
  },
  "text_saved": {
    "message": "Guardado",
    "description": "options.html saved indicator"
  },
  "btn_resetToDefault": {
    "message": "Restablecer valores predeterminados",
    "description": "options.html button"
  },
  "appName": {
    "message": "Pedantic Picture Packer",
    "description": "popup.html header"
  },
  "btn_settings": {
    "message": "Ajustes",
    "description": "popup.html settings link"
  },
  "popup_behavior": {
    "message": "Comportamiento",
    "description": "popup.html legend"
  },
  "popup_profiles": {
    "message": "Perfiles",
    "description": "popup.html legend"
  },
  "cat_attachment": {
    "message": "Adjunto",
    "description": "Category label: attachment"
  },
  "cat_inline": {
    "message": "En línea",
    "description": "Category label: inline"
  },
  "cat_quote": {
    "message": "Cita",
    "description": "Category label: quote"
  },
  "popup_resample": {
    "message": "Resample",
    "description": "popup.html legend"
  },
  "text_noImagesFound": {
    "message": "No se encontraron imágenes para comprimir.",
    "description": "Empty state text"
  },
  "btn_applyAll": {
    "message": "Aplicar todo",
    "description": "popup.html button"
  },
  "text_processing": {
    "message": "Procesando...",
    "description": "Loading overlay default text"
  },
  "confirmSend_title": {
    "message": "Compresión de imágenes",
    "description": "confirmSend.html header"
  },
  "btn_cancel": {
    "message": "Cancelar",
    "description": "confirmSend.html button"
  },
  "btn_send": {
    "message": "Enviar",
    "description": "confirmSend.html button"
  },
  "btn_applyAllAndSend": {
    "message": "Aplicar todo y enviar",
    "description": "confirmSend.html button"
  },
  "loading_imagesLoading": {
    "message": "Cargando imágenes...",
    "description": "Loading text in popup/confirmSend init"
  },
  "col_type": {
    "message": "Tipo",
    "description": "Param table header"
  },
  "col_size": {
    "message": "Tamaño",
    "description": "Param table header"
  },
  "col_resolution": {
    "message": "Resolución",
    "description": "Param table header"
  },
  "col_inlineResolution": {
    "message": "Resolución en línea",
    "description": "Param table header"
  },
  "col_savings": {
    "message": "Ahorro",
    "description": "Param table header"
  },
  "summary_compressed": {
    "message": "comprimido",
    "description": "Summary: N compressed"
  },
  "summary_removed": {
    "message": "eliminado",
    "description": "Summary: N removed"
  },
  "summary_excluded": {
    "message": "excluido",
    "description": "Summary: N excluded"
  },
  "summary_saved": {
    "message": "guardado",
    "description": "Summary: N bytes saved"
  },
  "summary_noChanges": {
    "message": "Sin cambios",
    "description": "Summary fallback"
  },
  "badge_incompressible": {
    "message": "incomprimible",
    "description": "Badge for incompressible images"
  },
  "badge_excluded": {
    "message": "excluido",
    "description": "Badge for excluded images"
  },
  "state_removed": {
    "message": "Eliminado",
    "description": "After-row label for removed images"
  },
  "state_excluded": {
    "message": "Excluido",
    "description": "After-row label for excluded images"
  },
  "btn_removeExclusion": {
    "message": "Eliminar exclusión",
    "description": "Button to unexclude an image"
  },
  "btn_restore": {
    "message": "Restaurar",
    "description": "Button to restore an image"
  },
  "btn_undo": {
    "message": "Deshacer",
    "description": "Button to undo compression"
  },
  "btn_apply": {
    "message": "Aplicar",
    "description": "Button to apply compression"
  },
  "btn_exclude": {
    "message": "Excepción",
    "description": "Button to exclude an image"
  },
  "title_exclude": {
    "message": "Excluir esta imagen permanentemente de la compresión",
    "description": "Exclude button tooltip"
  },
  "title_download": {
    "message": "Descargar imagen",
    "description": "Download button tooltip"
  },
  "label_resize": {
    "message": "Resize",
    "description": "Card control label"
  },
  "label_profile": {
    "message": "Perfil",
    "description": "Card control label"
  },
  "card_keepMeta": {
    "message": "Keep meta",
    "description": "Checkbox label on image card"
  },
  "title_keepMeta": {
    "message": "Conservar metadatos (EXIF, ICC, XMP)",
    "description": "Keep-meta checkbox tooltip"
  },
  "card_shrinkToInline": {
    "message": "shrink to inline",
    "description": "Checkbox label on image card"
  },
  "title_shrinkToInline": {
    "message": "Reducir a resolución en línea (solo en línea/cita)",
    "description": "Shrink-to-inline checkbox tooltip"
  },
  "card_keepDimension": {
    "message": "keep dimension",
    "description": "Checkbox label on image card"
  },
  "title_keepDimension": {
    "message": "Mantener tamaño de visualización en HTML",
    "description": "Keep-dimension checkbox tooltip"
  },
  "card_forcePng": {
    "message": "Force PNG",
    "description": "Checkbox label on image card"
  },
  "title_forcePng": {
    "message": "Force image to save as PNG (JPEG→PNG, PNG stays PNG, no JPEG attempt, result applied even without size reduction)",
    "description": "Force-PNG checkbox tooltip"
  },
  "label_antiAlias": {
    "message": "AntiAlias",
    "description": "Card resize label when in AntiAlias mode"
  },
  "btn_showExcluded": {
    "message": "Mostrar exclusión ($1)",
    "description": "Button to show excluded images, $1=count",
    "placeholders": {
      "count": {
        "content": "$1"
      }
    }
  },
  "loading_showingExclusions": {
    "message": "Mostrando exclusiones...",
    "description": "Loading text"
  },
  "progress_done": {
    "message": "Hecho",
    "description": "Progress complete text"
  },
  "loading_compressing": {
    "message": "Comprimiendo $1...",
    "description": "Loading: image being compressed, $1=name",
    "placeholders": {
      "name": {
        "content": "$1"
      }
    }
  },
  "loading_restoring": {
    "message": "Restaurando $1...",
    "description": "Loading: image being restored, $1=name",
    "placeholders": {
      "name": {
        "content": "$1"
      }
    }
  },
  "alert_errorAt": {
    "message": "Error en $1: $2",
    "description": "Alert: error for image, $1=name $2=error",
    "placeholders": {
      "name": {
        "content": "$1"
      },
      "error": {
        "content": "$2"
      }
    }
  },
  "text_unknown": {
    "message": "Desconocido",
    "description": "Unknown error fallback"
  },
  "unit_bytes": {
    "message": "B",
    "description": "Byte unit suffix"
  },
  "unit_kilobytes": {
    "message": "KB",
    "description": "Kilobyte unit suffix"
  },
  "unit_megabytes": {
    "message": "MB",
    "description": "Megabyte unit suffix"
  },
  "error_noComposeWindow": {
    "message": "No hay ventana de redacción abierta.",
    "description": "popup.js error"
  },
  "loading_preparingSend": {
    "message": "Preparando envío...",
    "description": "confirmSend.js loading text"
  },
  "error_prefix": {
    "message": "Error: $1",
    "description": "confirmSend.js error display, $1=message",
    "placeholders": {
      "message": {
        "content": "$1"
      }
    }
  },
  "alert_noProfilesToExport": {
    "message": "No custom profiles available to export.",
    "description": "options.js alert"
  },
  "alert_invalidFileFormat": {
    "message": "Invalid file format. Expected JSON with profile definitions.",
    "description": "options.js alert"
  },
  "alert_noProfilesImported": {
    "message": "No profiles imported. $1",
    "description": "options.js alert, $1=skipped info",
    "placeholders": {
      "skipped": {
        "content": "$1"
      }
    }
  },
  "alert_profilesImported": {
    "message": "Imported $1 profile(s)",
    "description": "options.js alert, $1=count",
    "placeholders": {
      "count": {
        "content": "$1"
      }
    }
  },
  "text_overwritten": {
    "message": "overwritten",
    "description": "options.js import result"
  },
  "text_skipped": {
    "message": "skipped",
    "description": "options.js import result"
  },
  "alert_importError": {
    "message": "Import error: $1",
    "description": "options.js alert, $1=error message",
    "placeholders": {
      "error": {
        "content": "$1"
      }
    }
  },
  "alert_fileReadError": {
    "message": "Could not read file.",
    "description": "options.js alert"
  },
  "resize_auto": {
    "message": "Auto (PNG: Mitchell, JPG: Lanczos)",
    "description": "Resize algorithm label"
  },
  "resize_lanczos": {
    "message": "Lanczos (highest quality, slow)",
    "description": "Resize algorithm label"
  },
  "resize_mitchell": {
    "message": "Mitchell-Netravali (soft, detail-preserving)",
    "description": "Resize algorithm label"
  },
  "resize_bicubic": {
    "message": "Bicubic (high quality, browser-native)",
    "description": "Resize algorithm label"
  },
  "resize_bilinear": {
    "message": "Bilinear (medium, browser-native)",
    "description": "Resize algorithm label"
  },
  "resize_nearest": {
    "message": "Nearest-Neighbor (pixel art, browser-native)",
    "description": "Resize algorithm label"
  },
  "error_imageNotFound": {
    "message": "Image not found",
    "description": "background.js error"
  },
  "error_fileNotAvailable": {
    "message": "File not available",
    "description": "background.js error"
  },
  "error_imageNotAccessible": {
    "message": "Image not accessible",
    "description": "background.js error"
  },
  "error_composeScriptUnreachable": {
    "message": "Compose script unreachable",
    "description": "background.js error"
  },
  "error_compressionFailedForcePng": {
    "message": "Compression failed (force png)",
    "description": "background.js error"
  },
  "error_noReduction": {
    "message": "No size reduction",
    "description": "background.js error"
  },
  "default_replaceText": {
    "message": "Image removed",
    "description": "Default replacement text for removed images"
  },
  "profile_removeImage": {
    "message": "remove Image",
    "description": "Profile name: remove image (also used as identifier — needs special handling)"
  },
  "profile_doNothing": {
    "message": "do nothing",
    "description": "Profile name: do nothing (also used as identifier — needs special handling)"
  },
  "imgname_quote": {
    "message": "quote-image",
    "description": "Internal name for quote images"
  },
  "imgname_inline": {
    "message": "inline-image",
    "description": "Internal name for inline images"
  },
  "error_notCompressible": {
    "message": "Not compressible",
    "description": "composeScript.js error"
  },
  "error_noCachedResult": {
    "message": "No compressed result in cache",
    "description": "composeScript.js error"
  },
  "error_noEncodingSuccess": {
    "message": "No encoding successful",
    "description": "worker.js error"
  },
  "error_wasmFetchFailed": {
    "message": "WASM fetch failed: $1",
    "description": "worker.js error, $1=status+url",
    "placeholders": {
      "detail": {
        "content": "$1"
      }
    }
  },
  "error_cjpegliMallocFailed": {
    "message": "cjpegli: malloc failed — out of memory?",
    "description": "worker.js error"
  },
  "error_cjpegliEncodeFailed": {
    "message": "cjpegli: encode failed — $1",
    "description": "worker.js error, $1=detail",
    "placeholders": {
      "detail": {
        "content": "$1"
      }
    }
  },
  "error_cjpegliInvalidJpeg": {
    "message": "cjpegli: invalid JPEG header",
    "description": "worker.js error"
  },
  "error_libimagequantNoResult": {
    "message": "libimagequant: no PNG result: $1",
    "description": "worker.js error, $1=keys",
    "placeholders": {
      "keys": {
        "content": "$1"
      }
    }
  },
  "error_workerError": {
    "message": "Worker error: $1",
    "description": "background.js worker error wrapper, $1=message",
    "placeholders": {
      "message": {
        "content": "$1"
      }
    }
  },
  "label_precalc": {
    "message": "Enable pre-compute",
    "description": "Images are compressed and cached in the background as soon as they are inserted into the email. Applying and sending become nearly instant, at the cost of CPU work even if the image is never used."
  },
  "label_workerPoolSize": {
    "message": "Parallel WASM instances:",
    "description": "Number of parallel workers (each with its own set of WASM modules: jpegli, libimagequant, oxipng). 1 = minimal memory usage, more = faster with multiple images."
  }
}
