import type { TranslationKeys } from "./en.js"; export const zhTW: TranslationKeys = { common: { upload: "從電腦上傳", process: "處理", download: "下載", cancel: "取消", save: "儲存", delete: "刪除", settings: "設定", search: "搜尋工具...", dropFiles: "拖放檔案至此處或點擊上傳按鈕", loading: "載入中...", error: "發生錯誤", confirm: "確認", close: "關閉", back: "返回", next: "下一步", clear: "清除", copy: "複製", copied: "已複製!", noResults: "找不到結果", showLess: "收合", showMore: "展開{count}項", experimental: "實驗性", enabled: "已啟用", disabled: "已停用", rename: "重新命名", edit: "編輯", actions: "動作", create: "建立", or: "或", goHome: "回到首頁", somethingWentWrong: "出了點問題", unexpectedError: "發生了非預期的錯誤。", retry: "重試", privacyPolicy: "隱私權政策", pageNotFound: "Page not found", pageNotFoundDescription: "The page you are looking for does not exist or has been moved.", }, categories: { essentials: "基本工具", adjustments: "調整", enhance: "Enhance & AI", watermark: "浮水印與覆疊", layout: "版面與構圖", utilities: "實用工具", optimization: "最佳化", format: "格式與轉換", "video-edit": "Video", "video-convert": "Convert", "video-effects": "Effects & Compose", "video-subtitles": "Subtitles", "video-metadata": "Metadata", "audio-edit": "Edit", "audio-convert": "Convert", "audio-effects": "Effects & Compose", "audio-metadata": "Metadata", "pdf-organize": "Organize", "pdf-edit": "Edit & Annotate", "pdf-security": "Security", "pdf-optimize": "Optimize", "doc-convert": "Convert", data: "Data Files", archives: "Archives", }, modalities: { image: "Image", video: "Video", audio: "Audio", documentsAndFiles: "Documents & Files", }, tools: { resize: { name: "調整大小", description: "依像素、百分比或社群媒體預設調整大小", }, crop: { name: "裁切", description: "自由裁切、預設比例、形狀裁切" }, rotate: { name: "旋轉與翻轉", description: "旋轉、翻轉和校正影像" }, convert: { name: "轉檔", description: "在影像格式之間轉換" }, compress: { name: "壓縮", description: "依品質或目標大小縮減檔案體積" }, "optimize-for-web": { name: "網頁最佳化", description: "透過格式轉換、品質控制和即時預覽來最佳化網頁影像", }, "strip-metadata": { name: "移除中繼資料", description: "移除EXIF、GPS和相機資訊", }, "edit-metadata": { name: "編輯中繼資料", description: "編輯EXIF、IPTC、XMP、GPS、關鍵字和日期", }, "bulk-rename": { name: "批次重新命名", description: "使用模式批次重新命名多個檔案" }, "image-to-pdf": { name: "影像轉PDF", description: "將多張影像合併為PDF文件", }, "pdf-to-image": { name: "PDF轉影像", description: "將PDF頁面轉換為影像" }, favicon: { name: "Favicon產生器", description: "產生所有Favicon和應用程式圖示尺寸", }, "adjust-colors": { name: "調整色彩", description: "亮度、對比度、曝光度、飽和度、色溫、銳利度和效果", }, sharpening: { name: "銳利化", description: "自適應、遮色片銳利化和高通銳利化,含預設", }, "replace-color": { name: "取代與反轉色彩", description: "取代特定色彩或反轉", }, "color-blindness": { name: "色盲模擬", description: "模擬不同類型色覺缺陷下影像的顯示效果", }, "remove-background": { name: "移除背景", description: "AI智慧去背", }, upscale: { name: "影像放大", description: "AI超解析度增強" }, "erase-object": { name: "物件擦除", description: "用AI移除不需要的物件" }, ocr: { name: "OCR / 文字擷取", description: "透過AI精準辨識擷取影像中的文字", }, "ocr-pdf": { name: "PDF OCR", description: "使用AI驅動的OCR從PDF文件中擷取文字", }, "blur-faces": { name: "臉部/隱私模糊", description: "自動偵測並模糊臉部和敏感資訊", }, "enhance-faces": { name: "臉部增強", description: "透過AI修復和增強臉部", }, "smart-crop": { name: "智慧裁切", description: "基於主體、臉部或邊緣修剪的智慧裁切", }, "image-enhancement": { name: "影像增強", description: "一鍵智慧最佳化曝光、對比度、色彩和銳利度", }, "noise-removal": { name: "降噪", description: "AI智慧降噪去顆粒", }, "red-eye-removal": { name: "紅眼消除", description: "AI智慧偵測並修正閃光燈照片中的紅眼", }, "restore-photo": { name: "相片修復", description: "透過AI修復老照片上的刮傷、撕裂和損壞", }, "content-aware-resize": { name: "內容感知縮放", description: "智慧縮放影像同時保護重要內容", }, "ai-canvas-expand": { name: "AI畫布擴展", description: "使用AI填充擴展畫布", }, colorize: { name: "AI上色", description: "使用AI深度學習模型將黑白照片轉為彩色", }, "passport-photo": { name: "證件照", description: "自動偵測臉部並產生符合政府規範的護照、簽證和證件照", }, "transcribe-audio": { name: "音訊轉文字", description: "使用AI轉錄將語音轉換為文字", }, "auto-subtitles": { name: "自動字幕", description: "從影片音軌產生字幕檔案", }, "transparency-fixer": { name: "PNG透明修復", description: "一鍵修復偽透明PNG影像", }, "background-replace": { name: "替換背景", description: "將圖像背景替換為純色", }, "blur-background": { name: "模糊背景", description: "模糊背景同時保持主體清晰", }, "watermark-text": { name: "文字浮水印", description: "加入文字浮水印覆疊" }, "watermark-image": { name: "影像浮水印", description: "覆疊Logo作為浮水印" }, "text-overlay": { name: "文字覆疊", description: "在影像上加入樣式文字" }, compose: { name: "影像合成", description: "透過位置和透明度分層疊加影像" }, "meme-generator": { name: "Meme產生器", description: "使用熱門範本或自己的影像製作Meme。經典Impact風格文字,可自訂字型、色彩和位置。", }, info: { name: "影像資訊", description: "檢視所有中繼資料和影像屬性" }, compare: { name: "影像比較", description: "兩張影像的並排比較" }, "find-duplicates": { name: "尋找重複", description: "偵測重複和近似重複的影像", }, "color-palette": { name: "色彩擷取", description: "從影像中擷取主色調", }, "qr-generate": { name: "QR碼產生器", description: "產生自訂色彩、圖案和Logo的QR碼", }, "html-to-image": { name: "HTML to Image", description: "Capture webpages as high-quality images", }, "barcode-read": { name: "條碼讀取器", description: "掃描影像中的QR碼、條碼和二維碼", }, collage: { name: "拼貼畫 / 格線", description: "使用25+範本將影像組合為精美的格線拼貼畫", }, stitch: { name: "拼接 / 合併", description: "將影像並排、堆疊或格線拼接", }, split: { name: "影像分割", description: "依格線或像素尺寸分割影像,支援即時預覽", }, border: { name: "邊框與相框", description: "加入邊框、內距、圓角和陰影,支援一鍵預設", }, beautify: { name: "美化截圖", description: "為截圖加入漸層背景、裝置外框、陰影和社群媒體尺寸", }, "circle-crop": { name: "Circle Crop", description: "Crop image to a centered circle with transparent corners", }, duotone: { name: "Duotone", description: "Apply a two-color duotone effect with custom shadow and highlight colors", }, "image-pad": { name: "Image Pad", description: "Pad image to a target aspect ratio with a solid color background", }, pixelate: { name: "Pixelate", description: "Apply a pixelation effect to the full image or a specific region", }, vignette: { name: "Vignette", description: "Add a vignette effect with adjustable strength and color", }, "gif-webp": { name: "GIF/WebP Converter", description: "Convert animated GIF to WebP and vice versa, preserving all frames", }, histogram: { name: "Histogram", description: "Generate an RGB histogram chart from an image", }, "lqip-placeholder": { name: "LQIP Placeholder", description: "Generate a tiny low-quality image placeholder with base64 data URI", }, "sprite-sheet": { name: "Sprite Sheet", description: "Combine multiple images into a single sprite sheet grid", }, "svg-to-raster": { name: "SVG轉點陣圖", description: "將SVG轉換為PNG、JPEG、WebP、AVIF、TIFF、GIF或HEIF,支援自訂縮放和DPI", }, vectorize: { name: "影像轉SVG", description: "將影像轉換為可縮放向量圖形", }, "gif-tools": { name: "GIF工具", description: "縮放、最佳化、調速、倒轉、擷取影格和旋轉動態GIF", }, "image-to-base64": { name: "影像轉Base64", description: "將影像轉換為Base64字串,嵌入HTML、CSS等", }, "barcode-generate": { name: "Barcode Generator", description: "Generate barcodes in Code 128, EAN-13, UPC-A, Code 39, ITF-14, and Data Matrix", }, "chart-maker": { name: "Chart Maker", description: "Create bar, line, or pie charts from CSV or JSON data", }, "convert-video": { name: "Convert Video", description: "Convert videos between MP4, MOV, and WebM", }, "compress-video": { name: "Compress Video", description: "Shrink video file size with quality control", }, "trim-video": { name: "Trim Video", description: "Cut a clip out of a video", }, "mute-video": { name: "Mute Video", description: "Remove the audio track from a video", }, "video-to-gif": { name: "Video to GIF", description: "Turn a video clip into an animated GIF", }, "resize-video": { name: "Resize Video", description: "Scale a video to a new resolution or preset size", }, "crop-video": { name: "Crop Video", description: "Crop a region out of a video", }, "rotate-video": { name: "Rotate Video", description: "Rotate or flip a video", }, "change-fps": { name: "Change FPS", description: "Change the frame rate of a video", }, "video-color": { name: "Video Color", description: "Adjust brightness, contrast, saturation, and gamma", }, "video-speed": { name: "Video Speed", description: "Speed up or slow down a video", }, "reverse-video": { name: "Reverse Video", description: "Play a video clip backwards", }, "video-loudnorm": { name: "Normalize Audio", description: "Normalize video audio volume to broadcast standard", }, "aspect-pad": { name: "Aspect Pad", description: "Add solid-color bars to fit a target aspect ratio", }, "blur-pad": { name: "Blur Pad", description: "Fill bars with a blurred copy of the video", }, "watermark-video": { name: "Watermark Video", description: "Burn a text watermark onto video frames", }, "stabilize-video": { name: "Stabilize Video", description: "Reduce camera shake with two-pass stabilization", }, "gif-to-video": { name: "GIF to Video", description: "Convert an animated GIF into an MP4 or WebM video", }, "video-to-webp": { name: "Video to WebP", description: "Convert a video clip into an animated WebP image", }, "video-to-frames": { name: "Video to Frames", description: "Extract frames from a video as a ZIP of images", }, "merge-videos": { name: "Merge Videos", description: "Join multiple video clips into one file", }, "replace-audio": { name: "Replace Audio", description: "Swap the audio track of a video with another file", }, "burn-subtitles": { name: "Burn Subtitles", description: "Permanently render subtitles onto video frames", }, "embed-subtitles": { name: "Embed Subtitles", description: "Mux a subtitle track into the video container", }, "extract-subtitles": { name: "Extract Subtitles", description: "Pull the subtitle track out of a video as an SRT file", }, "images-to-video": { name: "Images to Video", description: "Turn a set of images into a slideshow video", }, "video-metadata": { name: "Clean Video Metadata", description: "Strip metadata from a video and report what was found", }, "convert-audio": { name: "Convert Audio", description: "Convert audio between MP3, WAV, OGG, and more", }, "trim-audio": { name: "Trim Audio", description: "Cut a section out of an audio file", }, "extract-audio": { name: "Extract Audio", description: "Pull the audio track out of a video", }, "volume-adjust": { name: "Volume Adjust", description: "Increase or decrease audio volume by a fixed gain", }, "normalize-audio": { name: "Normalize Audio", description: "Even out loudness to broadcast standard levels", }, "fade-audio": { name: "Fade Audio", description: "Add fade-in and fade-out effects to audio", }, "reverse-audio": { name: "Reverse Audio", description: "Play audio backwards", }, "audio-speed": { name: "Audio Speed", description: "Speed up or slow down audio playback", }, "pitch-shift": { name: "Pitch Shift", description: "Raise or lower pitch by semitones without changing speed", }, "audio-channels": { name: "Audio Channels", description: "Convert between mono, stereo, or swap left and right channels", }, "silence-removal": { name: "Silence Removal", description: "Strip silent sections from audio", }, "noise-reduction": { name: "Noise Reduction", description: "Reduce background noise with FFT-based denoising", }, "merge-audio": { name: "Merge Audio", description: "Combine multiple audio files into one", }, "split-audio": { name: "Split Audio", description: "Split audio by time, equal parts, or silence detection", }, "ringtone-maker": { name: "Ringtone Maker", description: "Create a ringtone clip from any audio file", }, "waveform-image": { name: "Waveform Image", description: "Generate a waveform visualization as a PNG image", }, "audio-metadata": { name: "Audio Metadata", description: "View, edit, or strip audio tags (ID3)", }, "merge-pdf": { name: "Merge PDFs", description: "Combine multiple PDFs into one", }, "split-pdf": { name: "Split PDF", description: "Extract pages or split into parts", }, "compress-pdf": { name: "Compress PDF", description: "Shrink PDF file size", }, "rotate-pdf": { name: "Rotate PDF", description: "Rotate pages in a PDF", }, "convert-document": { name: "Convert Document", description: "Convert between Word, OpenDocument, RTF, and plain text formats", }, "convert-presentation": { name: "Convert Presentation", description: "Convert between PowerPoint and OpenDocument presentation formats", }, "convert-spreadsheet": { name: "Convert Spreadsheet", description: "Convert between Excel, OpenDocument, and CSV formats. Multi-sheet workbooks export the first sheet to CSV.", }, "excel-to-pdf": { name: "Excel to PDF", description: "Convert spreadsheets to PDF. Wide sheets may paginate across multiple pages.", }, "word-to-pdf": { name: "Word to PDF", description: "Convert Word documents to PDF", }, "extract-pages": { name: "Extract Pages", description: "Pull selected pages into a new PDF", }, "remove-pages": { name: "Remove Pages", description: "Delete specific pages from a PDF", }, "organize-pdf": { name: "Organize PDF", description: "Reorder pages with an explicit page order", }, "protect-pdf": { name: "Protect PDF", description: "Add password protection (AES-256 encryption)", }, "unlock-pdf": { name: "Unlock PDF", description: "Remove password protection from a PDF", }, "repair-pdf": { name: "Repair PDF", description: "Attempt to repair a damaged or corrupted PDF", }, "linearize-pdf": { name: "Web-Optimize PDF", description: "Linearize a PDF for fast web viewing", }, "grayscale-pdf": { name: "Grayscale PDF", description: "Convert all colors to grayscale", }, "pdfa-convert": { name: "PDF/A Convert", description: "Convert to archival PDF/A-2", }, "crop-pdf": { name: "Crop PDF", description: "Crop all pages with a uniform margin", }, "nup-pdf": { name: "N-up PDF", description: "Arrange multiple pages per sheet", }, "booklet-pdf": { name: "Booklet PDF", description: "Arrange pages for folding into a booklet", }, "watermark-pdf": { name: "Watermark PDF", description: "Add a text watermark to every page", }, "pdf-page-numbers": { name: "PDF Page Numbers", description: "Add page numbers to every page", }, "flatten-pdf": { name: "Flatten PDF", description: "Bake forms and annotations into page content", }, "redact-pdf": { name: "Redact PDF", description: "Permanently remove text occurrences (verified true redaction)", }, "pdf-to-text": { name: "PDF to Text", description: "Extract plain text from a PDF", }, "pdf-to-word": { name: "PDF to Word", description: "Best for text-based PDFs; scanned pages need OCR", }, "pdf-metadata": { name: "PDF Metadata", description: "Read and write PDF document metadata", }, "powerpoint-to-pdf": { name: "PowerPoint to PDF", description: "Convert presentations to PDF", }, "html-to-pdf": { name: "HTML to PDF", description: "Convert an HTML file to PDF. Remote resources are disabled for privacy.", }, "markdown-to-docx": { name: "Markdown to Word", description: "Convert a Markdown file to a Word document (DOCX)", }, "markdown-to-html": { name: "Markdown to HTML", description: "Convert a Markdown file to a standalone HTML page. Remote images in the source are left as-is in the output.", }, "markdown-to-pdf": { name: "Markdown to PDF", description: "Convert a Markdown file to a styled PDF. Remote resources are disabled for privacy.", }, "epub-convert": { name: "Convert EPUB", description: "Convert an EPUB to PDF, DOCX, HTML, or Markdown. Remote resources inside the book are not fetched.", }, "to-epub": { name: "Convert to EPUB", description: "Convert Word, Markdown, HTML, or plain text files to EPUB", }, "csv-excel": { name: "CSV to Excel", description: "Convert between CSV and Excel (XLSX), both directions", }, "csv-json": { name: "CSV to JSON", description: "Convert between CSV and JSON, both directions", }, "json-xml": { name: "JSON to XML", description: "Convert between JSON and XML, both directions", }, "split-csv": { name: "Split CSV", description: "Split a CSV into smaller files by row count", }, "merge-csvs": { name: "Merge CSVs", description: "Combine multiple CSV or TSV files with matching columns into one", }, "yaml-json": { name: "YAML / JSON", description: "Convert between YAML and JSON, both directions", }, "xml-to-csv": { name: "XML to CSV", description: "Extract repeating elements from XML into a CSV table", }, "create-zip": { name: "Create ZIP", description: "Bundle multiple files into a single ZIP archive", }, "extract-zip": { name: "Extract ZIP", description: "Safely extract files from a ZIP archive with bomb protection. Single-file archives return the file directly.", }, pipeline: { name: "Pipeline建構器", description: "將多個工具串聯為工作流程" }, processing: { canceled: "Processing canceled" }, mediaPlayer: { unsupported: "Your browser does not support this media format.", }, documentView: { loadFailed: "Failed to load document.", previousPage: "Previous page", nextPage: "Next page", }, }, toolSettings: { compress: { compressionMode: "壓縮模式", targetSize: "目標大小", quality: "品質", smallestFile: "最小檔案", bestQuality: "最佳品質", submit: "壓縮", submitBatch: "壓縮({count}個檔案)", progressLabel: "壓縮中", original: "原始:{size} KB", processed: "處理後:{size} KB", saved: "節省:{percent}%", }, resize: { customSize: "自訂大小", scale: "縮放", presets: "預設", contentAware: "內容感知", widthPx: "寬度(px)", heightPx: "高度(px)", fitMode: "適應模式", cropToFit: "裁切適應", fitInside: "內部適應", stretch: "延展", limitToOriginalSize: "限制為原始大小", limitToOriginalSizeHint: "如果影像已經小於目標尺寸,保持原樣而不放大", scalePercent: "縮放(%)", resizeToSquare: "調整為正方形", protectFaces: "保護臉部", smoothing: "平滑度", edgeSensitivity: "邊緣敏感度", submit: "調整大小", submitBatch: "調整大小({count}個檔案)", progressLabel: "調整大小中", }, crop: { aspectRatio: "長寬比", custom: "自訂", positionAndSize: "位置與大小", ruleOfThirds: "三分法則", leftOffsetPx: "左偏移(px)", topOffsetPx: "上偏移(px)", submit: "裁切", submitBatch: "裁切({count}個檔案)", progressLabel: "裁切中", }, rotate: { rotate: "旋轉", angle: "角度", straighten: "校正", flip: "翻轉", horizontal: "水平", vertical: "垂直", resetAllChanges: "重設所有變更", submit: "套用", submitBatch: "套用({count}個檔案)", progressLabel: "套用中", }, convert: { targetFormat: "目標格式", sourceFormat: "來源格式", quality: "品質", submit: "轉檔", submitBatch: "轉檔({count}個檔案)", progressLabel: "轉檔中", }, "optimize-for-web": { outputFormat: "輸出格式", quality: "品質", smallestFile: "最小檔案", bestQuality: "最佳品質", maxDimensions: "最大尺寸", maxWidth: "最大寬度", maxHeight: "最大高度", stripMetadata: "移除中繼資料", sizeComparison: "大小比較", optimized: "最佳化後:", smaller: "縮小了{percent}%", larger: "增大了{percent}%", submit: "處理並下載", submitBatch: "處理並下載({count}個檔案)", progressLabel: "最佳化中", }, "strip-metadata": { currentMetadata: "目前中繼資料", readingMetadata: "正在讀取中繼資料...", noMetadataFound: "此影像中找不到中繼資料。", removeAllMetadata: "移除所有中繼資料", selectSpecific: "或選擇特定中繼資料:", stripExif: "移除EXIF(相機資訊、日期、曝光)", stripGps: "移除GPS(位置資料)", stripIcc: "移除ICC(色彩描述檔)", stripXmp: "移除XMP(延伸中繼資料)", locationFound: "發現位置資訊", locationWarning: "此影像包含您的精確位置資訊。建議在分享前移除GPS資料。", metadataSections: "找到{count}個中繼資料區段", metadataSectionsPlural: "找到{count}個中繼資料區段", metadataRemoved: "已移除中繼資料:{size} KB", submit: "移除中繼資料", progressLabel: "正在移除中繼資料", }, "edit-metadata": { readingMetadata: "正在讀取中繼資料...", couldNotReadMetadata: "無法讀取中繼資料,欄位將從空白開始。", basicInfo: "基本資訊", description: "描述", artist: "藝術家", copyright: "著作權", software: "軟體", iptc: "IPTC", title: "標題", headline: "標題行", city: "城市", stateProvince: "州/省", country: "國家", dateAndTime: "日期與時間", editDates: "編輯日期", shiftAllDates: "批次偏移日期", dateModified: "修改日期", dateTaken: "拍攝日期", shiftHint: "將所有日期欄位偏移一定量(適用於時區校正)", direction: "方向", forward: "+ 向前", backward: "- 向後", hoursMinutes: "時:分", locationGps: "位置(GPS)", locationDataFound: "找到位置資料", noGpsData: "無GPS資料。在下方加入座標。", latitude: "緯度", longitude: "經度", altitudeMeters: "海拔(公尺)", removeAllGpsData: "移除所有GPS資料", keywords: "關鍵字", addKeywordPlaceholder: "加入關鍵字並按Enter", addToExisting: "附加到現有", replaceAll: "全部取代", allMetadata: "所有中繼資料", templates: "範本", templateNamePlaceholder: "範本名稱", uploadPrompt: "上傳影像以編輯其中繼資料。", changes: "{count}項變更:", modified: "{count}項已修改", removed: "{count}項已移除", gpsCleared: "GPS已清除", gpsAdded: "GPS已加入", datesShifted: "日期已偏移", submit: "套用中繼資料", progressLabel: "正在寫入中繼資料", }, "bulk-rename": { pattern: "模式", patternHint: "變數:{{index}}、{{padded}}、{{original}}", startIndex: "起始索引", preview: "預覽", andMore: "...以及{count}項更多", renaming: "重新命名中...", submit: "重新命名{count}個檔案", zipDownloaded: "ZIP下載成功", }, "image-to-pdf": { imageCount: "{count}張影像將轉換為{mode}", imageCountPlural: "{count}張影像將轉換為{mode}", singlePdfMode: "單一PDF,每頁一張影像", separatePdfMode: "獨立PDF,每張影像一個", combineAllImages: "將所有影像合併為一個PDF", pageSize: "頁面大小", orientation: "方向", portrait: "直向", landscape: "橫向", margin: "邊距", targetSizeLabel: "目標檔案大小(選填)", targetSizePlaceholder: "例如2", targetSizeHint: "留空表示最高品質", targetSizeMet: "已達到目標", targetSizeNotMet: "無法達到目標。檔案已壓縮至最低品質。", targetSizeTooSmall: "目標至少為50KB", jpegQualityLabel: "使用的JPEG品質", noImage: "無影像", submitCollate: "建立PDF({count}頁)", submitSeparate: "建立{count}個PDF", downloadPdf: "下載PDF", downloadZip: "下載ZIP", progressLabel: "正在建立PDF", uploadingImages: "正在上傳影像...", processingPages: "正在處理{count}頁...", }, "pdf-to-image": { dropPdf: "拖放PDF至此處或點擊選取", readingPdf: "正在讀取PDF...", pageCount: "{count}頁", pageCountPlural: "{count}頁", outputFormat: "輸出格式", quality: "品質", resolutionDpi: "解析度(DPI)", dpiScreen: "螢幕", dpiStandard: "標準", dpiPrint: "列印", dpiHighQuality: "高品質", colorMode: "色彩模式", colorModeColor: "彩色", colorModeGrayscale: "灰階", colorModeBw: "黑白", pages: "頁面", allPages: "所有頁面", pagesHint: "例如1-3、5、8-10(文件共{count}頁)", converting: "轉換中...", submit: "轉換{count}頁", submitPlural: "轉換{count}頁", downloadAllZip: "全部下載(ZIP)", }, favicon: { uploadHint: "上傳正方形影像(建議512x512或更大)以產生所有Favicon和應用程式圖示尺寸。", multipleHint: "{count}張影像各自在ZIP中有獨立資料夾。", generatedSizes: "產生的尺寸(每張影像)", plusManifest: "+ manifest.json + HTML程式碼片段", submit: "產生Favicon({count}張影像)", submitPlural: "產生Favicon({count}張影像)", downloadZip: "下載Favicon ZIP", progressLabel: "正在產生Favicon", }, "adjust-colors": { light: "光線", brightness: "亮度", contrast: "對比度", exposure: "曝光", color: "色彩", saturation: "飽和度", temperature: "色溫", temperatureHint: "冷色 / 暖色", tint: "色調偏移", tintHint: "綠色 / 洋紅", hue: "色相", detail: "細節", sharpness: "銳利度", effects: "效果", none: "無", grayscale: "灰階", sepia: "棕褐", invert: "反轉", colorChannels: "色彩通道", channelModified: "已修改", red: "紅色", green: "綠色", blue: "藍色", resetAll: "全部重設", submit: "套用", submitBatch: "套用({count}個檔案)", progressLabel: "正在調整色彩", }, sharpening: { method: "方法", adaptive: "自適應", unsharpMask: "遮色片銳利化", highPass: "高通", presets: "預設", textureAmount: "紋理量", amount: "量", strength: "強度", noiseReduction: "降噪", off: "關閉", lightDenoise: "輕度", mediumDenoise: "中度", strongDenoise: "強力", advancedControls: "進階控制", radius: "半徑", flatProtection: "平坦保護", detailThreshold: "細節閾值", haloLimitLight: "光暈限制(亮部)", haloLimitDark: "光暈限制(暗部)", threshold: "閾值", kernelSize: "核心大小", submit: "銳利化", submitBatch: "銳利化({count}個檔案)", progressLabel: "銳利化中", }, "replace-color": { sourceColor: "來源色彩(要取代的)", targetColor: "目標色彩(取代為)", makeTransparent: "取代為透明", tolerance: "容差", exactMatch: "精確比對", wideRange: "寬範圍", submit: "取代色彩", submitBatch: "取代色彩({count}個檔案)", progressLabel: "正在取代色彩", }, "color-blindness": { simulationType: "模擬類型", redGreen: "紅綠色盲", blueYellow: "藍黃色盲", monochromatic: "全色盲", submit: "模擬", submitBatch: "模擬({count}個檔案)", progressLabel: "正在模擬色盲效果", }, "remove-background": { subject: "主體", people: "人物", products: "產品", general: "通用", passportIdPhoto: "證件照", quality: "品質", fast: "快速", hd: "HD", max: "最高", ultra: "極致", background: "背景", transparent: "透明", bgColor: "色彩", gradient: "漸層", image: "影像", gradientDirection: "方向", chooseBackgroundImage: "選擇背景影像", effectsSection: "效果", effectsActive: "已啟用", blurBackground: "模糊背景", intensity: "強度", addShadow: "加入陰影", opacity: "不透明度", outputFormat: "Output Format", edgeSmoothing: "Edge Smoothing", edgeSmoothingOff: "Off", edgeSmoothingLight: "Light", edgeSmoothingMedium: "Medium", edgeSmoothingStrong: "Strong", colorDecontamination: "Color Decontamination", rendering: "算繪中...", submit: "移除背景", submitBatch: "移除背景({count}個檔案)", progressLabel: "正在移除背景", }, upscale: { scaleFactor: "放大倍數", quality: "品質", enhanceFaces: "增強臉部", noiseReduction: "降噪", noiseReductionHint: "平滑顆粒和雜訊。數值越高去噪越多,但可能會柔化細節。", outputFormat: "輸出格式", submit: "放大{scale}倍", submitBatch: "放大{scale}倍({count}個檔案)", progressLabel: "正在放大影像", progressLabelBatch: "正在放大{count}張影像", }, "erase-object": { brushSize: "筆刷大小", fine: "精細", wide: "寬大", undo: "復原", clear: "清除", outputFormat: "輸出格式", quality: "品質", paintHint: "在要移除的物件上塗抹。按Ctrl+Z復原。", submit: "擦除物件", submitBatch: "全部擦除({count})", progressLabel: "正在擦除物件", }, ocr: { quality: "品質", enhanceBeforeScanning: "掃描前增強", enhanceHint: "在掃描前自動進行傾斜校正、對比度增強、雜訊去除和放大處理,以提高辨識準確率。", language: "語言", autoDetect: "自動偵測", extractedText: "擷取的文字", noTextDetected: "此影像中未偵測到文字", characters: "{count}個字元", submit: "擷取文字", submitBatch: "擷取文字({count}個檔案)", progressLabel: "正在擷取文字", }, "ocr-pdf": { quality: "品質", language: "語言", autoDetect: "自動偵測", pages: "頁面", pagesPlaceholder: "all, 1-3, 5", pagesHint: "輸入頁碼或範圍(例如 1-3, 5, 8-10)。最多50頁。", submit: "擷取文字", submitBatch: "擷取文字({count}個檔案)", progressLabel: "正在從PDF中擷取文字", }, "blur-faces": { blurRadius: "模糊半徑", blurLight: "輕度", blurHeavy: "重度", detectionSensitivity: "偵測靈敏度", moreFaces: "偵測更多臉部", fewerFaces: "偵測更少臉部", submit: "模糊臉部", progressLabel: "正在模糊臉部", }, "enhance-faces": { quality: "品質", enhancementStrength: "增強強度", onlyCenterFace: "僅中心臉部", detectionSensitivity: "偵測靈敏度", submit: "增強臉部", submitBatch: "增強臉部({count}個檔案)", progressLabel: "正在增強臉部", }, "smart-crop": { subjectFocus: "主體對焦", faceFocus: "臉部對焦", autoTrim: "自動修剪", customSize: "自訂大小", socialPresets: "社群媒體預設", detectionStrategy: "偵測策略", detectionStrategyHint: "注意力模式尋找視覺上最顯著的區域。熵模式尋找細節和資訊最豐富的區域。", attention: "注意力", entropy: "熵", padding: "內距", paddingHint: "焦點區域周圍的額外留白", outputQuality: "輸出品質", outputQualityHint: "用於JPEG和WebP輸出。PNG始終為無損。", subjectDescription: "透過顯著性分析偵測最有趣的區域,並裁切到目標尺寸。", framing: "構圖", facePadding: "臉部留白", facePaddingHint: "偵測到的臉部周圍的額外空間", fewerFalsePositives: "減少誤判", faceDescription: "使用AI臉部偵測保持臉部正確構圖。如未偵測到臉部,將回退到主體對焦。", trimTolerance: "容差", trimDescription: "邊框像素與邊緣色彩的最大差異仍可被修剪。數值越高修剪越積極。", padToSquare: "填充為正方形", targetSizePx: "目標大小(px)", padColor: "填充色彩", trimHint: "移除主體周圍的純色邊框。啟用「填充為正方形」可產生電商用圖。", submitSubject: "智慧裁切", submitFace: "臉部裁切", submitTrim: "修剪邊框", }, imageEnhancement: { enhancementMode: "增強模式", auto: "自動", portrait: "人像", landscape: "風景", lowLight: "低光源", food: "美食", document: "文件", intensity: "強度", deepEnhance: "深度增強(AI)", deepEnhanceDescription: "使用AI去除雜訊和偽影", deepEnhanceRequires: "需要放大與增強套件", analyzingImage: "正在分析影像...", detectedIssues: "偵測到的問題", imageLooksGood: "影像看起來不錯。使用強度滑桿進行微調。", issueUnderexposed: "曝光不足", issueOverexposed: "過度曝光", issueLowContrast: "對比度平淡", issueColorCast: "色偏", issueDesaturated: "飽和度不足", issueSoftFocus: "焦點偏軟", issueNoisy: "雜訊較多", submit: "增強", submitDeep: "深度增強", submitBatch: "增強({count}個檔案)", submitDeepBatch: "深度增強({count}個檔案)", progressLabel: "正在增強影像", progressLabelBatch: "正在增強{count}張影像", }, "noise-removal": { denoisingTier: "降噪等級", quick: "快速", balanced: "均衡", quality: "高品質", maximum: "最佳", quickDesc: "快速、輕量", balancedDesc: "良好品質,適中速度", qualityDesc: "AI驅動,較慢", maximumDesc: "最佳AI模型,最慢", strength: "強度", subtle: "輕微", aggressive: "積極", detailPreservation: "細節保留", smooth: "平滑", sharp: "銳利", colorNoise: "色彩雜訊", heavy: "重度", outputFormat: "輸出格式", gifAiWarning: "AI降噪處理GIF檔案時僅處理第一影格。對於動態GIF,請使用快速或均衡等級。", submit: "降噪", submitBatch: "降噪({count}個檔案)", progressLabel: "正在降噪", progressLabelBatch: "正在降噪{count}張影像", }, "red-eye-removal": { sensitivity: "靈敏度", strict: "嚴格", aggressive: "積極", correctionStrength: "修正強度", subtle: "輕微", dark: "深色", outputFormat: "輸出格式", quality: "品質", submit: "修復紅眼", submitBatch: "修復紅眼({count}個檔案)", progressLabel: "正在修復紅眼", progressLabelBatch: "正在修復{count}張影像的紅眼", }, "restore-photo": { scratchRemoval: "刮傷修復", scratchRemovalDesc: "偵測並修復刮傷、撕裂和斑點", faceEnhancement: "臉部增強", faceEnhancementDesc: "使用CodeFormer AI修復退化的臉部", faceFidelity: "臉部保真度", enhanced: "增強", faithful: "忠實", noiseReduction: "降噪", noiseReductionDesc: "去除老照片中的顆粒和雜訊", denoiseStrength: "降噪強度", autoColorize: "自動上色", autoColorizeDesc: "使用DDColor AI為黑白照片上色", colorizeStrength: "上色強度", vivid: "鮮豔", submit: "修復相片", submitBatch: "修復相片({count})", progressLabel: "正在修復相片", progressLabelBatch: "正在修復{count}張相片", }, "content-aware-resize": { widthPx: "寬度(px)", heightPx: "高度(px)", resizeToSquare: "調整為正方形", protectFaces: "保護臉部", protectFacesHint: "使用臉部偵測來偵測和保護臉部區域,防止被接縫移除", smoothing: "平滑度", edgeSensitivity: "邊緣敏感度", submit: "調整大小", submitBatch: "調整大小({count}個檔案)", progressLabel: "內容感知縮放中", }, "ai-canvas-expand": { quality: "品質", fast: "快速", balanced: "均衡", highQuality: "高品質", fastDesc: "快速預覽,較少AI處理", balancedDesc: "良好品質,適中速度", highQualityDesc: "最佳效果,較慢", extendToAspectRatio: "擴展至長寬比", extendByPixels: "擴展像素數", top: "上方", right: "右側", bottom: "下方", left: "左側", newSize: "新尺寸:{width} x {height}", submit: "擴展畫布", submitBatch: "擴展({count}個檔案)", progressLabel: "正在擴展畫布", }, colorize: { aiModel: "AI模型", fast: "快速", fastDesc: "快速產出結果", balanced: "均衡", balancedDesc: "最佳可用", best: "最佳", bestDesc: "最高品質", colorIntensity: "色彩強度", grayscaleLabel: "灰階", subtleLabel: "淡雅", naturalLabel: "自然", vividLabel: "鮮豔", intensityHint: "較低數值產生更柔和的復古風格色彩。", strength: "上色強度", submit: "上色", submitBatch: "上色({count}個檔案)", progressLabel: "上色中", progressLabelBatch: "正在上色{count}張影像", }, "passport-photo": { country: "國家", searchCountries: "搜尋國家...", noCountriesFound: "找不到國家", customDimensions: "自訂尺寸", documentType: "證件類型", dimensionsMm: "尺寸(毫米)", dpi: "DPI", pixelsPerInch: "像素每英吋", backgroundColor: "背景色彩", maxFileSize: "最大檔案大小", noLimit: "無限制", customKb: "自訂KB...", uploadPortrait: "上傳一張肖像照", uploadHint: "在左側面板拖放或上傳影像以預覽證件照", analyzingPhoto: "正在分析照片", detectingLandmarks: "正在偵測臉部特徵並移除背景...", generatePassportPhoto: "產生證件照", generating: "產生中...", downloadPhoto: "下載照片", faceCentered: "臉部置中", headLevel: "頭部端正", lookingStraight: "目視前方", faceSize: "臉部大小", whatYouSee: "所見即所得", dragToAdjust: "拖曳調整位置", scrollToZoom: "捲動縮放", photoGenerated: "照片已產生。在左側面板下載。", }, "transcribe-audio": { language: "語言", autoDetect: "自動偵測", outputFormat: "輸出格式", plainText: "純文字", submit: "轉錄", submitBatch: "轉錄 ({count} 個檔案)", progressLabel: "正在轉錄音訊", }, "auto-subtitles": { language: "語言", autoDetect: "自動偵測", format: "字幕格式", submit: "產生字幕", submitBatch: "產生字幕 ({count} 個檔案)", progressLabel: "正在產生字幕", }, "transparency-fixer": { description: "上傳帶有偽透明背景的PNG,我們將一鍵修復。", removeWatermark: "移除浮水印", removeWatermarkHelp: "偵測並移除半透明浮水印", requiresEraser: "需要物件擦除套件", advanced: "進階", defringe: "去邊", outputFormat: "輸出格式", submit: "修復透明度", submitBatch: "修復透明度({count}個檔案)", progressLabel: "正在修復透明度", }, "background-replace": { color: "背景顏色", submit: "替換背景", submitBatch: "替換背景 ({count} 個檔案)", progressLabel: "正在替換背景", }, "blur-background": { intensity: "模糊強度", submit: "模糊背景", submitBatch: "模糊背景 ({count} 個檔案)", progressLabel: "正在模糊背景", }, "watermark-text": { watermarkText: "浮水印文字", fontSize: "字型大小", color: "色彩", opacity: "不透明度", position: "位置", rotation: "旋轉", center: "置中", topLeft: "左上", topRight: "右上", bottomLeft: "左下", bottomRight: "右下", tiled: "平鋪", submit: "加入浮水印", submitBatch: "加入浮水印({count}個檔案)", progressLabel: "正在加入浮水印", }, "watermark-image": { uploadWatermark: "上傳浮水印影像", position: "位置", opacity: "不透明度", scale: "縮放", submit: "套用浮水印", submitBatch: "套用浮水印({count}個檔案)", }, "text-overlay": { text: "文字", fontSize: "字型大小", color: "色彩", position: "位置", top: "上方", center: "置中", bottom: "下方", backgroundBox: "背景框", backgroundColor: "背景色彩", shadow: "陰影", submit: "加入文字", submitBatch: "加入文字({count}個檔案)", progressLabel: "正在加入文字覆疊", download: "Download", defaultText: "Your Text Here", }, compose: { uploadOverlay: "上傳覆疊影像", xPosition: "X位置", yPosition: "Y位置", opacity: "不透明度", blendMode: "混合模式", submit: "合成", }, "meme-generator": { selectTemplate: "從圖庫中選擇範本或上傳自己的影像開始。", chooseLayout: "為自訂影像選擇文字版面。", textContent: "文字內容", textStyle: "文字樣式", font: "字型", fontSize: "字型大小", textColor: "文字色彩", strokeColor: "描邊色彩", allCaps: "全大寫", generate: "產生Meme", generating: "產生中...", downloadMeme: "下載Meme", backToGallery: "返回圖庫", }, info: { loadingInfo: "載入資訊中...", filename: "檔名", fileSize: "檔案大小", dimensions: "尺寸", format: "格式", channels: "通道", colorSpace: "色彩空間", density: "密度", bitDepth: "位元深度", progressive: "漸進式", pages: "頁數", hasAlpha: "有Alpha通道", hasProfile: "有描述檔", hasExif: "有EXIF", hasIcc: "有ICC", hasXmp: "有XMP", readInfo: "Read Info", reading: "Reading...", channelStats: "Channel Stats", yes: "Yes", no: "No", na: "N/A", failedToRead: "Failed to read info", }, compare: { uploadSecondImage: "上傳第二張影像", similarity: "相似度:{percent}%", submit: "比較", downloadDiff: "下載差異圖", }, "find-duplicates": { preset: "預設", exact: "精確", similar: "相似", loose: "寬鬆", exactDesc: "像素級相同的副本,同一影像不同格式。", similarDesc: "經過縮放、重壓縮或輕微編輯的副本。", looseDesc: "視覺上相關的影像,輕微裁切、不同曝光。", threshold: "閾值", submit: "掃描重複項", scanning: "掃描中...", }, "color-palette": { submit: "擷取色盤", extracting: "擷取中...", dominantColors: "主色調", clickToCopy: "點擊複製", }, "qr-generate": { contentType: "內容類型", url: "URL", text: "文字", wifi: "WiFi", vcard: "vCard", email: "電子郵件", phone: "電話", sms: "簡訊", styling: "樣式", dotStyle: "點樣式", cornerSquareStyle: "角方塊樣式", cornerDotStyle: "角點樣式", foregroundColor: "前景色", bgColor: "背景色", logo: "Logo", downloadFormat: "下載格式", submit: "產生QR碼", download: "下載QR碼", }, "html-to-image": { modeUrl: "URL", modeHtml: "HTML File", htmlFile: "HTML File", url: "URL", urlPlaceholder: "https://snapotter.com", format: "Output Format", quality: "Quality", devicePreset: "Device", viewportWidth: "Width", viewportHeight: "Height", fullPage: "Full Page", submit: "Capture", download: "Download Screenshot", capturing: "Capturing webpage...", errorTimeout: "Page took too long to load", errorBlocked: "This URL cannot be captured", errorUnavailable: "Screenshot service is not available", errorFailed: "Failed to capture the page", placeholder: "Enter a URL and click Capture", presets: { desktop: "Desktop", tablet: "Tablet", mobile: "Mobile", custom: "Custom", }, }, "barcode-read": { submit: "掃描條碼", submitBatch: "掃描({count}個檔案)", scanning: "掃描中...", noBarcodesFound: "找不到條碼", barcodesFound: "找到{count}個條碼", barcodesFoundPlural: "找到{count}個條碼", }, collage: { template: "範本", aspectRatio: "長寬比", gap: "間距", cornerRadius: "圓角", backgroundColor: "背景色彩", outputFormat: "輸出格式", quality: "品質", submit: "建立拼貼畫", downloadCollage: "下載拼貼畫", }, stitch: { direction: "方向", horizontal: "水平", vertical: "垂直", grid: "格線", gridColumns: "格線欄數", resizeMode: "縮放模式", fit: "適應", original: "原始", stretchMode: "延展", cropMode: "裁切", alignment: "對齊", start: "起始", center: "置中", end: "末尾", gap: "間距", border: "邊框", cornerRadius: "圓角", backgroundColor: "背景色彩", outputFormat: "輸出格式", quality: "品質", submit: "拼接影像", }, split: { modeGrid: "格線", modeTileSize: "圖磚大小", presets: "預設", columns: "欄數", rows: "列數", tileWidth: "圖磚寬度", tileHeight: "圖磚高度", outputFormat: "輸出格式", quality: "品質", submit: "分割影像", downloadAll: "全部下載(ZIP)", }, border: { presets: "預設", borderWidth: "邊框寬度", borderColor: "邊框色彩", padding: "內距", paddingColor: "內距色彩", cornerRadius: "圓角", shadow: "陰影", shadowBlur: "陰影模糊", shadowOffsetX: "陰影偏移X", shadowOffsetY: "陰影偏移Y", shadowColor: "陰影色彩", shadowOpacity: "陰影不透明度", submit: "加入邊框", submitBatch: "加入邊框({count}個檔案)", progressLabel: "正在加入邊框", }, beautify: { preset: "預設", backgroundType: "背景類型", solidColor: "純色", linearGradient: "線性漸層", radialGradient: "放射漸層", customImage: "自訂影像", gradientAngle: "漸層角度", padding: "內距", borderRadius: "圓角半徑", shadowPreset: "陰影預設", deviceFrame: "裝置外框", submit: "美化", submitBatch: "美化({count}個檔案)", progressLabel: "正在美化截圖", }, "circle-crop": { submit: "Circle Crop", submitBatch: "Circle Crop ({count} files)", progressLabel: "Cropping to circle", }, duotone: { shadow: "Shadow Color", highlight: "Highlight Color", submit: "Apply Duotone", submitBatch: "Apply Duotone ({count} files)", progressLabel: "Applying duotone", }, "image-pad": { target: "Target Ratio", color: "Background Color", submit: "Pad Image", submitBatch: "Pad Image ({count} files)", progressLabel: "Padding image", }, pixelate: { blockSize: "Block Size", submit: "Pixelate", submitBatch: "Pixelate ({count} files)", progressLabel: "Pixelating", }, vignette: { strength: "Strength", color: "Vignette Color", submit: "Apply Vignette", submitBatch: "Apply Vignette ({count} files)", progressLabel: "Applying vignette", }, "gif-webp": { submit: "Convert", submitBatch: "Convert ({count} files)", progressLabel: "Converting animation", }, histogram: { submit: "Generate Histogram", submitBatch: "Generate Histogram ({count} files)", progressLabel: "Generating histogram", }, "lqip-placeholder": { width: "Width", blur: "Blur", submit: "Generate Placeholder", submitBatch: "Generate Placeholder ({count} files)", progressLabel: "Generating placeholder", }, "sprite-sheet": { columns: "Columns", padding: "Padding", background: "Background Color", submit: "Create Sprite Sheet", submitBatch: "Create Sprite Sheet", progressLabel: "Creating sprite sheet", }, "svg-to-raster": { outputFormat: "輸出格式", sizing: "尺寸設定", scaleMode: "縮放", customMode: "自訂", scalePresets: "縮放預設", dpiPresets: "DPI預設", customWidth: "寬度(px)", customHeight: "高度(px)", background: "背景", bgTransparent: "透明", bgColor: "色彩", quality: "品質", submit: "轉換SVG", submitBatch: "轉換({count}個檔案)", progressLabel: "正在轉換SVG", }, vectorize: { preset: "預設", logo: "Logo", illustration: "插畫", photo: "照片", sketch: "素描", customPreset: "自訂", colorMode: "色彩模式", bw: "黑白", colorModeColor: "彩色", threshold: "閾值", colorPrecision: "色彩精度", layerDifference: "圖層差異", filterSpeckle: "過濾斑點", pathMode: "路徑模式", cornerThreshold: "轉角閾值", invertColors: "反轉色彩", submit: "向量化", submitBatch: "向量化({count}個檔案)", progressLabel: "向量化中", }, "gif-tools": { mode: "模式", resize: "調整大小", optimize: "最佳化", speed: "速度", reverse: "倒轉", extract: "擷取", rotateMode: "旋轉", pixel: "像素", percentage: "百分比", colors: "色彩數", dither: "遞色", effort: "處理力度", speedFactor: "速度倍數", loopControl: "迴圈控制", infinite: "無限", once: "一次", customLoop: "自訂", loopCount: "迴圈次數", extractSingle: "單影格", extractRange: "範圍", extractAll: "全部", frameNumber: "影格編號", frameStart: "起始影格", frameEnd: "結束影格", extractFormat: "格式", submit: "處理GIF", submitBatch: "處理({count}個檔案)", progressLabel: "正在處理GIF", }, "image-to-base64": { outputFormat: "輸出格式", keepOriginal: "保持原格式", quality: "品質", maxWidth: "最大寬度", maxHeight: "最大高度", submit: "轉換為Base64", submitBatch: "轉換({count}個檔案)", copyBase64: "複製Base64", copyDataUri: "複製Data URI", copyImgTag: "複製標籤", copyCssUrl: "複製CSS url()", }, "barcode-generate": { text: "Text", type: "Barcode Type", scale: "Scale", includeText: "Include Text", submit: "Generate Barcode", download: "Download Barcode", }, "chart-maker": { kind: "Chart Type", title: "Title", width: "Width", height: "Height", submit: "Create Chart", submitBatch: "Create Chart ({count} files)", progressLabel: "Creating chart", }, "enhance-faces-standalone": { model: "模型", fast: "快速", balanced: "均衡", best: "最佳", }, "convert-video": { format: "Output format", quality: "Quality", high: "High", balanced: "Balanced", small: "Smallest", submit: "Convert", submitBatch: "Convert ({count} files)", progressLabel: "Converting", }, "compress-video": { quality: "Compression", light: "Light", balanced: "Balanced", strong: "Strong", resolution: "Resolution", original: "Original", submit: "Compress", submitBatch: "Compress ({count} files)", progressLabel: "Compressing", }, "trim-video": { start: "Start (seconds)", end: "End (seconds)", precise: "Frame-accurate (re-encodes)", submit: "Trim", submitBatch: "Trim ({count} files)", progressLabel: "Trimming", }, "mute-video": { submit: "Remove audio", submitBatch: "Remove audio ({count} files)", progressLabel: "Muting", }, "video-to-gif": { fps: "Frames per second", width: "Width (px)", start: "Start (seconds)", duration: "Duration (seconds)", submit: "Create GIF", submitBatch: "Create GIFs ({count} files)", progressLabel: "Creating GIF", }, "resize-video": { preset: "Preset", width: "Width (px)", height: "Height (px)", hint: "Leave one dimension empty to keep aspect ratio", submit: "Resize", submitBatch: "Resize ({count} files)", progressLabel: "Resizing", }, "crop-video": { width: "Width (px)", height: "Height (px)", x: "X offset", y: "Y offset", submit: "Crop", submitBatch: "Crop ({count} files)", progressLabel: "Cropping", }, "rotate-video": { transform: "Transform", cw90: "Rotate 90 clockwise", ccw90: "Rotate 90 counter-clockwise", rotate180: "Rotate 180", hflip: "Flip horizontal", vflip: "Flip vertical", submit: "Rotate", submitBatch: "Rotate ({count} files)", progressLabel: "Rotating", }, "change-fps": { fps: "Frames per second", submit: "Change FPS", submitBatch: "Change FPS ({count} files)", progressLabel: "Changing FPS", }, "video-color": { brightness: "Brightness", contrast: "Contrast", saturation: "Saturation", gamma: "Gamma", submit: "Apply", submitBatch: "Apply ({count} files)", progressLabel: "Adjusting color", }, "video-speed": { factor: "Speed factor", keepPitch: "Keep original pitch", submit: "Change speed", submitBatch: "Change speed ({count} files)", progressLabel: "Changing speed", }, "reverse-video": { hint: "Limited to clips up to 5 minutes", submit: "Reverse", submitBatch: "Reverse ({count} files)", progressLabel: "Reversing", }, "video-loudnorm": { hint: "Normalizes audio to EBU R128 broadcast standard", submit: "Normalize", submitBatch: "Normalize ({count} files)", progressLabel: "Normalizing", }, "aspect-pad": { target: "Target ratio", color: "Background color", colorHint: "Hex color, e.g. #000000", submit: "Pad", submitBatch: "Pad ({count} files)", progressLabel: "Padding", }, "blur-pad": { target: "Target ratio", blur: "Blur strength", submit: "Pad", submitBatch: "Pad ({count} files)", progressLabel: "Padding", }, "watermark-video": { text: "Watermark text", position: "Position", fontSize: "Font size", opacity: "Opacity", color: "Color", colorHint: "Hex color, e.g. #ffffff", submit: "Watermark", submitBatch: "Watermark ({count} files)", progressLabel: "Watermarking", }, "stabilize-video": { smoothing: "Smoothing", hint: "Runs two passes and takes longer than most tools", submit: "Stabilize", submitBatch: "Stabilize ({count} files)", progressLabel: "Stabilizing", }, "gif-to-video": { format: "Output format", submit: "Convert", submitBatch: "Convert ({count} files)", progressLabel: "Converting", }, "video-to-webp": { fps: "Frames per second", width: "Width (px)", quality: "Quality", loop: "Loop animation", submit: "Convert", submitBatch: "Convert ({count} files)", progressLabel: "Converting", }, "video-to-frames": { mode: "Extraction mode", modeAll: "All frames", modeNth: "Every Nth frame", modeTimestamps: "Specific timestamps", n: "Take every Nth frame", timestamps: "Timestamps (seconds)", timestampsHint: "Comma-separated, e.g. 0.5, 2, 4.5", format: "Image format", submit: "Extract Frames", submitBatch: "Extract Frames ({count} files)", progressLabel: "Extracting frames", }, "merge-videos": { hint: "Files are joined in upload order", submit: "Merge", submitBatch: "Merge ({count} files)", progressLabel: "Merging", }, "replace-audio": { hint: "Upload the video first, then the audio", submit: "Replace Audio", submitBatch: "Replace Audio ({count} files)", progressLabel: "Replacing audio", }, "burn-subtitles": { fontSize: "Font size", hint: "Upload a video and a subtitle file (.srt or .vtt)", submit: "Burn Subtitles", submitBatch: "Burn Subtitles ({count} files)", progressLabel: "Burning subtitles", }, "embed-subtitles": { language: "Language code", languageHint: "Three-letter ISO 639-2 code, e.g. eng, spa, fra", submit: "Embed Subtitles", submitBatch: "Embed Subtitles ({count} files)", progressLabel: "Embedding subtitles", }, "extract-subtitles": { submit: "Extract Subtitles", submitBatch: "Extract Subtitles ({count} files)", progressLabel: "Extracting subtitles", }, "images-to-video": { secondsPerImage: "Seconds per image", resolution: "Resolution", fps: "Frames per second", submit: "Create Video", submitBatch: "Create Video ({count} files)", progressLabel: "Creating slideshow", }, "video-metadata": { hint: "Metadata report appears in the result", submit: "Strip Metadata", submitBatch: "Strip Metadata ({count} files)", progressLabel: "Stripping metadata", }, "convert-audio": { format: "Output format", bitrate: "Bitrate (kbps)", submit: "Convert", submitBatch: "Convert ({count} files)", progressLabel: "Converting", }, "trim-audio": { start: "Start (seconds)", end: "End (seconds)", submit: "Trim", submitBatch: "Trim ({count} files)", progressLabel: "Trimming", }, "extract-audio": { format: "Output format", submit: "Extract", submitBatch: "Extract ({count} files)", progressLabel: "Extracting", }, "volume-adjust": { "gain-db": "Gain (dB)", submit: "Adjust Volume", submitBatch: "Adjust Volume ({count} files)", progressLabel: "Adjusting volume", }, "normalize-audio": { hint: "EBU R128 loudness normalization", submit: "Normalize", submitBatch: "Normalize ({count} files)", progressLabel: "Normalizing", }, "fade-audio": { "fade-in-s": "Fade in (seconds)", "fade-out-s": "Fade out (seconds)", submit: "Apply Fade", submitBatch: "Apply Fade ({count} files)", progressLabel: "Applying fade", }, "reverse-audio": { submit: "Reverse", submitBatch: "Reverse ({count} files)", progressLabel: "Reversing", }, "audio-speed": { factor: "Speed factor", submit: "Change Speed", submitBatch: "Change Speed ({count} files)", progressLabel: "Changing speed", }, "pitch-shift": { semitones: "Semitones", hint: "0 semitones is not allowed", submit: "Shift Pitch", submitBatch: "Shift Pitch ({count} files)", progressLabel: "Shifting pitch", }, "audio-channels": { mode: "Channel mode", "stereo-to-mono": "Stereo to mono", "mono-to-stereo": "Mono to stereo", swap: "Swap left/right", submit: "Convert Channels", submitBatch: "Convert Channels ({count} files)", progressLabel: "Converting channels", }, "silence-removal": { "threshold-db": "Silence threshold (dB)", "min-silence-s": "Minimum silence duration (seconds)", submit: "Remove Silence", submitBatch: "Remove Silence ({count} files)", progressLabel: "Removing silence", }, "noise-reduction": { strength: "Strength", light: "Light", medium: "Medium", strong: "Strong", submit: "Reduce Noise", submitBatch: "Reduce Noise ({count} files)", progressLabel: "Reducing noise", }, "merge-audio": { format: "Output format", mp3: "MP3", wav: "WAV", flac: "FLAC", m4a: "M4A", "order-hint": "Files will be joined in upload order", submit: "Merge Audio", submitBatch: "Merge Audio ({count} files)", progressLabel: "Merging audio", }, "split-audio": { mode: "Split mode", time: "By time", parts: "Equal parts", silence: "By silence", "segment-s": "Segment length (seconds)", "num-parts": "Number of parts", "threshold-db": "Silence threshold (dB)", "min-silence-s": "Minimum silence duration (seconds)", submit: "Split Audio", submitBatch: "Split Audio ({count} files)", progressLabel: "Splitting audio", }, "ringtone-maker": { "start-s": "Start time (seconds)", "duration-s": "Duration (seconds)", "max-hint": "Maximum 30 seconds", submit: "Create Ringtone", submitBatch: "Create Ringtone ({count} files)", progressLabel: "Creating ringtone", }, "waveform-image": { width: "Width (px)", height: "Height (px)", color: "Waveform color", submit: "Generate Waveform", submitBatch: "Generate Waveform ({count} files)", progressLabel: "Generating waveform", }, "audio-metadata": { strip: "Strip all metadata", title: "Title", artist: "Artist", album: "Album", submit: "Apply Metadata", submitBatch: "Apply Metadata ({count} files)", progressLabel: "Applying metadata", }, "merge-pdf": { addFiles: "Add PDFs to merge", needTwo: "At least two PDFs are required", orderHint: "{count} PDFs will merge in this order", submit: "Merge", submitBatch: "Merge ({count} files)", progressLabel: "Merging", }, "split-pdf": { mode: "Split mode", range: "Page range", rangeHint: "e.g. 1-3, 5, 7-z", everyN: "Pages per part", submit: "Split", submitBatch: "Split ({count} files)", progressLabel: "Splitting", }, "compress-pdf": { preset: "Quality preset", screen: "Screen (smallest)", ebook: "Ebook (balanced)", printer: "Printer (best quality)", submit: "Compress", submitBatch: "Compress ({count} files)", progressLabel: "Compressing", }, "rotate-pdf": { angle: "Rotation angle", range: "Page range", rangeHint: "e.g. 1-3, 5, 1-z (all pages)", submit: "Rotate", submitBatch: "Rotate ({count} files)", progressLabel: "Rotating", }, "convert-document": { format: "Output format", submit: "Convert", submitBatch: "Convert ({count} files)", progressLabel: "Converting", }, "convert-presentation": { format: "Output format", submit: "Convert", submitBatch: "Convert ({count} files)", progressLabel: "Converting", }, "convert-spreadsheet": { format: "Output format", hint: "Multi-sheet workbooks export the first sheet to CSV.", submit: "Convert", submitBatch: "Convert ({count} files)", progressLabel: "Converting", }, "excel-to-pdf": { submit: "Convert to PDF", submitBatch: "Convert ({count} files)", progressLabel: "Converting", }, "powerpoint-to-pdf": { submit: "Convert to PDF", submitBatch: "Convert ({count} files)", progressLabel: "Converting", }, "word-to-pdf": { submit: "Convert to PDF", submitBatch: "Convert ({count} files)", progressLabel: "Converting", }, "extract-pages": { range: "Page range", rangeHint: "e.g. 1-3, 5, 7-z", submit: "Extract", submitBatch: "Extract ({count} files)", progressLabel: "Extracting", }, "remove-pages": { pages: "Pages to remove", pagesHint: "e.g. 2, 4-6, z (last page)", submit: "Remove", submitBatch: "Remove ({count} files)", progressLabel: "Removing", }, "organize-pdf": { order: "Page order", orderHint: "e.g. 3,1,2 or 1-z (identity)", submit: "Reorder", submitBatch: "Reorder ({count} files)", progressLabel: "Reordering", }, "protect-pdf": { userPassword: "User password", ownerPassword: "Owner password (optional)", ownerPasswordHint: "Defaults to user password if empty", submit: "Protect", submitBatch: "Protect ({count} files)", progressLabel: "Encrypting", }, "unlock-pdf": { password: "Password", submit: "Unlock", submitBatch: "Unlock ({count} files)", progressLabel: "Decrypting", }, "repair-pdf": { submit: "Repair", submitBatch: "Repair ({count} files)", progressLabel: "Repairing", }, "linearize-pdf": { submit: "Optimize", submitBatch: "Optimize ({count} files)", progressLabel: "Linearizing", }, "grayscale-pdf": { submit: "Convert", submitBatch: "Convert ({count} files)", progressLabel: "Converting", }, "pdfa-convert": { submit: "Convert", submitBatch: "Convert ({count} files)", progressLabel: "Converting", }, "crop-pdf": { margin: "Margin (points)", submit: "Crop", submitBatch: "Crop ({count} files)", progressLabel: "Cropping", }, "nup-pdf": { perSheet: "Pages per sheet", submit: "Arrange", submitBatch: "Arrange ({count} files)", progressLabel: "Arranging", }, "booklet-pdf": { perSheet: "Pages per sheet", submit: "Create Booklet", submitBatch: "Create Booklet ({count} files)", progressLabel: "Creating booklet", }, "watermark-pdf": { text: "Watermark text", position: "Position", fontSize: "Font size", opacity: "Opacity", rotation: "Rotation", submit: "Watermark", submitBatch: "Watermark ({count} files)", progressLabel: "Watermarking", }, "pdf-page-numbers": { position: "Position", fontSize: "Font size", submit: "Add Numbers", submitBatch: "Add Numbers ({count} files)", progressLabel: "Numbering", }, "flatten-pdf": { submit: "Flatten", submitBatch: "Flatten ({count} files)", progressLabel: "Flattening", }, "redact-pdf": { terms: "Terms to redact", termsHint: "One term per line (max 50)", caseSensitive: "Case sensitive", submit: "Redact", submitBatch: "Redact ({count} files)", progressLabel: "Redacting", }, "pdf-to-text": { submit: "Extract Text", submitBatch: "Extract Text ({count} files)", progressLabel: "Extracting", }, "pdf-to-word": { hint: "Best for text-based PDFs; scanned pages need OCR", submit: "Convert to Word", submitBatch: "Convert to Word ({count} files)", progressLabel: "Converting", }, "pdf-metadata": { title: "Title", author: "Author", subject: "Subject", keywords: "Keywords", submit: "Set Metadata", submitBatch: "Set Metadata ({count} files)", progressLabel: "Setting metadata", }, "html-to-pdf": { hint: "Remote resources are disabled for privacy.", submit: "Convert to PDF", submitBatch: "Convert to PDF ({count} files)", progressLabel: "Converting", }, "markdown-to-docx": { submit: "Convert to DOCX", submitBatch: "Convert ({count} files)", progressLabel: "Converting", }, "markdown-to-html": { hint: "Remote images in the source are left as-is in the output.", submit: "Convert to HTML", submitBatch: "Convert ({count} files)", progressLabel: "Converting", }, "markdown-to-pdf": { hint: "Remote resources are disabled for privacy.", submit: "Convert to PDF", submitBatch: "Convert to PDF ({count} files)", progressLabel: "Converting", }, "epub-convert": { format: "Output format", hint: "Remote resources inside the book are not fetched.", submit: "Convert", submitBatch: "Convert ({count} files)", progressLabel: "Converting", }, "to-epub": { submit: "Convert to EPUB", submitBatch: "Convert ({count} files)", progressLabel: "Converting", }, "csv-excel": { sheet: "Worksheet number", submit: "Convert", submitBatch: "Convert ({count} files)", progressLabel: "Converting", }, "csv-json": { pretty: "Pretty print", submit: "Convert", submitBatch: "Convert ({count} files)", progressLabel: "Converting", }, "json-xml": { pretty: "Pretty print", submit: "Convert", submitBatch: "Convert ({count} files)", progressLabel: "Converting", }, "split-csv": { rowsPerFile: "Rows per file", keepHeader: "Keep header in each file", submit: "Split", submitBatch: "Split ({count} files)", progressLabel: "Splitting", }, "merge-csvs": { submit: "Merge", submitBatch: "Merge ({count} files)", progressLabel: "Merging", }, "yaml-json": { submit: "Convert", submitBatch: "Convert ({count} files)", progressLabel: "Converting", }, "xml-to-csv": { submit: "Convert", submitBatch: "Convert ({count} files)", progressLabel: "Converting", }, "create-zip": { submit: "Create ZIP", submitBatch: "Create ZIP ({count} files)", progressLabel: "Zipping", }, "extract-zip": { submit: "Extract", submitBatch: "Extract ({count} files)", progressLabel: "Extracting", }, }, urlImport: { title: "從URL匯入", placeholder: "貼上影像URL,每行一個...", importButton: "匯入URL", addButton: "加入{count}個檔案", adding: "加入中...", retryButton: "重試", cancelButton: "取消", readyCount: "{count}個已就緒", failedStatus: "失敗", }, comparison: { original: "原圖", processed: "處理後", before: "之前", after: "之後", savings: "節省", }, toolPage: { emptyPrompt: "拖放或上傳影像以開始", filesCount: "檔案({count})", addMore: "+ 加入更多", clearAll: "清除全部", acceptDescription: "僅支援{exts}檔案", notFound: "找不到工具", configureAndGenerate: "設定參數並產生。", processingFailed: "此檔案處理失敗", conversionComplete: "轉換完成", cannotPreviewDownload: "{type}檔案無法在瀏覽器中預覽。請使用下載按鈕儲存檔案。", generatingPreview: "正在產生預覽...", cannotPreviewWillProcess: "{ext}檔案無法在瀏覽器中預覽。該工具仍會正常處理此檔案。", previousImage: "上一張影像", nextImage: "下一張影像", imageCounter: "{current} / {total}", settingsLabel: "設定", downloadAllZip: "全部下載(ZIP)", hideSettings: "隱藏設定", imageArea: "影像區域", disabledByAdmin: "This tool has been disabled by your administrator", browseOtherTools: "Browse other tools", privacyNote: "Files are processed on your server and never leave your network", applyAndDownload: "套用並下載", andMore: "and {count} more", adjustSettings: "Adjust settings", startOver: "Start over with a new file", backToTools: "Back to Tools", original: "Original", processed: "Processed", saved: "Saved", noChange: "no change", download: "Download", settingsSaved: "您的設定已儲存。", tryAgain: "重試", tryDifferentFile: "嘗試其他檔案", batchPartialSuccess: "{success} of {total} processed. {failed} failed.", dataResultsHint: "Results shown above. Use the copy button in the results panel.", downloadAsFile: "Download as file", downloadAll: "Download All", downloadFiles: "Download {count} files", }, homePage: { generatingPreview: "正在產生預覽...", loadingPreview: "正在載入預覽...", changeFile: "更換檔案", quickActions: "快捷動作", allTools: "全部工具", searchPlaceholder: "Search {count} tools...", recent: "Recent", popular: "Popular", browseByCategory: "Browse by Category", gettingStarted: "Getting Started", noToolsMatch: "No tools match '{query}'", clearSearch: "Clear search", all: "All", documents: "Documents", data: "Data", toolCount: "{count} tools", }, fullscreenGrid: { searchPlaceholder: "搜尋工具...", hideDetails: "隱藏詳情", showDetails: "顯示詳情", switchToSidebar: "切換到側邊欄檢視", sidebarButton: "側邊欄", noToolsFound: "找不到工具", tryDifferent: "請嘗試其他搜尋字詞", }, editor: { menu: { file: { label: "檔案", new: "新增", open: "開啟", save: "儲存", exportAs: "匯出為...", quickExportPng: "快速匯出為PNG", close: "關閉", }, edit: { label: "編輯", undo: "復原", redo: "重做", cut: "剪下", copy: "複製", copyMerged: "合併複製", paste: "貼上", pasteInPlace: "原位貼上", delete: "刪除", freeTransform: "自由變形", transform: { label: "變形", scale: "縮放", rotate: "旋轉", skew: "傾斜", flipHorizontal: "水平翻轉", flipVertical: "垂直翻轉", }, }, image: { label: "影像", imageSize: "影像大小...", canvasSize: "畫布大小...", rotation: { label: "影像旋轉", cw90: "順時針90°", ccw90: "逆時針90°", r180: "180°", flipHorizontal: "水平翻轉", flipVertical: "垂直翻轉", }, trim: "裁切", adjustments: { label: "調整", brightnessContrast: "亮度/對比度", hueSaturation: "色相/飽和度", colorBalance: "色彩平衡", levels: "色階", curves: "曲線", }, }, layer: { label: "圖層", newLayer: "新增圖層", duplicateLayer: "複製圖層", deleteLayer: "刪除圖層", arrange: { label: "排列", bringToFront: "移至最前", bringForward: "往前移", sendBackward: "往後移", sendToBack: "移至最後", }, mergeDown: "向下合併", flattenImage: "影像平面化", }, select: { label: "選取", all: "全選", deselect: "取消選取", inverse: "反轉選取", colorRange: "色彩範圍...", }, filter: { label: "濾鏡", blur: { label: "模糊", gaussian: "高斯模糊", motion: "動態模糊", radial: "放射模糊", surface: "表面模糊", }, sharpen: { label: "銳利化", sharpen: "銳利化", unsharpMask: "遮色片銳利化", }, noise: { label: "雜訊", addNoise: "加入雜訊", reduceNoise: "減少雜訊", }, pixelate: { label: "像素化", pixelate: "像素化", mosaic: "馬賽克", }, stylize: { label: "風格化", emboss: "浮雕", solarize: "曝光過度", posterize: "色調分離", }, grayscale: "灰階", sepia: "棕褐", invert: "負片效果", }, view: { label: "檢視", zoomIn: "放大", zoomOut: "縮小", fitOnScreen: "符合視窗大小", actualPixels: "實際像素", rulers: "尺規", grid: "格線", guides: "參考線", snap: "貼齊", panels: "面板", }, }, menuBar: { backTitle: "返回SnapOtter", }, welcome: { ariaLabel: "影像拖放區域", heading: "影像編輯器", dropDescription: "將影像拖放到此處開始編輯", openImageButton: "開啟影像", newDocumentButton: "新增文件", pasteHint: "或從剪貼簿貼上(Ctrl+V)", }, mobile: { heading: "建議使用桌面版", description: "影像編輯器在桌面螢幕上效果最佳。請切換到更大顯示器的裝置以獲得完整的編輯體驗。", }, errors: { serverDecodeFailed: "伺服器解碼失敗", }, shapes: { shape: "Shape", fill: "Fill", stroke: "Stroke", strokeWidth: "Width", cornerRadius: "Radius", sides: "Sides", points: "Points", dashStyle: "Dash", solid: "Solid", dashed: "Dashed", dotted: "Dotted", none: "None", opacity: "Opacity", rectangle: "Rectangle", ellipse: "Ellipse", line: "Line", arrow: "Arrow", polygon: "Polygon", star: "Star", }, }, settings: { heading: "設定", nav: { general: "一般", systemSettings: "系統設定", security: "安全性", people: "成員", teams: "團隊", roles: "角色", auditLog: "稽核記錄", usage: "Usage", apiKeys: "API金鑰", aiFeatures: "AI功能", tools: "工具", productAnalytics: "產品分析", about: "關於", }, general: { heading: "一般", description: "使用者偏好和顯示設定。", loading: "載入中...", logOut: "登出", defaultToolViewLabel: "預設工具檢視", defaultToolViewDescription: "首頁上工具的顯示方式", sidebarOption: "側邊欄", fullscreenGridOption: "全螢幕格線", appVersionLabel: "應用程式版本", appVersionDescription: "SnapOtter目前版本", saveButton: "儲存設定", saveSuccess: "設定已儲存。", saveFailed: "儲存設定失敗。", }, system: { heading: "系統設定", description: "伺服器端組態和限制。", fileUploadLimitLabel: "檔案上傳限制(MB)", fileUploadLimitDescription: "每次上傳的最大檔案大小", defaultThemeLabel: "預設佈景主題", defaultThemeDescription: "新工作階段套用的佈景主題", lightOption: "淺色", darkOption: "深色", systemOption: "跟隨系統", languageLabel: "語言", languageDescription: "介面語言", loginAttemptLimitLabel: "登入嘗試限制", loginAttemptLimitDescription: "鎖定前每分鐘最大登入失敗次數", fileManagementHeading: "檔案管理", maxFileAgeLabel: "檔案最大保留時間(小時)", maxFileAgeDescription: "處理後的檔案在自動清理前保留的時間", startupCleanupLabel: "啟動清理", startupCleanupDescription: "伺服器啟動時清理舊的暫存檔案", saveButton: "儲存設定", saveSuccess: "設定已儲存。", saveFailed: "儲存設定失敗。", limitsAndResources: "限制與資源", maxFileSize: "最大檔案大小", maxBatchSize: "最大批次處理數", concurrentJobs: "同時工作數", workerThreads: "工作執行緒數", maxPipelineSteps: "最大Pipeline步驟數", processingTimeout: "處理逾時", rateLimitPerMin: "速率限制(要求/分鐘)", unlimited: "無限制", auto: "自動", envOverride: "由環境變數設定", maxCanvasPixels: "最大畫布像素", maxSvgSize: "最大SVG大小", maxSplitGrid: "最大分割格線", maxPdfPages: "最大PDF頁數", sessionDuration: "工作階段時長", supportBundleButton: "Download Support Bundle", supportBundleDescription: "Download a diagnostic zip with redacted config, logs, and job data for troubleshooting.", supportBundleFailed: "Failed to download support bundle.", }, security: { heading: "安全性", description: "密碼和驗證設定。", changePasswordHeading: "變更密碼", currentPasswordPlaceholder: "目前密碼", newPasswordPlaceholder: "新密碼", confirmPasswordPlaceholder: "確認新密碼", passwordsMismatch: "密碼不符", passwordTooShort: "密碼至少4個字元", changeSuccess: "密碼變更成功", changeFailed: "密碼變更失敗", currentPasswordIncorrect: "目前密碼不正確", changePasswordButton: "變更密碼", loginAttemptLimitNote: "登入嘗試限制可在系統設定中配置。", adminHeading: "Admin Security Settings", adminDescription: "Enterprise security policy settings. These apply to all users.", sessionIdleTimeout: "Session Idle Timeout (minutes)", sessionIdleTimeoutDesc: "Automatically log out idle sessions. 0 = disabled.", maxSessionsPerUser: "Max Sessions Per User", maxSessionsPerUserDesc: "Limit concurrent sessions per user. 0 = unlimited.", mfaPolicy: "MFA Policy", mfaPolicyDesc: "Require multi-factor authentication for users.", mfaPolicyOptional: "Optional", mfaPolicyAdminsOnly: "Required for admins", mfaPolicyRequired: "Required for all users", ssoEnforcement: "SSO Enforcement", ssoEnforcementDesc: "Require SSO login for all non-break-glass users.", ssoBreakGlassUsername: "Break Glass Admin Username", ssoBreakGlassUsernameDesc: "This admin can still log in with local credentials when SSO is enforced.", passwordMinLength: "Minimum Password Length", passwordMinLengthDesc: "Minimum number of characters required for passwords.", passwordRequireUppercase: "Require Uppercase", passwordRequireUppercaseDesc: "Require at least one uppercase letter.", passwordRequireNumber: "Require Number", passwordRequireNumberDesc: "Require at least one number.", passwordRequireSpecial: "Require Special Character", passwordRequireSpecialDesc: "Require at least one special character.", passwordPolicyHeading: "Password Policy", securitySettingsSaved: "Security settings saved", securitySettingsFailed: "Failed to save security settings", }, people: { heading: "成員", description: "管理工作空間成員及其權限", userCount: "{count}位使用者", userCountPlural: "{count}位使用者", searchPlaceholder: "搜尋成員...", addMembersButton: "加入成員", newMemberHeading: "新成員", usernamePlaceholder: "使用者名稱", passwordPlaceholder: "密碼", roleUserOption: "使用者", roleEditorOption: "編輯者", roleAdminOption: "管理員", roleUserDescription: "基本工具存取", roleEditorDescription: "所有檔案與Pipeline", roleAdminDescription: "完整存取", noDescription: "無描述", defaultTeamOption: "預設", createButton: "建立", cancelButton: "取消", createSuccess: "使用者建立成功", createFailed: "建立使用者失敗", userLimitReached: "已達使用者上限(最多{max}個)", deleteConfirm: "刪除使用者「{username}」?此操作無法復原。", deleteSuccess: "使用者「{username}」已刪除", deleteFailed: "刪除使用者失敗", editHeading: "編輯{username}", updateSuccess: "使用者已更新", updateFailed: "更新使用者失敗", cannotRemoveOwnAdmin: "無法移除自己的管理員角色", resetPasswordHeading: "重設{username}的密碼", newPasswordLabel: "新密碼(至少8個字元)", resetPasswordButton: "重設密碼", resetPasswordWarning: "此操作將使該使用者的所有工作階段和API金鑰失效。", resetSuccess: "密碼重設成功", resetFailed: "密碼重設失敗", tableHeaderUser: "使用者", tableHeaderRole: "角色", tableHeaderTeam: "團隊", noSearchResults: "沒有符合搜尋的成員。", noUsersFound: "找不到使用者。", authBadgeLocalOidc: "本機 + OIDC", authBadgeOidc: "OIDC", editRoleTeamAction: "編輯角色/團隊", resetPasswordAction: "重設密碼", deleteUserAction: "刪除使用者", saveButton: "儲存", copyPasswordButton: "複製密碼", passwordCopied: "已複製!", copyPasswordWarning: "請立即複製此密碼。建立使用者後將無法再次查看。", }, teams: { heading: "團隊", description: "將成員組織到團隊中以便管理。", createButton: "建立新團隊", newTeamHeading: "新團隊", teamNamePlaceholder: "團隊名稱", createSubmitButton: "建立", cancelButton: "取消", createSuccess: "團隊建立成功", createFailed: "建立團隊失敗", duplicateTeamError: "已存在同名團隊", renameSuccess: "團隊已重新命名", renameFailed: "重新命名團隊失敗", deleteConfirm: "刪除團隊「{name}」?成員將被取消指派。", deleteSuccess: "團隊「{name}」已刪除", deleteFailed: "刪除團隊失敗", cannotDeleteDefault: "無法刪除預設團隊或有成員的團隊", tableHeaderTeamName: "團隊名稱", tableHeaderMembers: "成員", emptyState: "找不到團隊。", renameSaveButton: "儲存", renameCancelButton: "取消", renameAction: "重新命名", deleteAction: "刪除", totalMembers: "總成員數", nameRequired: "需要團隊名稱", nameTooLong: "團隊名稱不超過50個字元", duplicateName: "已存在同名團隊", teamStorageQuota: "Storage Quota (MB)", teamStorageQuotaDesc: "Maximum storage for this team in MB. Leave empty for no limit.", teamRetentionHours: "Retention (hours)", teamRetentionHoursDesc: "Processing file retention for this team. Leave empty to use global default.", quotaSaved: "Team settings saved", }, roles: { heading: "角色", description: "管理角色及其權限。內建角色無法修改。", createButton: "建立自訂角色", newRoleHeading: "新角色", roleNamePlaceholder: "角色名稱", descriptionPlaceholder: "描述(選填)", permissionsLabel: "權限", createSubmitButton: "建立", cancelButton: "取消", createSuccess: "角色建立成功", createFailed: "建立角色失敗", duplicateRoleError: "已存在同名角色", editHeading: "編輯角色:{name}", editSaveButton: "儲存", editCancelButton: "取消", updateSuccess: "角色已更新", updateFailed: "更新角色失敗", deleteConfirm: "刪除角色「{name}」?{count}位使用者需要重新指派。", deleteConfirmSimple: "刪除角色「{name}」?", deleteSuccess: "角色「{name}」已刪除", deleteFailed: "刪除角色失敗", emptyState: "找不到角色。", builtInBadge: "內建", userCountBadge: "{count}位使用者", editRoleTitle: "編輯角色", deleteRoleTitle: "刪除角色", permGroup: { tools: "工具", files: "檔案", apiKeys: "API金鑰", pipelines: "Pipeline", settings: "設定", users: "使用者", teams: "團隊", system: "系統", }, }, auditLog: { heading: "稽核記錄", allActionsFilter: "所有動作", emptyState: "沒有稽核記錄。", tableHeaderTime: "時間", tableHeaderUser: "使用者", tableHeaderAction: "動作", tableHeaderTarget: "目標", paginationInfo: "第{page}頁,共{totalPages}頁({total}筆記錄)", previousButton: "上一頁", nextButton: "下一頁", justNow: "剛才", minutesAgo: "{mins}分鐘前", hoursAgo: "{hrs}小時前", daysAgo: "{days}天前", }, usage: { heading: "Usage", description: "Local usage statistics from jobs and file storage.", periodLabel: "Period", days7: "7 days", days30: "30 days", days90: "90 days", jobsPerDayHeading: "Jobs per day", topToolsHeading: "Top tools", perUserHeading: "Per-user volume", durationsHeading: "Duration percentiles", noData: "No data for this period.", dayColumn: "Day", totalColumn: "Total", completedColumn: "Completed", failedColumn: "Failed", toolColumn: "Tool", runsColumn: "Runs", userColumn: "User", bytesInColumn: "Bytes in", poolColumn: "Pool", p50Column: "p50", p95Column: "p95", storageHeading: "Library storage", storageFiles: "{count} files", unknownUser: "(unknown)", storageByTeam: "Storage by Team", teamColumn: "Team", storageColumn: "Storage", usersColumn: "Users", }, apiKeys: { heading: "API金鑰", description: "管理用於程式化存取SnapOtter的API金鑰。", keyNamePlaceholder: "金鑰名稱(選填)", generateButton: "產生API金鑰", removeScopingLabel: "移除權限範圍", restrictPermissionsLabel: "限制權限(選填)", expiresLabel: "到期時間:", clearButton: "清除", copyTitle: "複製", keyWarning: "請安全保存此金鑰。它將不會再次顯示。", existingKeysHeading: "現有金鑰", createdPrefix: "建立於{date}", scopedPrefix: "範圍:", expiresPrefix: "{date}到期", deleteKeyTitle: "刪除金鑰", deleteConfirm: "刪除此API金鑰?使用此金鑰的所有整合將停止運作。", emptyState: "還沒有API金鑰。產生一個以開始使用。", }, tools: { heading: "工具", description: "啟用或停用個別工具。停用的工具對所有使用者隱藏。", restartBanner: "需要重新啟動才能使變更生效。", searchPlaceholder: "搜尋工具...", noSearchResults: "沒有符合搜尋的工具。", loadFailedError: "載入工具設定失敗。為防止資料遺失,儲存已停用。", saveButton: "儲存工具設定", disabledCount: "{count}個工具已停用", }, experimental: { label: "啟用實驗性工具", description: "顯示仍在開發中的工具。這些工具可能不穩定。", }, fileManagement: { title: "檔案管理", maxAge: "檔案最大保留時間(小時)", maxAgeDescription: "處理後的檔案在自動清理前保留的時間", startupCleanup: "啟動清理", startupCleanupDescription: "伺服器啟動時清理舊的暫存檔案", }, dataRetention: { title: "Data Retention", fileMaxAgeHours: "Processing file retention (hours)", fileMaxAgeHoursDesc: "How long to keep uploaded and processed files. Default: 72 hours.", jobsRetentionDays: "Job record retention (days)", jobsRetentionDaysDesc: "How long to keep job metadata. 0 = keep forever. Default: 30 days.", auditRetentionDays: "Audit log retention (days)", auditRetentionDaysDesc: "How long to keep audit log entries. 0 = keep forever. Default: forever.", }, analytics: { heading: "產品分析", description: "分享匿名使用資料以協助改進SnapOtter。", privacyNote: "您的影像永遠不會離開您的裝置。", disabledByAdmin: "產品分析已被伺服器管理員停用。", enabledLabel: "分析已啟用", disabledLabel: "分析已停用", learnMore: "了解更多", }, aiFeatures: { title: "AI Features", description: "Manage AI model bundles for advanced image processing.", installAll: "Install All", diskUsage: "Disk usage:", installed: "Installed", notInstalled: "Not installed", queued: "Queued", install: "Install", repair: "Repair", uninstall: "Uninstall", installing: "Installing...", importBundle: "Import Bundle", importDescription: "Upload a .tar.gz bundle archive exported from another installation.", importButton: "Import from file", importing: "Importing...", importSuccess: "Bundle imported successfully.", importError: "Bundle import failed: {error}", }, about: { heading: "關於", appName: "SnapOtter", appDescription: "自架式、隱私優先的影像處理套件,內含70+個工具。調整大小、壓縮、轉檔、加入浮水印,自動化影像工作流程,無需將資料傳送到雲端。", versionLabel: "版本:", linksHeading: "連結", githubLink: "GitHub儲存庫", docsLink: "說明文件", apiRefLink: "API參考(Swagger)", licenseLabel: "License:", licenseDescription: "SnapOtter is open-source software licensed under the GNU Affero General Public License v3 (AGPLv3).", }, }, auth: { login: "登入", logout: "登出", username: "使用者名稱", password: "密碼", loginButton: "登入", loggingIn: "正在登入...", invalidCredentials: "使用者名稱或密碼無效", connectionError: "連線錯誤", signInWith: "使用{provider}登入", signInWithSso: "使用SSO登入", or: "或", methodLocal: "本機", methodOidc: "OIDC", methodBoth: "本機 + OIDC", oidcAuthFailed: "驗證失敗,請重試。", oidcProviderUnreachable: "無法連線到身分提供者,請稍後重試。", oidcSessionExpired: "登入工作階段已到期,請重試。", oidcUserNotAuthorized: "您的帳戶無權存取此應用程式。請聯絡管理員。", oidcUserLimitReached: "已達使用者上限,請聯絡管理員。", oidcGenericError: "驗證錯誤,請重試。", samlAuthFailed: "SAML authentication failed. Please try again.", samlUserNotAuthorized: "Your account is not authorized to access this application. Contact your administrator.", samlUserLimitReached: "User limit reached. Contact your administrator.", ssoEnforcedLocalRestricted: "Local login is restricted to authorized administrators.", mfaRequired: "Enter your authentication code", mfaRecoveryHint: "You can also use a recovery code", verify: "Verify", verifying: "Verifying...", mfaInvalidCode: "Invalid code. Please try again.", mfaEnrollmentRequired: "Your organization requires multi-factor authentication. Please set up MFA in your account settings.", methodSaml: "SAML", passwordManagedByProvider: "密碼由您的身分提供者管理。", enterUsername: "輸入使用者名稱", enterPassword: "輸入密碼", heroTitle: "你的影像,由你掌控。", heroSubtitle: "你需要的每一個影像工具。", rotatingPhrases: [ "無需註冊,無需帳號。", "絕不上傳到雲端。", "100%本機處理。", "免費,永久免費。", "無限制,無隱藏上限。", "完全離線可用。", "無限批次處理。", "70+個影像工具。", "15個AI模型,在你的硬體上執行。", "極速處理,基於Sharp打造。", "支援內網部署。", "一個Docker容器搞定一切。", "開放原始碼,始終如一。", "每個像素都留在你的硬體上。", "你的伺服器,你做主。", "一條docker pull指令即可部署。", "自架式的最佳選擇。", "調整、壓縮、轉檔,全在本機。", "免費影像編輯器,無浮水印。", "批次影像處理,無限量。", "離線移除背景。", "自架式的Canva替代方案。", "無需API金鑰。", "從設計上即符合GDPR。", "無需網路也能使用。", ], }, changePassword: { title: "變更您的密碼", description: "繼續之前需要設定新密碼。密碼至少8個字元,包含大寫、小寫字母和數字。", usernameLabel: "使用者名稱", currentPasswordLabel: "目前密碼", currentPasswordPlaceholder: "輸入目前密碼", newPasswordLabel: "新密碼", generateButton: "產生強密碼", newPasswordPlaceholder: "至少8個字元", confirmPasswordLabel: "確認新密碼", confirmPasswordPlaceholder: "再次輸入新密碼", passwordsMismatch: "密碼不符", failedError: "變更密碼失敗", connectionError: "連線錯誤", changingButton: "變更中...", changeButton: "變更密碼", sidebarTitle: "就差一步", sidebarDescription: "設定一組強密碼來保護您的帳戶,然後就可以開始使用了。", }, automate: { title: "自動化", invalidPipelineFile: "不是有效的SnapOtter Pipeline檔案", newerVersion: "此Pipeline是用更新版本的SnapOtter建立的", missingName: "Pipeline檔案缺少名稱", noSteps: "Pipeline檔案沒有步驟", importFailed: "匯入失敗", couldNotRead: "無法讀取Pipeline檔案", fileCount: "{count}個檔案", fileCountPlural: "{count}個檔案", importFromLibrary: "從程式庫匯入", addButton: "+ 加入", libraryButton: "程式庫", clearButton: "清除", processingFailed: "此檔案處理失敗", processingMultiple: "正在處理{count}個檔案...", processingPipeline: "正在處理Pipeline...", processButton: "處理", processButtonMultiple: "處理({count})", processAllButton: "全部處理({count})", addTool: "加入工具", toolPalette: "工具面板", clickToAdd: "點擊加入到Pipeline", savedLabel: "已儲存", importButton: "匯入", noSavedPipelines: "沒有已儲存的Pipeline", stepCount: "({count}個步驟)", stepCountPlural: "({count}個步驟)", exportPipeline: "匯出Pipeline", deletePipeline: "刪除Pipeline", moreCount: "+{count}個更多", pipelineBuilder: "Pipeline建構器", addToolsPrompt: "從工具面板加入工具以開始", stepsConfigured: "已設定{count}個步驟", stepsConfiguredPlural: "已設定{count}個步驟", noFilesLoaded: "沒有載入檔案", downloadZip: "下載ZIP", saveButton: "儲存", pipelineNamePlaceholder: "Pipeline名稱", descriptionPlaceholder: "描述", savingIndicator: "...", cancelButton: "取消", preview: "預覽", previousImage: "上一張影像", nextImage: "下一張影像", imageCounter: "{current} / {total}", imageArea: "影像區域", templateSocialMedia: "社群媒體就緒", templatePrivacyClean: "隱私清理", templateWebOptimization: "網頁最佳化", templateProfilePicture: "頭像製作", templateWatermarkBatch: "批次浮水印", createNew: "建立新自動化", savedAutomations: "已儲存的自動化", templates: "範本", addStep: "加入步驟", removeStep: "移除", moveUp: "上移", moveDown: "下移", savePipeline: "儲存Pipeline", runPipeline: "處理", pipelineName: "Pipeline名稱", pipelineDescription: "描述(選填)", noStepsPrompt: "加入步驟來建構自動化", noStepsHeading: "No steps yet", searchToolsPlaceholder: "Search tools...", step: "步驟", }, nav: { tools: "工具", reader: "閱讀器", automate: "自動化", editor: "編輯器", files: "檔案", help: "說明", settings: "設定", grid: "格線", }, files: { myFiles: "My Files", recentTab: "Recent", uploadTab: "Upload Files", fileDetailsAriaLabel: "File Details", fileDetailsHeading: "File Details", searchPlaceholder: "Search files...", selectedCount: "{count} selected", fileCount: "{count} files", fileCountSingular: "{count} file", noFilesFound: "No files found", selectFilePrompt: "Select a file to view details", openFile: "Open File", openInPipeline: "Open in Pipeline", name: "Name", format: "Format", size: "Size", dimensions: "Dimensions", version: "Version", toolsUsed: "Tools Used", none: "None", delete: "Delete", pipeline: "Pipeline", download: "Download", }, dropzone: { unsupportedFileType: "此工具不支援該檔案類型", urlFetchFailed: "無法從URL取得影像", ariaLabel: "檔案拖放區域", dropPrompt: "將影像拖放到此處", browseOrPaste: "點擊任意位置瀏覽檔案,或從剪貼簿貼上", uploadButton: "上傳", defaultFormats: "PNG、JPG、WebP、HEIC、RAW、PSD及65+種格式", orSeparator: "或", urlPlaceholder: "貼上影像URL...", urlLoadingIndicator: "...", addUrlButton: "加入", importMultipleUrls: "匯入多個URL...", filesSelected: "已選取{count}個檔案", dropToAdd: "放下以新增檔案", dropToReplace: "放下以取代檔案", }, reviewPanel: { processedResultAlt: "處理結果", sizeLabel: "大小:{size}", typeLabel: "類型:{type}", processedLabel: "處理時間:{time}", undoButton: "復原", downloadButton: "下載", openInEditor: "在編輯器中開啟", reviewHeading: "檢閱", continueEditing: "繼續編輯", }, features: { notEnabledTitle: "功能未啟用", notEnabledDescription: "此功能未啟用。請讓管理員在設定中啟用。", requiresDownload: "此功能需要額外下載(約{size})", retryButton: "重試", queued: "已加入安裝佇列...", enableButton: "啟用{name}", repairRequired: "Repair Required", repairDescription: "Some model files are missing or corrupted. Repair will re-download them.", repairButton: "Repair {name}", lessThanMinute: "不到一分鐘", oneMinuteLeft: "約1分鐘", minutesLeft: "約{mins}分鐘", progressMessages: [ "快好了...大概吧...", "好東西值得等待...", "總比等水燒開快...", "你的耐心值得敬佩...", "比表面上努力得多...", "精彩即將來臨,信我...", "正在幕後做重要的事...", "看到這條表示在運作中...", "正在準備好料...", "每一秒都值得,打勾勾...", "懸念也是體驗的一部分...", "正在教你的電腦新把戲...", "正在幫你設定超能力...", "你的影像以後會謝你...", "載入中...但要有格調...", "現在是泡杯茶的好時機...", "羅馬也不是一天造出來的...", "噓...天才在工作中...", "你的照片正在期待接下來的效果...", "正在組建夢幻團隊...", "正在拆封好東西...", "快想好要不要開始了...開個玩笑啦...", "劇情反轉:這真的在做事...", "正在暖機創意引擎...", "想像力載入中...", "不是螢幕保護程式,保證...", "偉大的藝術需要時間安裝...", "未來的你會感謝現在的你...", "正在取得一些超厲害的檔案...", "稍等一下,好戲還在後頭...", ], }, help: { heading: "說明", gettingStarted: { heading: "快速入門", description: "從側邊欄選擇一個工具或搜尋工具。將影像拖放到頁面上或點擊上傳區域來上傳影像。調整設定後下載結果。", }, keyboardShortcuts: { heading: "鍵盤快速鍵", focusSearchBar: "聚焦搜尋列", goToTools: "前往工具", toggleTheme: "切換佈景主題", goToResize: "前往調整大小", goToCrop: "前往裁切", goToCompress: "前往壓縮", goToConvert: "前往轉檔", goToRemoveBackground: "前往移除背景", goToWatermarkText: "前往文字浮水印", goToStripMetadata: "前往移除中繼資料", goToImageInfo: "前往影像資訊", processFile: "處理檔案", downloadResult: "下載結果", }, resources: { heading: "資源", githubLink: "GitHub儲存庫", reportIssueLink: "回報問題", docsLink: "說明文件", apiRefLink: "API參考(Swagger)", }, versionLabel: "SnapOtter v{version}", }, errors: { generic: "發生錯誤", offline: "您已離線", reconnecting: "正在重新連線到伺服器...", connected: "已連線", processingFailed: "此檔案處理失敗", timeout: "要求逾時。伺服器可能過載,請重試。", networkError: "網路錯誤,請檢查您的連線。", invalidCredentials: "使用者名稱或密碼無效", connectionError: "連線錯誤", }, analytics: { consentTitle: "協助改進SnapOtter", consentDescription: "匿名使用資料協助我們修復問題並開發你真正需要的工具。你的影像和檔案始終留在你的裝置上。", consentChangeable: "你可以隨時在設定中關閉。", acceptButton: "好的,沒問題", declineButton: "暫時不用", settingsTitle: "產品分析", settingsDescription: "分享匿名使用資料以協助改進SnapOtter。", settingsPrivacy: "您的影像永遠不會離開您的裝置。", settingsDisabledByAdmin: "產品分析已被伺服器管理員停用。", learnMore: "了解更多", }, sidebar: { tools: "工具", grid: "格線", automate: "自動化", editor: "編輯器", files: "檔案", help: "說明", settings: "設定", }, toolCard: { addToFavourites: "加入收藏", }, appLayout: { mobileNavTools: "工具", mobileNavAutomate: "自動化", mobileNavEditor: "編輯器", mobileNavFiles: "檔案", mobileNavSettings: "設定", }, a11y: { skipToContent: "Skip to main content", openSidebar: "Open sidebar", closeSidebar: "Close sidebar", closeSettings: "Close settings", closeHelp: "Close help", closeDialog: "Close dialog", zoomIn: "Zoom in", zoomOut: "Zoom out", fitToView: "Fit to view", actualSize: "Actual size", previousImage: "Previous image", nextImage: "Next image", imageArea: "Image area", imageViewer: "Image viewer", fileDropZone: "File drop zone", imageDropZone: "Image drop zone", beforeAfterSlider: "Before/after comparison slider", imageControls: "Image controls", zoomControls: "Zoom controls", dragToReorder: "Drag to reorder", whiteBackground: "White background", blackBackground: "Black background", expandPanel: "Expand panel", collapsePanel: "Collapse panel", swapDimensions: "Swap dimensions", applyCrop: "Apply crop", cancelCrop: "Cancel crop", fontFamily: "Font family", textColor: "Text color", flipHorizontal: "Flip horizontal", flipVertical: "Flip vertical", hexColorValue: "Hex color value", backgroundColor: "Background color", foregroundColor: "Foreground color", swapColors: "Swap foreground and background colors", resetColors: "Reset to default black and white", foregroundHex: "Foreground color hex value", undo: "Undo", redo: "Redo", layers: "Layers", addLayer: "Add layer", deleteLayer: "Delete layer", cancelOperation: "Cancel operation", fill: "Fill", fileDetails: "File details", language: "Language", selected: "Selected", deleteKey: "Delete key", editRole: "Edit role", deleteRole: "Delete role", notInstalled: "Not installed", queued: "Queued for install", installing: "Installing", imageNOfTotal: "Image {n} of {total}", processingComplete: "Image processed successfully", processingFailed: "Processing failed", settingsDialog: "Settings", helpDialog: "Help", navigationMenu: "Navigation", }, } as const; export default zhTW;