Files
SnapOtter/packages/shared/src/i18n/th.ts
T

3416 lines
158 KiB
TypeScript

import type { TranslationKeys } from "./en.js";
export const th: 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: "แยกข้อความจากเอกสาร PDF ด้วย OCR ที่ขับเคลื่อนด้วย AI",
},
"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: "ซ้อนโลโก้เป็นลายน้ำ",
},
"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: "สร้างคิวอาร์โค้ด",
description: "สร้างคิวอาร์โค้ดพร้อมสไตล์ สี ลวดลาย และโลโก้ที่กำหนดเอง",
},
"html-to-image": {
name: "HTML to Image",
description: "Capture webpages as high-quality images",
},
"barcode-read": {
name: "อ่านบาร์โค้ด",
description: "สแกนภาพเพื่อหาคิวอาร์โค้ด บาร์โค้ด และโค้ด 2D",
},
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}x",
submitBatch: "ขยาย {scale}x ({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 หาบริเวณที่มีรายละเอียดและข้อมูลมากที่สุด",
attention: "Attention",
entropy: "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: "ขนาด (mm)",
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: "SMS",
styling: "การจัดสไตล์",
dotStyle: "สไตล์จุด",
cornerSquareStyle: "สไตล์สี่เหลี่ยมมุม",
cornerDotStyle: "สไตล์จุดมุม",
foregroundColor: "สีพื้นหน้า",
bgColor: "สีพื้นหลัง",
logo: "โลโก้",
downloadFormat: "รูปแบบดาวน์โหลด",
submit: "สร้างคิวอาร์โค้ด",
download: "ดาวน์โหลดคิวอาร์โค้ด",
},
"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: "โลโก้",
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",
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",
},
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: "จัดการคีย์ API สำหรับเข้าถึง SnapOtter แบบโปรแกรม",
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 container เดียว",
"โอเพนซอร์ส ตลอดไป",
"ทุกพิกเซลอยู่บนเครื่องของคุณ",
"เซิร์ฟเวอร์คุณ กฎคุณ",
"ติดตั้งด้วย 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: "ไม่ใช่ไฟล์ Pipeline SnapOtter ที่ถูกต้อง",
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: "ไปที่ข้อมูลภาพ",
},
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;