{
  "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."
  }
}
