mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
3378 lines
112 KiB
TypeScript
3378 lines
112 KiB
TypeScript
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: "複製<img>標籤",
|
||
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;
|