{
  "extensionName": {
    "message": "Pedantic Picture Packer"
  },
  "extensionDescription": {
    "message": "使用 JPEGli、PNGquant 和 OxiPNG 进行前沿图像压缩。"
  },
  "options_general": {
    "message": "常规",
    "description": "options.html legend"
  },
  "sendMode_ask": {
    "message": "发送前提醒未处理的项目",
    "description": "Radio label for sendMode=ask"
  },
  "sendMode_auto": {
    "message": "发送前自动执行所有操作，无需确认",
    "description": "Radio label for sendMode=auto"
  },
  "sendMode_manual": {
    "message": "我通过撰写窗口中的按钮手动处理所有事项",
    "description": "Radio label for sendMode=manual"
  },
  "label_minFileSize": {
    "message": "最小文件大小 (KB)：",
    "description": "options.html field label"
  },
  "label_minSavingsPercent": {
    "message": "最小节省 (%)：",
    "description": "options.html field label"
  },
  "label_replaceText": {
    "message": "已删除引用图片的替换文本：",
    "description": "options.html field label"
  },
  "options_attachments": {
    "message": "附件中的图片",
    "description": "options.html legend"
  },
  "options_inline": {
    "message": "内联图片",
    "description": "options.html legend"
  },
  "options_quotes": {
    "message": "引用中的图片",
    "description": "options.html legend"
  },
  "label_compressionProfile": {
    "message": "压缩配置：",
    "description": "options.html field label (appears 3x)"
  },
  "options_editProfile": {
    "message": "编辑压缩配置",
    "description": "options.html legend"
  },
  "btn_delete": {
    "message": "删除",
    "description": "options.html button"
  },
  "label_preserveMeta": {
    "message": "保留元数据 (EXIF, ICC, XMP)",
    "description": "options.html checkbox"
  },
  "label_crossConvert": {
    "message": "允许交叉转换（PNG ↔ JPG），如果能节省空间",
    "description": "options.html checkbox"
  },
  "sublabel_antiAlias": {
    "message": "AntiAlias",
    "description": "options.html sub-label"
  },
  "label_antialiasing": {
    "message": "抗锯齿（系数 1.0–2.0）：",
    "description": "options.html field label"
  },
  "label_scaleToDisplay": {
    "message": "将大图片缩小到显示尺寸（不适用于附件）",
    "description": "options.html checkbox"
  },
  "sublabel_resize": {
    "message": "Resize",
    "description": "options.html sub-label"
  },
  "label_resizeAlgorithm": {
    "message": "缩放算法：",
    "description": "options.html field label"
  },
  "sublabel_jpegli": {
    "message": "JPEGli",
    "description": "options.html sub-label"
  },
  "label_jpegQuality": {
    "message": "JPEG 质量：",
    "description": "options.html field label"
  },
  "label_chromaSubsampling": {
    "message": "色度子采样：",
    "description": "options.html field label"
  },
  "sublabel_pngquant": {
    "message": "PNGquant",
    "description": "options.html sub-label"
  },
  "label_maxColors": {
    "message": "最大颜色数：",
    "description": "options.html field label"
  },
  "label_minQuality": {
    "message": "最低质量：",
    "description": "options.html field label"
  },
  "label_maxQuality": {
    "message": "最高质量：",
    "description": "options.html field label"
  },
  "label_dithering": {
    "message": "抖动：",
    "description": "options.html field label"
  },
  "label_speed": {
    "message": "速度（越高 = 越快）：",
    "description": "options.html field label"
  },
  "sublabel_oxipng": {
    "message": "OxiPNG",
    "description": "options.html sub-label"
  },
  "label_oxipngAlpha": {
    "message": "Alpha 优化（视觉无损）",
    "description": "options.html checkbox"
  },
  "label_optimizationLevel": {
    "message": "优化级别：",
    "description": "options.html field label"
  },
  "btn_saveAs": {
    "message": "另存为：",
    "description": "options.html button"
  },
  "label_name": {
    "message": "名称：",
    "description": "options.html span"
  },
  "placeholder_templateName": {
    "message": "配置名称",
    "description": "options.html input placeholder"
  },
  "btn_exportProfiles": {
    "message": "导出配置",
    "description": "options.html button"
  },
  "btn_importProfiles": {
    "message": "导入配置",
    "description": "options.html button"
  },
  "options_exclusions": {
    "message": "永久排除",
    "description": "options.html legend"
  },
  "label_excludedImages": {
    "message": "已排除的图片：",
    "description": "options.html info text"
  },
  "btn_clearList": {
    "message": "清空列表",
    "description": "options.html button"
  },
  "text_saved": {
    "message": "已保存",
    "description": "options.html saved indicator"
  },
  "btn_resetToDefault": {
    "message": "恢复默认设置",
    "description": "options.html button"
  },
  "appName": {
    "message": "Pedantic Picture Packer",
    "description": "popup.html header"
  },
  "btn_settings": {
    "message": "设置",
    "description": "popup.html settings link"
  },
  "popup_behavior": {
    "message": "行为",
    "description": "popup.html legend"
  },
  "popup_profiles": {
    "message": "配置",
    "description": "popup.html legend"
  },
  "cat_attachment": {
    "message": "附件",
    "description": "Category label: attachment"
  },
  "cat_inline": {
    "message": "内联",
    "description": "Category label: inline"
  },
  "cat_quote": {
    "message": "引用",
    "description": "Category label: quote"
  },
  "popup_resample": {
    "message": "Resample",
    "description": "popup.html legend"
  },
  "text_noImagesFound": {
    "message": "未找到可压缩的图片。",
    "description": "Empty state text"
  },
  "btn_applyAll": {
    "message": "全部应用",
    "description": "popup.html button"
  },
  "text_processing": {
    "message": "正在处理...",
    "description": "Loading overlay default text"
  },
  "confirmSend_title": {
    "message": "图像压缩",
    "description": "confirmSend.html header"
  },
  "btn_cancel": {
    "message": "取消",
    "description": "confirmSend.html button"
  },
  "btn_send": {
    "message": "发送",
    "description": "confirmSend.html button"
  },
  "btn_applyAllAndSend": {
    "message": "全部应用并发送",
    "description": "confirmSend.html button"
  },
  "loading_imagesLoading": {
    "message": "正在加载图片...",
    "description": "Loading text in popup/confirmSend init"
  },
  "col_type": {
    "message": "类型",
    "description": "Param table header"
  },
  "col_size": {
    "message": "大小",
    "description": "Param table header"
  },
  "col_resolution": {
    "message": "分辨率",
    "description": "Param table header"
  },
  "col_inlineResolution": {
    "message": "内联分辨率",
    "description": "Param table header"
  },
  "col_savings": {
    "message": "节省",
    "description": "Param table header"
  },
  "summary_compressed": {
    "message": "已压缩",
    "description": "Summary: N compressed"
  },
  "summary_removed": {
    "message": "已删除",
    "description": "Summary: N removed"
  },
  "summary_excluded": {
    "message": "已排除",
    "description": "Summary: N excluded"
  },
  "summary_saved": {
    "message": "已节省",
    "description": "Summary: N bytes saved"
  },
  "summary_noChanges": {
    "message": "无更改",
    "description": "Summary fallback"
  },
  "badge_incompressible": {
    "message": "不可压缩",
    "description": "Badge for incompressible images"
  },
  "badge_excluded": {
    "message": "已排除",
    "description": "Badge for excluded images"
  },
  "state_removed": {
    "message": "已删除",
    "description": "After-row label for removed images"
  },
  "state_excluded": {
    "message": "已排除",
    "description": "After-row label for excluded images"
  },
  "btn_removeExclusion": {
    "message": "移除排除",
    "description": "Button to unexclude an image"
  },
  "btn_restore": {
    "message": "恢复",
    "description": "Button to restore an image"
  },
  "btn_undo": {
    "message": "撤销",
    "description": "Button to undo compression"
  },
  "btn_apply": {
    "message": "应用",
    "description": "Button to apply compression"
  },
  "btn_exclude": {
    "message": "排除",
    "description": "Button to exclude an image"
  },
  "title_exclude": {
    "message": "从压缩中永久排除此图片",
    "description": "Exclude button tooltip"
  },
  "title_download": {
    "message": "下载图片",
    "description": "Download button tooltip"
  },
  "label_resize": {
    "message": "Resize",
    "description": "Card control label"
  },
  "label_profile": {
    "message": "配置",
    "description": "Card control label"
  },
  "card_keepMeta": {
    "message": "Keep meta",
    "description": "Checkbox label on image card"
  },
  "title_keepMeta": {
    "message": "保留元数据 (EXIF, ICC, XMP)",
    "description": "Keep-meta checkbox tooltip"
  },
  "card_shrinkToInline": {
    "message": "shrink to inline",
    "description": "Checkbox label on image card"
  },
  "title_shrinkToInline": {
    "message": "缩小到内联分辨率（仅限内联/引用）",
    "description": "Shrink-to-inline checkbox tooltip"
  },
  "card_keepDimension": {
    "message": "keep dimension",
    "description": "Checkbox label on image card"
  },
  "title_keepDimension": {
    "message": "在 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": "显示排除项 ($1)",
    "description": "Button to show excluded images, $1=count",
    "placeholders": {
      "count": {
        "content": "$1"
      }
    }
  },
  "loading_showingExclusions": {
    "message": "正在显示排除项...",
    "description": "Loading text"
  },
  "progress_done": {
    "message": "完成",
    "description": "Progress complete text"
  },
  "loading_compressing": {
    "message": "正在压缩 $1...",
    "description": "Loading: image being compressed, $1=name",
    "placeholders": {
      "name": {
        "content": "$1"
      }
    }
  },
  "loading_restoring": {
    "message": "正在恢复 $1...",
    "description": "Loading: image being restored, $1=name",
    "placeholders": {
      "name": {
        "content": "$1"
      }
    }
  },
  "alert_errorAt": {
    "message": "$1 出错: $2",
    "description": "Alert: error for image, $1=name $2=error",
    "placeholders": {
      "name": {
        "content": "$1"
      },
      "error": {
        "content": "$2"
      }
    }
  },
  "text_unknown": {
    "message": "未知",
    "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": "未打开撰写窗口。",
    "description": "popup.js error"
  },
  "loading_preparingSend": {
    "message": "正在准备发送...",
    "description": "confirmSend.js loading text"
  },
  "error_prefix": {
    "message": "错误: $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."
  }
}
