{
  "extensionName": {
    "message": "Pedantic Picture Packer"
  },
  "extensionDescription": {
    "message": "Compressão de imagem topo de gama com JPEGli, PNGquant e OxiPNG."
  },
  "options_general": {
    "message": "Geral",
    "description": "options.html legend"
  },
  "sendMode_ask": {
    "message": "Lembrar itens não processados antes de enviar",
    "description": "Radio label for sendMode=ask"
  },
  "sendMode_auto": {
    "message": "Executar todas as ações sem confirmação antes de enviar",
    "description": "Radio label for sendMode=auto"
  },
  "sendMode_manual": {
    "message": "Trato de tudo manualmente através do botão na janela de composição",
    "description": "Radio label for sendMode=manual"
  },
  "label_minFileSize": {
    "message": "Tamanho mín. ficheiro (KB):",
    "description": "options.html field label"
  },
  "label_minSavingsPercent": {
    "message": "Poupança mín. (%):",
    "description": "options.html field label"
  },
  "label_replaceText": {
    "message": "Texto substituto para imagens de citação removidas:",
    "description": "options.html field label"
  },
  "options_attachments": {
    "message": "Imagens em anexo",
    "description": "options.html legend"
  },
  "options_inline": {
    "message": "Imagens inline",
    "description": "options.html legend"
  },
  "options_quotes": {
    "message": "Imagens em citações",
    "description": "options.html legend"
  },
  "label_compressionProfile": {
    "message": "Perfil de compressão:",
    "description": "options.html field label (appears 3x)"
  },
  "options_editProfile": {
    "message": "Editar perfil de compressão",
    "description": "options.html legend"
  },
  "btn_delete": {
    "message": "Eliminar",
    "description": "options.html button"
  },
  "label_preserveMeta": {
    "message": "Preservar metadados (EXIF, ICC, XMP)",
    "description": "options.html checkbox"
  },
  "label_crossConvert": {
    "message": "Permitir conversão cruzada (PNG ↔ JPG) se poupar espaço",
    "description": "options.html checkbox"
  },
  "sublabel_antiAlias": {
    "message": "AntiAlias",
    "description": "options.html sub-label"
  },
  "label_antialiasing": {
    "message": "Antialiasing (fator 1.0–2.0):",
    "description": "options.html field label"
  },
  "label_scaleToDisplay": {
    "message": "Reduzir imagens grandes ao tamanho de exibição (não se aplica a anexos)",
    "description": "options.html checkbox"
  },
  "sublabel_resize": {
    "message": "Resize",
    "description": "options.html sub-label"
  },
  "label_resizeAlgorithm": {
    "message": "Algoritmo de redimensionamento:",
    "description": "options.html field label"
  },
  "sublabel_jpegli": {
    "message": "JPEGli",
    "description": "options.html sub-label"
  },
  "label_jpegQuality": {
    "message": "Qualidade JPEG:",
    "description": "options.html field label"
  },
  "label_chromaSubsampling": {
    "message": "Subamostragem de crominância:",
    "description": "options.html field label"
  },
  "sublabel_pngquant": {
    "message": "PNGquant",
    "description": "options.html sub-label"
  },
  "label_maxColors": {
    "message": "Máx. cores:",
    "description": "options.html field label"
  },
  "label_minQuality": {
    "message": "Qualidade mín.:",
    "description": "options.html field label"
  },
  "label_maxQuality": {
    "message": "Qualidade máx.:",
    "description": "options.html field label"
  },
  "label_dithering": {
    "message": "Dithering:",
    "description": "options.html field label"
  },
  "label_speed": {
    "message": "Velocidade (maior = mais rápido):",
    "description": "options.html field label"
  },
  "sublabel_oxipng": {
    "message": "OxiPNG",
    "description": "options.html sub-label"
  },
  "label_oxipngAlpha": {
    "message": "Otimização alfa (visualmente sem perdas)",
    "description": "options.html checkbox"
  },
  "label_optimizationLevel": {
    "message": "Nível de otimização:",
    "description": "options.html field label"
  },
  "btn_saveAs": {
    "message": "Guardar como:",
    "description": "options.html button"
  },
  "label_name": {
    "message": "Nome:",
    "description": "options.html span"
  },
  "placeholder_templateName": {
    "message": "Nome do perfil",
    "description": "options.html input placeholder"
  },
  "btn_exportProfiles": {
    "message": "Exportar perfis",
    "description": "options.html button"
  },
  "btn_importProfiles": {
    "message": "Importar perfis",
    "description": "options.html button"
  },
  "options_exclusions": {
    "message": "Exclusões permanentes",
    "description": "options.html legend"
  },
  "label_excludedImages": {
    "message": "Imagens excluídas:",
    "description": "options.html info text"
  },
  "btn_clearList": {
    "message": "Limpar lista",
    "description": "options.html button"
  },
  "text_saved": {
    "message": "Guardado",
    "description": "options.html saved indicator"
  },
  "btn_resetToDefault": {
    "message": "Restaurar predefinições",
    "description": "options.html button"
  },
  "appName": {
    "message": "Pedantic Picture Packer",
    "description": "popup.html header"
  },
  "btn_settings": {
    "message": "Definições",
    "description": "popup.html settings link"
  },
  "popup_behavior": {
    "message": "Comportamento",
    "description": "popup.html legend"
  },
  "popup_profiles": {
    "message": "Perfis",
    "description": "popup.html legend"
  },
  "cat_attachment": {
    "message": "Anexo",
    "description": "Category label: attachment"
  },
  "cat_inline": {
    "message": "Inline",
    "description": "Category label: inline"
  },
  "cat_quote": {
    "message": "Citação",
    "description": "Category label: quote"
  },
  "popup_resample": {
    "message": "Resample",
    "description": "popup.html legend"
  },
  "text_noImagesFound": {
    "message": "Nenhuma imagem encontrada para comprimir.",
    "description": "Empty state text"
  },
  "btn_applyAll": {
    "message": "Aplicar tudo",
    "description": "popup.html button"
  },
  "text_processing": {
    "message": "A processar...",
    "description": "Loading overlay default text"
  },
  "confirmSend_title": {
    "message": "Compressão de imagem",
    "description": "confirmSend.html header"
  },
  "btn_cancel": {
    "message": "Cancelar",
    "description": "confirmSend.html button"
  },
  "btn_send": {
    "message": "Enviar",
    "description": "confirmSend.html button"
  },
  "btn_applyAllAndSend": {
    "message": "Aplicar tudo e enviar",
    "description": "confirmSend.html button"
  },
  "loading_imagesLoading": {
    "message": "A carregar imagens...",
    "description": "Loading text in popup/confirmSend init"
  },
  "col_type": {
    "message": "Tipo",
    "description": "Param table header"
  },
  "col_size": {
    "message": "Tamanho",
    "description": "Param table header"
  },
  "col_resolution": {
    "message": "Resolução",
    "description": "Param table header"
  },
  "col_inlineResolution": {
    "message": "Resolução inline",
    "description": "Param table header"
  },
  "col_savings": {
    "message": "Poupança",
    "description": "Param table header"
  },
  "summary_compressed": {
    "message": "comprimido",
    "description": "Summary: N compressed"
  },
  "summary_removed": {
    "message": "removido",
    "description": "Summary: N removed"
  },
  "summary_excluded": {
    "message": "excluído",
    "description": "Summary: N excluded"
  },
  "summary_saved": {
    "message": "poupado",
    "description": "Summary: N bytes saved"
  },
  "summary_noChanges": {
    "message": "Sem alterações",
    "description": "Summary fallback"
  },
  "badge_incompressible": {
    "message": "incompressível",
    "description": "Badge for incompressible images"
  },
  "badge_excluded": {
    "message": "excluído",
    "description": "Badge for excluded images"
  },
  "state_removed": {
    "message": "Removido",
    "description": "After-row label for removed images"
  },
  "state_excluded": {
    "message": "Excluído",
    "description": "After-row label for excluded images"
  },
  "btn_removeExclusion": {
    "message": "Remover exclusão",
    "description": "Button to unexclude an image"
  },
  "btn_restore": {
    "message": "Restaurar",
    "description": "Button to restore an image"
  },
  "btn_undo": {
    "message": "Desfazer",
    "description": "Button to undo compression"
  },
  "btn_apply": {
    "message": "Aplicar",
    "description": "Button to apply compression"
  },
  "btn_exclude": {
    "message": "Exceção",
    "description": "Button to exclude an image"
  },
  "title_exclude": {
    "message": "Excluir permanentemente esta imagem da compressão",
    "description": "Exclude button tooltip"
  },
  "title_download": {
    "message": "Descarregar imagem",
    "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": "Preservar metadados (EXIF, ICC, XMP)",
    "description": "Keep-meta checkbox tooltip"
  },
  "card_shrinkToInline": {
    "message": "shrink to inline",
    "description": "Checkbox label on image card"
  },
  "title_shrinkToInline": {
    "message": "Reduzir para resolução inline (apenas inline/citação)",
    "description": "Shrink-to-inline checkbox tooltip"
  },
  "card_keepDimension": {
    "message": "keep dimension",
    "description": "Checkbox label on image card"
  },
  "title_keepDimension": {
    "message": "Manter tamanho de exibição no 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 exclusão ($1)",
    "description": "Button to show excluded images, $1=count",
    "placeholders": {
      "count": {
        "content": "$1"
      }
    }
  },
  "loading_showingExclusions": {
    "message": "A mostrar exclusões...",
    "description": "Loading text"
  },
  "progress_done": {
    "message": "Concluído",
    "description": "Progress complete text"
  },
  "loading_compressing": {
    "message": "A comprimir $1...",
    "description": "Loading: image being compressed, $1=name",
    "placeholders": {
      "name": {
        "content": "$1"
      }
    }
  },
  "loading_restoring": {
    "message": "A restaurar $1...",
    "description": "Loading: image being restored, $1=name",
    "placeholders": {
      "name": {
        "content": "$1"
      }
    }
  },
  "alert_errorAt": {
    "message": "Erro em $1: $2",
    "description": "Alert: error for image, $1=name $2=error",
    "placeholders": {
      "name": {
        "content": "$1"
      },
      "error": {
        "content": "$2"
      }
    }
  },
  "text_unknown": {
    "message": "Desconhecido",
    "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": "Nenhuma janela de composição aberta.",
    "description": "popup.js error"
  },
  "loading_preparingSend": {
    "message": "A preparar envio...",
    "description": "confirmSend.js loading text"
  },
  "error_prefix": {
    "message": "Erro: $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."
  }
}
