2026-05-15 17:02:49 +08:00
import type { TranslationKeys } from "./en.js" ;
export const es : TranslationKeys = {
common : {
upload : "Subir desde la computadora" ,
process : "Procesar" ,
download : "Descargar" ,
cancel : "Cancelar" ,
save : "Guardar" ,
delete : "Eliminar" ,
settings : "Configuracion" ,
search : "Buscar herramientas..." ,
dropFiles : "Arrastra archivos aqui o haz clic en el boton de carga" ,
loading : "Cargando..." ,
2026-06-14 21:53:42 +08:00
saving : "Saving..." ,
2026-05-15 17:02:49 +08:00
error : "Ocurrio un error" ,
confirm : "Confirmar" ,
close : "Cerrar" ,
back : "Atras" ,
next : "Siguiente" ,
clear : "Limpiar" ,
copy : "Copiar" ,
copied : "Copiado!" ,
noResults : "No se encontraron resultados" ,
showLess : "Mostrar menos" ,
showMore : "Mostrar {count} mas" ,
experimental : "Experimental" ,
enabled : "Activado" ,
disabled : "Desactivado" ,
rename : "Renombrar" ,
edit : "Editar" ,
actions : "Acciones" ,
create : "Crear" ,
or : "o" ,
goHome : "Ir al inicio" ,
somethingWentWrong : "Algo salio mal" ,
unexpectedError : "Ocurrio un error inesperado." ,
retry : "Reintentar" ,
privacyPolicy : "Politica de privacidad" ,
2026-06-05 22:31:28 +08:00
pageNotFound : "Page not found" ,
2026-06-06 20:47:08 +08:00
pageNotFoundDescription : "The page you are looking for does not exist or has been moved." ,
},
2026-05-15 17:02:49 +08:00
categories : {
essentials : "Esenciales" ,
adjustments : "Ajustes" ,
2026-06-13 14:45:06 +08:00
enhance : "Enhance & AI" ,
2026-05-15 17:02:49 +08:00
watermark : "Marca de agua y superposicion" ,
layout : "Diseno y composicion" ,
2026-06-13 14:45:06 +08:00
utilities : "Utilidades" ,
optimization : "Optimizacion" ,
2026-05-15 17:02:49 +08:00
format : "Formato y conversion" ,
2026-06-13 14:45:06 +08:00
"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" ,
2026-06-13 10:18:49 +08:00
data : "Data Files" ,
2026-06-13 14:45:06 +08:00
archives : "Archives" ,
2026-05-15 17:02:49 +08:00
},
2026-06-13 10:18:39 +08:00
modalities : {
image : "Image" ,
video : "Video" ,
audio : "Audio" ,
documentsAndFiles : "Documents & Files" ,
},
2026-05-15 17:02:49 +08:00
tools : {
resize : {
name : "Redimensionar" ,
description : "Redimensiona por pixeles, porcentaje o presets de redes sociales" ,
},
crop : {
name : "Recortar" ,
description : "Recorte libre, relaciones de aspecto, recorte con forma" ,
},
rotate : { name : "Rotar y voltear" , description : "Rota, voltea y endereza imagenes" },
convert : { name : "Convertir" , description : "Convierte entre formatos de imagen" },
compress : {
name : "Comprimir" ,
description : "Reduce el tamano del archivo por calidad o tamano objetivo" ,
},
"optimize-for-web" : {
name : "Optimizar para web" ,
description :
"Optimiza imagenes para web con conversion de formato, control de calidad y vista previa en vivo" ,
},
"strip-metadata" : {
name : "Eliminar metadatos" ,
description : "Elimina EXIF, GPS e informacion de la camara" ,
},
"edit-metadata" : {
name : "Editar metadatos" ,
description : "Edita EXIF, IPTC, XMP, GPS, palabras clave y fechas" ,
},
"bulk-rename" : {
name : "Renombrado masivo" ,
description : "Renombra multiples archivos con patrones" ,
},
"image-to-pdf" : {
name : "Imagen a PDF" ,
description : "Combina imagenes en un documento PDF" ,
},
"pdf-to-image" : { name : "PDF a imagen" , description : "Convierte paginas PDF a imagenes" },
favicon : {
name : "Generador de Favicon" ,
description : "Genera todos los tamanos de favicon e iconos de app" ,
},
"adjust-colors" : {
name : "Ajustar colores" ,
description : "Brillo, contraste, exposicion, saturacion, temperatura, nitidez y efectos" ,
},
sharpening : {
name : "Enfoque" ,
description : "Enfoque adaptativo, mascara de desenfoque y paso alto con presets" ,
},
"replace-color" : {
name : "Reemplazar e invertir color" ,
description : "Reemplaza colores especificos o invierte" ,
},
"color-blindness" : {
name : "Simulacion de daltonismo" ,
description :
"Simula como se ven las imagenes con diferentes tipos de deficiencia de vision del color" ,
},
"remove-background" : {
name : "Eliminar fondo" ,
description : "Eliminacion de fondo con AI" ,
},
upscale : { name : "Escalar imagen" , description : "Mejora de super-resolucion con AI" },
"erase-object" : {
name : "Borrador de objetos" ,
description : "Elimina objetos no deseados con AI" ,
},
ocr : {
name : "OCR / Extraccion de texto" ,
description : "Extrae texto de imagenes con precision potenciada por AI" ,
},
2026-06-13 10:19:23 +08:00
"ocr-pdf" : {
name : "OCR de PDF" ,
description : "Extrae texto de documentos PDF con OCR potenciado por IA" ,
},
2026-05-15 17:02:49 +08:00
"blur-faces" : {
name : "Desenfocar rostros / datos sensibles" ,
description : "Detecta y desenfoca rostros e informacion sensible automaticamente" ,
},
"enhance-faces" : {
name : "Mejora de rostros" ,
description : "Restaura y mejora rostros con AI" ,
},
"smart-crop" : {
name : "Recorte inteligente" ,
description : "Recorte inteligente por sujeto, rostro o bordes" ,
},
"image-enhancement" : {
name : "Mejora de imagen" ,
description :
"Mejora automatica con un clic: exposicion, contraste, color y nitidez inteligentes" ,
},
"noise-removal" : {
name : "Eliminacion de ruido" ,
description : "Eliminacion de ruido y grano con AI" ,
},
"red-eye-removal" : {
name : "Eliminacion de ojos rojos" ,
description : "Deteccion y correccion de ojos rojos con AI para fotos con flash" ,
},
"restore-photo" : {
name : "Restauracion de fotos" ,
description : "Repara rasguños, roturas y daños en fotos antiguas con AI" ,
},
"content-aware-resize" : {
name : "Redimension consciente del contenido" ,
description : "Redimensiona imagenes de forma inteligente preservando el contenido importante" ,
},
"ai-canvas-expand" : {
name : "Expandir lienzo con AI" ,
description : "Expande el lienzo con relleno generado por AI" ,
},
colorize : {
name : "Colorizacion con AI" ,
description :
"Convierte fotos en blanco y negro a color usando modelos de aprendizaje profundo con AI" ,
},
"passport-photo" : {
name : "Foto de pasaporte" ,
description :
"Crea fotos de pasaporte, visa e identificacion que cumplen con los requisitos oficiales, con deteccion automatica de rostro" ,
},
2026-06-13 10:19:23 +08:00
"transcribe-audio" : {
name : "Transcribir audio" ,
description : "Convierte voz a texto con transcripcion impulsada por IA" ,
},
"auto-subtitles" : {
name : "Subtitulos automaticos" ,
description : "Genera archivos de subtitulos a partir de pistas de audio de video" ,
},
2026-05-15 17:02:49 +08:00
"transparency-fixer" : {
name : "Corrector de transparencia PNG" ,
description : "Corrige PNGs con transparencia falsa en un clic" ,
},
2026-06-13 10:19:23 +08:00
"background-replace" : {
name : "Reemplazar fondo" ,
description : "Reemplazar el fondo de la imagen con un color solido" ,
},
"blur-background" : {
name : "Desenfocar fondo" ,
description : "Desenfocar el fondo manteniendo el sujeto nitido" ,
},
2026-05-15 17:02:49 +08:00
"watermark-text" : {
name : "Marca de agua de texto" ,
description : "Agrega una marca de agua de texto" ,
},
"watermark-image" : {
name : "Marca de agua de imagen" ,
description : "Superpone un logo como marca de agua" ,
},
"text-overlay" : {
name : "Texto superpuesto" ,
description : "Agrega texto con estilo a las imagenes" ,
},
compose : {
name : "Composicion de imagen" ,
description : "Superpone imagenes con posicion y opacidad" ,
},
"meme-generator" : {
name : "Generador de Meme" ,
description :
"Crea memes con plantillas populares o tus propias imagenes. Texto clasico estilo Impact con fuentes, colores y posicion personalizables." ,
},
info : {
name : "Info de imagen" ,
description : "Ve todos los metadatos y propiedades de la imagen" ,
},
compare : { name : "Comparar imagenes" , description : "Comparacion lado a lado de dos imagenes" },
"find-duplicates" : {
name : "Buscar duplicados" ,
description : "Detecta imagenes duplicadas y casi duplicadas" ,
},
"color-palette" : {
name : "Paleta de colores" ,
description : "Extrae los colores dominantes de una imagen" ,
},
"qr-generate" : {
name : "Generador de codigos QR" ,
description : "Genera codigos QR con estilos, colores personalizados, patrones y logos" ,
},
2026-06-06 20:47:08 +08:00
"html-to-image" : {
name : "HTML to Image" ,
description : "Capture webpages as high-quality images" ,
},
2026-05-15 17:02:49 +08:00
"barcode-read" : {
name : "Lector de codigos de barras" ,
description : "Escanea imagenes en busca de codigos QR, codigos de barras y codigos 2D" ,
},
collage : {
name : "Collage / Cuadricula" ,
description : "Combina imagenes en hermosos collages con mas de 25 plantillas" ,
},
stitch : {
name : "Unir / Combinar" ,
description : "Une imagenes lado a lado, apiladas o en cuadricula" ,
},
split : {
name : "Dividir imagen" ,
description : "Divide imagenes en cuadricula o por tamano en pixeles con vista previa en vivo" ,
},
border : {
name : "Borde y marco" ,
description : "Agrega bordes, relleno, esquinas redondeadas y sombras con presets de un clic" ,
},
beautify : {
name : "Embellecer captura de pantalla" ,
description :
"Agrega fondos degradados, marcos de dispositivo, sombras y tamanos de redes sociales a capturas de pantalla" ,
},
2026-06-13 10:19:16 +08:00
"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" ,
},
2026-05-15 17:02:49 +08:00
"svg-to-raster" : {
name : "SVG a raster" ,
description :
"Convierte SVG a PNG, JPEG, WebP, AVIF, TIFF, GIF o HEIF a escala y DPI personalizados" ,
},
vectorize : {
name : "Imagen a SVG" ,
description : "Convierte imagenes a graficos vectoriales escalables" ,
},
"gif-tools" : {
name : "Herramientas GIF" ,
description :
"Redimensiona, optimiza, cambia velocidad, invierte, extrae fotogramas y rota GIFs animados" ,
},
"image-to-base64" : {
name : "Imagen a Base64" ,
description : "Convierte imagenes a cadenas Base64 para incrustar en HTML, CSS y mas" ,
},
2026-06-13 10:19:16 +08:00
"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" ,
},
2026-06-13 10:18:49 +08:00
"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" ,
},
2026-06-13 10:19:00 +08:00
"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" ,
},
2026-06-13 10:18:49 +08:00
"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" ,
},
2026-06-13 10:19:06 +08:00
"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)" ,
},
2026-06-13 10:18:49 +08:00
"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" ,
},
2026-06-13 10:19:11 +08:00
"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." ,
},
2026-06-13 10:18:49 +08:00
"word-to-pdf" : {
name : "Word to PDF" ,
description : "Convert Word documents to PDF" ,
},
2026-06-13 10:18:55 +08:00
"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" ,
},
2026-06-13 10:19:11 +08:00
"powerpoint-to-pdf" : {
name : "PowerPoint to PDF" ,
description : "Convert presentations to PDF" ,
},
2026-06-13 10:18:55 +08:00
"html-to-pdf" : {
name : "HTML to PDF" ,
description : "Convert an HTML file to PDF. Remote resources are disabled for privacy." ,
},
2026-06-13 10:19:11 +08:00
"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." ,
},
2026-06-13 10:18:55 +08:00
"markdown-to-pdf" : {
name : "Markdown to PDF" ,
description :
"Convert a Markdown file to a styled PDF. Remote resources are disabled for privacy." ,
},
2026-06-13 10:19:11 +08:00
"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" ,
},
2026-06-13 10:18:49 +08:00
"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" ,
},
2026-06-13 10:19:11 +08:00
"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." ,
},
2026-05-15 17:02:49 +08:00
pipeline : {
name : "Constructor de Pipeline" ,
description : "Encadena multiples herramientas en un flujo de trabajo" ,
},
2026-06-13 10:17:13 +08:00
processing : { canceled : "Processing canceled" },
2026-06-13 10:18:39 +08:00
mediaPlayer : {
unsupported : "Your browser does not support this media format." ,
},
documentView : {
loadFailed : "Failed to load document." ,
previousPage : "Previous page" ,
nextPage : "Next page" ,
},
2026-05-15 17:02:49 +08:00
},
toolSettings : {
compress : {
compressionMode : "Modo de compresion" ,
targetSize : "Tamano objetivo" ,
quality : "Calidad" ,
smallestFile : "Archivo mas pequeno" ,
bestQuality : "Mejor calidad" ,
submit : "Comprimir" ,
submitBatch : "Comprimir ({count} archivos)" ,
progressLabel : "Comprimiendo" ,
original : "Original: {size} KB" ,
processed : "Procesado: {size} KB" ,
saved : "Ahorro: {percent}%" ,
},
resize : {
customSize : "Tamano personalizado" ,
scale : "Escala" ,
presets : "Presets" ,
contentAware : "Consciente del contenido" ,
widthPx : "Ancho (px)" ,
heightPx : "Alto (px)" ,
fitMode : "Modo de ajuste" ,
cropToFit : "Recortar para ajustar" ,
fitInside : "Ajustar dentro" ,
stretch : "Estirar" ,
limitToOriginalSize : "Limitar al tamano original" ,
limitToOriginalSizeHint :
"Si tu imagen ya es mas pequena que el objetivo, se mantiene como esta en lugar de escalarla" ,
scalePercent : "Escala (%)" ,
resizeToSquare : "Redimensionar a cuadrado" ,
protectFaces : "Proteger rostros" ,
smoothing : "Suavizado" ,
edgeSensitivity : "Sensibilidad de bordes" ,
submit : "Redimensionar" ,
submitBatch : "Redimensionar ({count} archivos)" ,
progressLabel : "Redimensionando" ,
},
crop : {
aspectRatio : "Relacion de aspecto" ,
custom : "Personalizado" ,
positionAndSize : "Posicion y tamano" ,
ruleOfThirds : "Regla de tercios" ,
leftOffsetPx : "Desplazamiento izquierdo (px)" ,
topOffsetPx : "Desplazamiento superior (px)" ,
submit : "Recortar" ,
submitBatch : "Recortar ({count} archivos)" ,
progressLabel : "Recortando" ,
},
rotate : {
rotate : "Rotar" ,
angle : "Angulo" ,
straighten : "Enderezar" ,
flip : "Voltear" ,
horizontal : "Horizontal" ,
vertical : "Vertical" ,
resetAllChanges : "Restablecer todos los cambios" ,
submit : "Aplicar" ,
submitBatch : "Aplicar ({count} archivos)" ,
progressLabel : "Aplicando" ,
},
convert : {
targetFormat : "Formato de destino" ,
sourceFormat : "Formato de origen" ,
quality : "Calidad" ,
submit : "Convertir" ,
submitBatch : "Convertir ({count} archivos)" ,
progressLabel : "Convirtiendo" ,
},
"optimize-for-web" : {
outputFormat : "Formato de salida" ,
quality : "Calidad" ,
smallestFile : "Archivo mas pequeno" ,
bestQuality : "Mejor calidad" ,
maxDimensions : "Dimensiones maximas" ,
maxWidth : "Ancho maximo" ,
maxHeight : "Alto maximo" ,
stripMetadata : "Eliminar metadatos" ,
sizeComparison : "Comparacion de tamano" ,
optimized : "Optimizado:" ,
smaller : "{percent}% mas pequeno" ,
larger : "{percent}% mas grande" ,
submit : "Procesar y descargar" ,
submitBatch : "Procesar y descargar ({count} archivos)" ,
progressLabel : "Optimizando" ,
},
"strip-metadata" : {
currentMetadata : "Metadatos actuales" ,
readingMetadata : "Leyendo metadatos..." ,
noMetadataFound : "No se encontraron metadatos en esta imagen." ,
removeAllMetadata : "Eliminar todos los metadatos" ,
selectSpecific : "O selecciona metadatos especificos:" ,
stripExif : "Eliminar EXIF (info de camara, fecha, exposicion)" ,
stripGps : "Eliminar GPS (datos de ubicacion)" ,
stripIcc : "Eliminar ICC (perfil de color)" ,
stripXmp : "Eliminar XMP (metadatos extensibles)" ,
locationFound : "ubicacion encontrada" ,
locationWarning :
"Esta imagen contiene tu ubicacion precisa. Considera eliminar los datos GPS antes de compartirla." ,
metadataSections : "{count} seccion de metadatos encontrada" ,
metadataSectionsPlural : "{count} secciones de metadatos encontradas" ,
metadataRemoved : "Metadatos eliminados: {size} KB" ,
submit : "Eliminar metadatos" ,
progressLabel : "Eliminando metadatos" ,
},
"edit-metadata" : {
readingMetadata : "Leyendo metadatos..." ,
couldNotReadMetadata : "No se pudieron leer los metadatos - los campos comenzaran vacios." ,
basicInfo : "Informacion basica" ,
description : "Descripcion" ,
artist : "Artista" ,
copyright : "Copyright" ,
software : "Software" ,
iptc : "IPTC" ,
title : "Titulo" ,
headline : "Titular" ,
city : "Ciudad" ,
stateProvince : "Estado/Provincia" ,
country : "Pais" ,
dateAndTime : "Fecha y hora" ,
editDates : "Editar fechas" ,
shiftAllDates : "Ajustar todas las fechas" ,
dateModified : "Fecha de modificacion" ,
dateTaken : "Fecha de captura" ,
shiftHint :
"Ajusta todos los campos de fecha con un desfase (util para correcciones de zona horaria)" ,
direction : "Direccion" ,
forward : "+ Adelante" ,
backward : "- Atras" ,
hoursMinutes : "Horas:Minutos" ,
locationGps : "Ubicacion (GPS)" ,
locationDataFound : "Datos de ubicacion encontrados" ,
noGpsData : "Sin datos GPS. Agrega coordenadas abajo." ,
latitude : "Latitud" ,
longitude : "Longitud" ,
altitudeMeters : "Altitud (metros)" ,
removeAllGpsData : "Eliminar todos los datos GPS" ,
keywords : "Palabras clave" ,
addKeywordPlaceholder : "Agregar palabra clave y presionar Enter" ,
addToExisting : "Agregar a las existentes" ,
replaceAll : "Reemplazar todas" ,
allMetadata : "Todos los metadatos" ,
templates : "Plantillas" ,
templateNamePlaceholder : "Nombre de la plantilla" ,
uploadPrompt : "Sube una imagen para editar sus metadatos." ,
changes : "{count} cambios:" ,
modified : "{count} modificados" ,
removed : "{count} eliminados" ,
gpsCleared : "GPS eliminado" ,
gpsAdded : "GPS agregado" ,
datesShifted : "fechas ajustadas" ,
submit : "Aplicar metadatos" ,
progressLabel : "Escribiendo metadatos" ,
},
"bulk-rename" : {
pattern : "Patron" ,
patternHint : "Variables: {{index}}, {{padded}}, {{original}}" ,
startIndex : "Indice inicial" ,
preview : "Vista previa" ,
andMore : "... y {count} mas" ,
renaming : "Renombrando..." ,
submit : "Renombrar {count} archivos" ,
zipDownloaded : "ZIP descargado correctamente" ,
},
"image-to-pdf" : {
imageCount : "{count} imagen se convertira a {mode}" ,
imageCountPlural : "{count} imagenes se convertiran a {mode}" ,
singlePdfMode : "un solo PDF, una imagen por pagina" ,
separatePdfMode : "PDFs separados, uno por imagen" ,
combineAllImages : "Combinar todas las imagenes en un PDF" ,
pageSize : "Tamano de pagina" ,
orientation : "Orientacion" ,
portrait : "Vertical" ,
landscape : "Horizontal" ,
margin : "Margen" ,
targetSizeLabel : "Tamano de archivo objetivo (opcional)" ,
targetSizePlaceholder : "ej. 2" ,
targetSizeHint : "Dejar vacio para calidad maxima" ,
targetSizeMet : "Objetivo alcanzado" ,
targetSizeNotMet : "No se pudo alcanzar el objetivo. Archivo comprimido a calidad minima." ,
targetSizeTooSmall : "El objetivo debe ser al menos 50KB" ,
jpegQualityLabel : "Calidad JPEG utilizada" ,
noImage : "Sin imagen" ,
submitCollate : "Crear PDF ({count} paginas)" ,
submitSeparate : "Crear {count} PDFs" ,
downloadPdf : "Descargar PDF" ,
downloadZip : "Descargar ZIP" ,
progressLabel : "Creando PDF" ,
uploadingImages : "Subiendo imagenes..." ,
processingPages : "Procesando {count} paginas..." ,
},
"pdf-to-image" : {
dropPdf : "Arrastra un PDF aqui o haz clic para seleccionar" ,
readingPdf : "Leyendo PDF..." ,
pageCount : "{count} pagina" ,
pageCountPlural : "{count} paginas" ,
outputFormat : "Formato de salida" ,
quality : "Calidad" ,
resolutionDpi : "Resolucion (DPI)" ,
dpiScreen : "Pantalla" ,
dpiStandard : "Estandar" ,
dpiPrint : "Impresion" ,
dpiHighQuality : "Alta calidad" ,
colorMode : "Modo de color" ,
colorModeColor : "Color" ,
colorModeGrayscale : "Escala de grises" ,
colorModeBw : "B&N" ,
pages : "Paginas" ,
allPages : "Todas las paginas" ,
pagesHint : "ej. 1-3, 5, 8-10 (el documento tiene {count} paginas)" ,
converting : "Convirtiendo..." ,
submit : "Convertir {count} pagina" ,
submitPlural : "Convertir {count} paginas" ,
downloadAllZip : "Descargar todo (ZIP)" ,
},
favicon : {
uploadHint :
"Sube imagenes cuadradas (se recomienda 512x512 o mayor) para generar todos los tamanos de favicon e iconos de app." ,
multipleHint : "Cada una de las {count} imagenes obtiene su propia carpeta en el ZIP." ,
generatedSizes : "Tamanos generados (por imagen)" ,
plusManifest : "+ manifest.json + fragmento HTML" ,
submit : "Generar Favicons ({count} imagen)" ,
submitPlural : "Generar Favicons ({count} imagenes)" ,
downloadZip : "Descargar ZIP de Favicons" ,
progressLabel : "Generando Favicons" ,
},
"adjust-colors" : {
light : "Luz" ,
brightness : "Brillo" ,
contrast : "Contraste" ,
exposure : "Exposicion" ,
color : "Color" ,
saturation : "Saturacion" ,
temperature : "Temperatura" ,
temperatureHint : "frio / calido" ,
tint : "Tono" ,
tintHint : "verde / magenta" ,
hue : "Matiz" ,
detail : "Detalle" ,
sharpness : "Nitidez" ,
effects : "Efectos" ,
none : "ninguno" ,
grayscale : "escala de grises" ,
sepia : "sepia" ,
invert : "invertir" ,
colorChannels : "Canales de color" ,
channelModified : "modificado" ,
red : "Rojo" ,
green : "Verde" ,
blue : "Azul" ,
resetAll : "Restablecer todo" ,
submit : "Aplicar" ,
submitBatch : "Aplicar ({count} archivos)" ,
progressLabel : "Ajustando colores" ,
},
sharpening : {
method : "Metodo" ,
adaptive : "Adaptativo" ,
unsharpMask : "Mascara de desenfoque" ,
highPass : "Paso alto" ,
presets : "Presets" ,
textureAmount : "Cantidad de textura" ,
amount : "Cantidad" ,
strength : "Intensidad" ,
noiseReduction : "Reduccion de ruido" ,
off : "desactivado" ,
lightDenoise : "ligero" ,
mediumDenoise : "medio" ,
strongDenoise : "fuerte" ,
advancedControls : "Controles avanzados" ,
radius : "Radio" ,
flatProtection : "Proteccion de areas planas" ,
detailThreshold : "Umbral de detalle" ,
haloLimitLight : "Limite de halo (claro)" ,
haloLimitDark : "Limite de halo (oscuro)" ,
threshold : "Umbral" ,
kernelSize : "Tamano del kernel" ,
submit : "Enfocar" ,
submitBatch : "Enfocar ({count} archivos)" ,
progressLabel : "Enfocando" ,
},
"replace-color" : {
sourceColor : "Color de origen (a reemplazar)" ,
targetColor : "Color de destino (reemplazo)" ,
makeTransparent : "Hacer transparente en su lugar" ,
tolerance : "Tolerancia" ,
exactMatch : "Coincidencia exacta" ,
wideRange : "Rango amplio" ,
submit : "Reemplazar color" ,
submitBatch : "Reemplazar color ({count} archivos)" ,
progressLabel : "Reemplazando color" ,
},
"color-blindness" : {
simulationType : "Tipo de simulacion" ,
redGreen : "Rojo-Verde" ,
blueYellow : "Azul-Amarillo" ,
monochromatic : "Monocromatico" ,
submit : "Simular" ,
submitBatch : "Simular ({count} archivos)" ,
progressLabel : "Simulando daltonismo" ,
},
"remove-background" : {
subject : "Sujeto" ,
people : "Personas" ,
products : "Productos" ,
general : "General" ,
passportIdPhoto : "Foto de pasaporte / identificacion" ,
quality : "Calidad" ,
fast : "Rapido" ,
hd : "HD" ,
max : "Max" ,
ultra : "Ultra" ,
background : "Fondo" ,
transparent : "Transparente" ,
bgColor : "Color" ,
gradient : "Degradado" ,
image : "Imagen" ,
gradientDirection : "Direccion" ,
chooseBackgroundImage : "Elegir imagen de fondo" ,
effectsSection : "Efectos" ,
effectsActive : "activos" ,
blurBackground : "Desenfocar fondo" ,
intensity : "Intensidad" ,
addShadow : "Agregar sombra" ,
opacity : "Opacidad" ,
2026-06-05 23:14:57 +08:00
outputFormat : "Output Format" ,
edgeSmoothing : "Edge Smoothing" ,
edgeSmoothingOff : "Off" ,
edgeSmoothingLight : "Light" ,
edgeSmoothingMedium : "Medium" ,
edgeSmoothingStrong : "Strong" ,
colorDecontamination : "Color Decontamination" ,
2026-05-15 17:02:49 +08:00
rendering : "Renderizando..." ,
submit : "Eliminar fondo" ,
submitBatch : "Eliminar fondo ({count} archivos)" ,
progressLabel : "Eliminando fondo" ,
},
upscale : {
scaleFactor : "Factor de escala" ,
quality : "Calidad" ,
enhanceFaces : "Mejorar rostros" ,
noiseReduction : "Reduccion de ruido" ,
noiseReductionHint :
"Suaviza el grano y el ruido. Valores mas altos eliminan mas ruido pero pueden suavizar los detalles." ,
outputFormat : "Formato de salida" ,
submit : "Escalar {scale}x" ,
submitBatch : "Escalar {scale}x ({count} archivos)" ,
progressLabel : "Escalando imagen" ,
progressLabelBatch : "Escalando {count} imagenes" ,
},
"erase-object" : {
brushSize : "Tamano del pincel" ,
fine : "Fino" ,
wide : "Ancho" ,
undo : "Deshacer" ,
clear : "Limpiar" ,
outputFormat : "Formato de salida" ,
quality : "Calidad" ,
paintHint : "Pinta sobre los objetos que quieras eliminar. Usa Ctrl+Z para deshacer." ,
submit : "Borrar objeto" ,
submitBatch : "Borrar todos ({count})" ,
progressLabel : "Borrando objeto" ,
},
ocr : {
quality : "Calidad" ,
enhanceBeforeScanning : "Mejorar antes de escanear" ,
enhanceHint :
"Endereza, mejora el contraste, elimina el ruido y escala la imagen automaticamente antes del escaneo para mayor precision." ,
language : "Idioma" ,
autoDetect : "Deteccion automatica" ,
extractedText : "Texto extraido" ,
noTextDetected : "No se detecto texto en esta imagen" ,
characters : "{count} caracteres" ,
submit : "Extraer texto" ,
submitBatch : "Extraer texto ({count} archivos)" ,
progressLabel : "Extrayendo texto" ,
},
2026-06-13 10:19:23 +08:00
"ocr-pdf" : {
quality : "Calidad" ,
language : "Idioma" ,
autoDetect : "Detectar automaticamente" ,
pages : "Paginas" ,
pagesPlaceholder : "all, 1-3, 5" ,
pagesHint : "Ingrese numeros de pagina o rangos (ej. 1-3, 5, 8-10). Maximo 50 paginas." ,
submit : "Extraer texto" ,
submitBatch : "Extraer texto ({count} archivos)" ,
progressLabel : "Extrayendo texto del PDF" ,
},
2026-05-15 17:02:49 +08:00
"blur-faces" : {
blurRadius : "Radio de desenfoque" ,
blurLight : "Ligero" ,
blurHeavy : "Fuerte" ,
detectionSensitivity : "Sensibilidad de deteccion" ,
moreFaces : "Mas rostros" ,
fewerFaces : "Menos rostros" ,
submit : "Desenfocar rostros" ,
progressLabel : "Desenfocando rostros" ,
},
"enhance-faces" : {
quality : "Calidad" ,
enhancementStrength : "Intensidad de mejora" ,
onlyCenterFace : "Solo el rostro central" ,
detectionSensitivity : "Sensibilidad de deteccion" ,
submit : "Mejorar rostros" ,
submitBatch : "Mejorar rostros ({count} archivos)" ,
progressLabel : "Mejorando rostros" ,
},
"smart-crop" : {
subjectFocus : "Enfoque en sujeto" ,
faceFocus : "Enfoque en rostro" ,
autoTrim : "Recorte automatico" ,
customSize : "Tamano personalizado" ,
socialPresets : "Presets de redes sociales" ,
detectionStrategy : "Estrategia de deteccion" ,
detectionStrategyHint :
"Atencion encuentra la region visualmente mas relevante. Entropia encuentra el area con mas detalle e informacion." ,
attention : "Atencion" ,
entropy : "Entropia" ,
padding : "Relleno" ,
paddingHint : "Espacio extra alrededor del area de enfoque" ,
outputQuality : "Calidad de salida" ,
outputQualityHint : "Para salidas JPEG y WebP. PNG siempre es sin perdida." ,
subjectDescription :
"Detecta la region mas interesante usando analisis de relevancia y recorta al tamano deseado." ,
framing : "Encuadre" ,
facePadding : "Espacio alrededor del rostro" ,
facePaddingHint : "Espacio extra alrededor de los rostros detectados" ,
fewerFalsePositives : "Menos falsos positivos" ,
faceDescription :
"Usa deteccion facial con AI para mantener los rostros bien encuadrados. Si no se detectan rostros, usa el enfoque en sujeto." ,
trimTolerance : "Tolerancia" ,
trimDescription :
"Que tan diferente puede ser un pixel del borde respecto al color del borde y aun asi ser recortado. Mayor = mas agresivo." ,
padToSquare : "Rellenar a cuadrado" ,
targetSizePx : "Tamano objetivo (px)" ,
padColor : "Color de relleno" ,
trimHint :
'Elimina bordes de color uniforme alrededor del sujeto. Activa "Rellenar a cuadrado" para imagenes listas para e-commerce.' ,
submitSubject : "Recorte inteligente" ,
submitFace : "Recorte facial" ,
submitTrim : "Recortar bordes" ,
},
imageEnhancement : {
enhancementMode : "Modo de mejora" ,
auto : "Automatico" ,
portrait : "Retrato" ,
landscape : "Paisaje" ,
lowLight : "Poca luz" ,
food : "Comida" ,
document : "Documento" ,
intensity : "Intensidad" ,
deepEnhance : "Mejora profunda (AI)" ,
deepEnhanceDescription : "Elimina ruido y artefactos usando AI" ,
deepEnhanceRequires : "Requiere el paquete de Escalado y mejora" ,
analyzingImage : "Analizando imagen..." ,
detectedIssues : "Problemas detectados" ,
imageLooksGood : "La imagen se ve bien. Ajusta con el control de intensidad." ,
issueUnderexposed : "Baja exposicion" ,
issueOverexposed : "Sobreexpuesta" ,
issueLowContrast : "Contraste plano" ,
issueColorCast : "Dominante de color" ,
issueDesaturated : "Desaturada" ,
issueSoftFocus : "Enfoque suave" ,
issueNoisy : "Ruidosa" ,
submit : "Mejorar" ,
submitDeep : "Mejora profunda" ,
submitBatch : "Mejorar ({count} archivos)" ,
submitDeepBatch : "Mejora profunda ({count} archivos)" ,
progressLabel : "Mejorando imagen" ,
progressLabelBatch : "Mejorando {count} imagenes" ,
},
"noise-removal" : {
denoisingTier : "Nivel de eliminacion de ruido" ,
quick : "Rapido" ,
balanced : "Equilibrado" ,
quality : "Calidad" ,
maximum : "Maximo" ,
quickDesc : "Rapido y ligero" ,
balancedDesc : "Buena calidad, velocidad moderada" ,
qualityDesc : "Con AI, lento" ,
maximumDesc : "Mejor modelo AI, mas lento" ,
strength : "Intensidad" ,
subtle : "Sutil" ,
aggressive : "Agresivo" ,
detailPreservation : "Preservacion de detalles" ,
smooth : "Suave" ,
sharp : "Nitido" ,
colorNoise : "Ruido de color" ,
heavy : "Intenso" ,
outputFormat : "Formato de salida" ,
gifAiWarning :
"La eliminacion de ruido con AI en archivos GIF procesa solo el primer fotograma. Para GIFs animados, usa el nivel Rapido o Equilibrado." ,
submit : "Eliminar ruido" ,
submitBatch : "Eliminar ruido ({count} archivos)" ,
progressLabel : "Eliminando ruido" ,
progressLabelBatch : "Eliminando ruido de {count} imagenes" ,
},
"red-eye-removal" : {
sensitivity : "Sensibilidad" ,
strict : "Estricta" ,
aggressive : "Agresiva" ,
correctionStrength : "Intensidad de correccion" ,
subtle : "Sutil" ,
dark : "Oscuro" ,
outputFormat : "Formato de salida" ,
quality : "Calidad" ,
submit : "Corregir ojos rojos" ,
submitBatch : "Corregir ojos rojos ({count} archivos)" ,
progressLabel : "Corrigiendo ojos rojos" ,
progressLabelBatch : "Corrigiendo ojos rojos en {count} imagenes" ,
},
"restore-photo" : {
scratchRemoval : "Eliminacion de rasguños" ,
scratchRemovalDesc : "Detecta y repara rasguños, roturas y manchas" ,
faceEnhancement : "Mejora de rostros" ,
faceEnhancementDesc : "Restaura rostros degradados con CodeFormer AI" ,
faceFidelity : "Fidelidad del rostro" ,
enhanced : "Mejorado" ,
faithful : "Fiel" ,
noiseReduction : "Reduccion de ruido" ,
noiseReductionDesc : "Elimina grano y ruido de fotos antiguas" ,
denoiseStrength : "Intensidad del eliminador de ruido" ,
autoColorize : "Colorizar automaticamente" ,
autoColorizeDesc : "Agrega color a fotos en B&N usando DDColor AI" ,
colorizeStrength : "Intensidad de colorizacion" ,
vivid : "Vivido" ,
submit : "Restaurar foto" ,
submitBatch : "Restaurar fotos ({count})" ,
progressLabel : "Restaurando foto" ,
progressLabelBatch : "Restaurando {count} fotos" ,
},
"content-aware-resize" : {
widthPx : "Ancho (px)" ,
heightPx : "Alto (px)" ,
resizeToSquare : "Redimensionar a cuadrado" ,
protectFaces : "Proteger rostros" ,
protectFacesHint :
"Detecta y protege las areas de rostros de la eliminacion de costuras usando deteccion facial" ,
smoothing : "Suavizado" ,
edgeSensitivity : "Sensibilidad de bordes" ,
submit : "Redimensionar" ,
submitBatch : "Redimensionar ({count} archivos)" ,
progressLabel : "Redimensionando con reconocimiento de contenido" ,
},
"ai-canvas-expand" : {
quality : "Calidad" ,
fast : "Rapido" ,
balanced : "Equilibrado" ,
highQuality : "Alta calidad" ,
fastDesc : "Vista previa rapida, menos pasadas de AI" ,
balancedDesc : "Buena calidad, velocidad moderada" ,
highQualityDesc : "Mejores resultados, mas lento" ,
extendToAspectRatio : "Extender a relacion de aspecto" ,
extendByPixels : "Extender por (pixeles)" ,
top : "Arriba" ,
right : "Derecha" ,
bottom : "Abajo" ,
left : "Izquierda" ,
newSize : "Nuevo tamano: {width} x {height}" ,
submit : "Extender lienzo" ,
submitBatch : "Extender ({count} archivos)" ,
progressLabel : "Extendiendo lienzo" ,
},
colorize : {
aiModel : "Modelo AI" ,
fast : "Rapido" ,
fastDesc : "Resultados rapidos" ,
balanced : "Equilibrado" ,
balancedDesc : "El mejor disponible" ,
best : "Mejor" ,
bestDesc : "La mas alta calidad" ,
colorIntensity : "Intensidad de color" ,
grayscaleLabel : "Escala de grises" ,
subtleLabel : "Sutil" ,
naturalLabel : "Natural" ,
vividLabel : "Vivido" ,
intensityHint : "Valores mas bajos producen colores mas apagados, estilo vintage." ,
strength : "Intensidad de colorizacion" ,
submit : "Colorizar" ,
submitBatch : "Colorizar ({count} archivos)" ,
progressLabel : "Colorizando" ,
progressLabelBatch : "Colorizando {count} imagenes" ,
},
"passport-photo" : {
country : "Pais" ,
searchCountries : "Buscar paises..." ,
noCountriesFound : "No se encontraron paises" ,
customDimensions : "Dimensiones personalizadas" ,
documentType : "Tipo de documento" ,
dimensionsMm : "Dimensiones (mm)" ,
dpi : "DPI" ,
pixelsPerInch : "pixeles por pulgada" ,
backgroundColor : "Color de fondo" ,
maxFileSize : "Tamano maximo de archivo" ,
noLimit : "Sin limite" ,
customKb : "Personalizado KB..." ,
uploadPortrait : "Sube una foto tipo retrato" ,
uploadHint :
"Arrastra o sube una imagen en el panel izquierdo para previsualizar tu foto de pasaporte" ,
analyzingPhoto : "Analizando foto" ,
detectingLandmarks : "Detectando puntos faciales y eliminando fondo..." ,
generatePassportPhoto : "Generar foto de pasaporte" ,
generating : "Generando..." ,
downloadPhoto : "Descargar foto" ,
faceCentered : "Rostro centrado" ,
headLevel : "Cabeza nivelada" ,
lookingStraight : "Mirando al frente" ,
faceSize : "Tamano del rostro" ,
whatYouSee : "Lo que ves es lo que descargas" ,
dragToAdjust : "Arrastra para ajustar" ,
scrollToZoom : "Desplaza para hacer zoom" ,
photoGenerated : "Foto generada. Descargala desde el panel izquierdo." ,
},
2026-06-13 10:19:23 +08:00
"transcribe-audio" : {
language : "Idioma" ,
autoDetect : "Deteccion automatica" ,
outputFormat : "Formato de salida" ,
plainText : "Texto plano" ,
submit : "Transcribir" ,
submitBatch : "Transcribir ({count} archivos)" ,
progressLabel : "Transcribiendo audio" ,
},
"auto-subtitles" : {
language : "Idioma" ,
autoDetect : "Deteccion automatica" ,
format : "Formato de subtitulos" ,
submit : "Generar subtitulos" ,
submitBatch : "Generar subtitulos ({count} archivos)" ,
progressLabel : "Generando subtitulos" ,
},
2026-05-15 17:02:49 +08:00
"transparency-fixer" : {
description : "Sube un PNG con fondo transparente falso y lo corregimos en un clic." ,
removeWatermark : "Eliminar marca de agua" ,
removeWatermarkHelp : "Detecta y elimina marcas de agua semitransparentes" ,
requiresEraser : "Requiere el paquete de Borrador de objetos" ,
advanced : "Avanzado" ,
defringe : "Eliminar bordes" ,
outputFormat : "Formato de salida" ,
submit : "Corregir transparencia" ,
submitBatch : "Corregir transparencia ({count} archivos)" ,
progressLabel : "Corrigiendo transparencia" ,
},
2026-06-13 10:19:23 +08:00
"background-replace" : {
color : "Color de fondo" ,
submit : "Reemplazar fondo" ,
submitBatch : "Reemplazar fondo ({count} archivos)" ,
progressLabel : "Reemplazando fondo" ,
},
"blur-background" : {
intensity : "Intensidad de desenfoque" ,
submit : "Desenfocar fondo" ,
submitBatch : "Desenfocar fondo ({count} archivos)" ,
progressLabel : "Desenfocando fondo" ,
},
2026-05-15 17:02:49 +08:00
"watermark-text" : {
watermarkText : "Texto de marca de agua" ,
fontSize : "Tamano de fuente" ,
color : "Color" ,
opacity : "Opacidad" ,
position : "Posicion" ,
rotation : "Rotacion" ,
center : "Centro" ,
topLeft : "Arriba izquierda" ,
topRight : "Arriba derecha" ,
bottomLeft : "Abajo izquierda" ,
bottomRight : "Abajo derecha" ,
tiled : "Mosaico" ,
submit : "Agregar marca de agua" ,
submitBatch : "Agregar marca de agua ({count} archivos)" ,
progressLabel : "Agregando marca de agua" ,
},
"watermark-image" : {
uploadWatermark : "Subir imagen de marca de agua" ,
position : "Posicion" ,
opacity : "Opacidad" ,
scale : "Escala" ,
submit : "Aplicar marca de agua" ,
submitBatch : "Aplicar marca de agua ({count} archivos)" ,
},
"text-overlay" : {
text : "Texto" ,
fontSize : "Tamano de fuente" ,
color : "Color" ,
position : "Posicion" ,
top : "Arriba" ,
center : "Centro" ,
bottom : "Abajo" ,
backgroundBox : "Caja de fondo" ,
backgroundColor : "Color de fondo" ,
shadow : "Sombra" ,
submit : "Agregar texto" ,
submitBatch : "Agregar texto ({count} archivos)" ,
progressLabel : "Agregando texto superpuesto" ,
2026-06-07 18:27:09 +08:00
download : "Download" ,
defaultText : "Your Text Here" ,
2026-05-15 17:02:49 +08:00
},
compose : {
uploadOverlay : "Subir imagen de superposicion" ,
xPosition : "Posicion X" ,
yPosition : "Posicion Y" ,
opacity : "Opacidad" ,
blendMode : "Modo de mezcla" ,
submit : "Componer" ,
},
"meme-generator" : {
selectTemplate :
"Selecciona una plantilla de la galeria o sube tu propia imagen para comenzar." ,
chooseLayout : "Elige un diseno de texto para tu imagen personalizada." ,
textContent : "Contenido del texto" ,
textStyle : "Estilo del texto" ,
font : "Fuente" ,
fontSize : "Tamano de fuente" ,
textColor : "Color del texto" ,
strokeColor : "Color del borde" ,
allCaps : "MAYUSCULAS" ,
generate : "Generar Meme" ,
generating : "Generando..." ,
downloadMeme : "Descargar Meme" ,
backToGallery : "Volver a la galeria" ,
},
info : {
loadingInfo : "Cargando informacion..." ,
filename : "Nombre de archivo" ,
fileSize : "Tamano de archivo" ,
dimensions : "Dimensiones" ,
format : "Formato" ,
channels : "Canales" ,
colorSpace : "Espacio de color" ,
density : "Densidad" ,
bitDepth : "Profundidad de bits" ,
progressive : "Progresivo" ,
pages : "Paginas" ,
hasAlpha : "Tiene alfa" ,
hasProfile : "Tiene perfil" ,
hasExif : "Tiene EXIF" ,
hasIcc : "Tiene ICC" ,
hasXmp : "Tiene XMP" ,
2026-06-07 18:27:09 +08:00
readInfo : "Read Info" ,
reading : "Reading..." ,
channelStats : "Channel Stats" ,
yes : "Yes" ,
no : "No" ,
na : "N/A" ,
failedToRead : "Failed to read info" ,
2026-05-15 17:02:49 +08:00
},
compare : {
uploadSecondImage : "Subir segunda imagen" ,
similarity : "Similitud: {percent}%" ,
submit : "Comparar" ,
downloadDiff : "Descargar diferencia" ,
},
"find-duplicates" : {
preset : "Preset" ,
exact : "Exacto" ,
similar : "Similar" ,
loose : "Amplio" ,
exactDesc : "Copias identicas pixel por pixel, misma imagen en diferentes formatos." ,
similarDesc : "Copias redimensionadas, recomprimidas o con ediciones leves." ,
looseDesc : "Imagenes visualmente relacionadas, recortes leves, diferentes exposiciones." ,
threshold : "Umbral" ,
submit : "Buscar duplicados" ,
scanning : "Escaneando..." ,
},
"color-palette" : {
submit : "Extraer paleta" ,
extracting : "Extrayendo..." ,
dominantColors : "Colores dominantes" ,
clickToCopy : "Clic para copiar" ,
},
"qr-generate" : {
contentType : "Tipo de contenido" ,
url : "URL" ,
text : "Texto" ,
wifi : "WiFi" ,
vcard : "vCard" ,
email : "Email" ,
phone : "Telefono" ,
sms : "SMS" ,
styling : "Estilo" ,
dotStyle : "Estilo de puntos" ,
cornerSquareStyle : "Estilo de esquina cuadrada" ,
cornerDotStyle : "Estilo de punto de esquina" ,
foregroundColor : "Color de primer plano" ,
bgColor : "Color de fondo" ,
logo : "Logo" ,
downloadFormat : "Formato de descarga" ,
submit : "Generar codigo QR" ,
download : "Descargar codigo QR" ,
},
2026-06-06 20:47:08 +08:00
"html-to-image" : {
2026-06-06 21:31:05 +08:00
modeUrl : "URL" ,
modeHtml : "HTML File" ,
htmlFile : "HTML File" ,
2026-06-06 20:47:08 +08:00
url : "URL" ,
2026-06-06 21:29:06 +08:00
urlPlaceholder : "https://snapotter.com" ,
2026-06-06 20:47:08 +08:00
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" ,
},
},
2026-05-15 17:02:49 +08:00
"barcode-read" : {
submit : "Escanear codigos de barras" ,
submitBatch : "Escanear ({count} archivos)" ,
scanning : "Escaneando..." ,
noBarcodesFound : "No se encontraron codigos de barras" ,
barcodesFound : "{count} codigo de barras encontrado" ,
barcodesFoundPlural : "{count} codigos de barras encontrados" ,
},
collage : {
template : "Plantilla" ,
aspectRatio : "Relacion de aspecto" ,
gap : "Espacio" ,
cornerRadius : "Radio de esquina" ,
backgroundColor : "Color de fondo" ,
outputFormat : "Formato de salida" ,
quality : "Calidad" ,
submit : "Crear collage" ,
downloadCollage : "Descargar collage" ,
},
stitch : {
direction : "Direccion" ,
horizontal : "Horizontal" ,
vertical : "Vertical" ,
grid : "Cuadricula" ,
gridColumns : "Columnas de cuadricula" ,
resizeMode : "Modo de redimension" ,
fit : "Ajustar" ,
original : "Original" ,
stretchMode : "Estirar" ,
cropMode : "Recortar" ,
alignment : "Alineacion" ,
start : "Inicio" ,
center : "Centro" ,
end : "Fin" ,
gap : "Espacio" ,
border : "Borde" ,
cornerRadius : "Radio de esquina" ,
backgroundColor : "Color de fondo" ,
outputFormat : "Formato de salida" ,
quality : "Calidad" ,
submit : "Unir imagenes" ,
},
split : {
modeGrid : "Cuadricula" ,
modeTileSize : "Tamano de mosaico" ,
presets : "Presets" ,
columns : "Columnas" ,
rows : "Filas" ,
tileWidth : "Ancho del mosaico" ,
tileHeight : "Alto del mosaico" ,
outputFormat : "Formato de salida" ,
quality : "Calidad" ,
submit : "Dividir imagen" ,
downloadAll : "Descargar todo (ZIP)" ,
},
border : {
presets : "Presets" ,
borderWidth : "Ancho del borde" ,
borderColor : "Color del borde" ,
padding : "Relleno" ,
paddingColor : "Color del relleno" ,
cornerRadius : "Radio de esquina" ,
shadow : "Sombra" ,
shadowBlur : "Desenfoque de sombra" ,
shadowOffsetX : "Desplazamiento X de sombra" ,
shadowOffsetY : "Desplazamiento Y de sombra" ,
shadowColor : "Color de sombra" ,
shadowOpacity : "Opacidad de sombra" ,
submit : "Agregar borde" ,
submitBatch : "Agregar borde ({count} archivos)" ,
progressLabel : "Agregando borde" ,
},
beautify : {
preset : "Preset" ,
backgroundType : "Tipo de fondo" ,
solidColor : "Color solido" ,
linearGradient : "Degradado lineal" ,
radialGradient : "Degradado radial" ,
customImage : "Imagen personalizada" ,
gradientAngle : "Angulo del degradado" ,
padding : "Relleno" ,
borderRadius : "Radio de borde" ,
shadowPreset : "Preset de sombra" ,
deviceFrame : "Marco de dispositivo" ,
submit : "Embellecer" ,
submitBatch : "Embellecer ({count} archivos)" ,
progressLabel : "Embelleciendo captura de pantalla" ,
},
2026-06-13 10:19:16 +08:00
"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" ,
},
2026-05-15 17:02:49 +08:00
"svg-to-raster" : {
outputFormat : "Formato de salida" ,
sizing : "Dimensionado" ,
scaleMode : "Escala" ,
customMode : "Personalizado" ,
scalePresets : "Presets de escala" ,
dpiPresets : "Presets de DPI" ,
customWidth : "Ancho (px)" ,
customHeight : "Alto (px)" ,
background : "Fondo" ,
bgTransparent : "Transparente" ,
bgColor : "Color" ,
quality : "Calidad" ,
submit : "Convertir SVG" ,
submitBatch : "Convertir ({count} archivos)" ,
progressLabel : "Convirtiendo SVG" ,
},
vectorize : {
preset : "Preset" ,
logo : "Logo" ,
illustration : "Ilustracion" ,
photo : "Foto" ,
sketch : "Boceto" ,
customPreset : "Personalizado" ,
colorMode : "Modo de color" ,
bw : "B&N" ,
colorModeColor : "Color" ,
threshold : "Umbral" ,
colorPrecision : "Precision de color" ,
layerDifference : "Diferencia de capas" ,
filterSpeckle : "Filtrar manchas" ,
pathMode : "Modo de trazo" ,
cornerThreshold : "Umbral de esquina" ,
invertColors : "Invertir colores" ,
submit : "Vectorizar" ,
submitBatch : "Vectorizar ({count} archivos)" ,
progressLabel : "Vectorizando" ,
},
"gif-tools" : {
mode : "Modo" ,
resize : "Redimensionar" ,
optimize : "Optimizar" ,
speed : "Velocidad" ,
reverse : "Invertir" ,
extract : "Extraer" ,
rotateMode : "Rotar" ,
pixel : "Pixel" ,
percentage : "Porcentaje" ,
colors : "Colores" ,
dither : "Difuminado" ,
effort : "Esfuerzo" ,
speedFactor : "Factor de velocidad" ,
loopControl : "Control de bucle" ,
infinite : "Infinito" ,
once : "Una vez" ,
customLoop : "Personalizado" ,
loopCount : "Cantidad de bucles" ,
extractSingle : "Individual" ,
extractRange : "Rango" ,
extractAll : "Todos" ,
frameNumber : "Numero de fotograma" ,
frameStart : "Fotograma inicial" ,
frameEnd : "Fotograma final" ,
extractFormat : "Formato" ,
submit : "Procesar GIF" ,
submitBatch : "Procesar ({count} archivos)" ,
progressLabel : "Procesando GIF" ,
},
"image-to-base64" : {
outputFormat : "Formato de salida" ,
keepOriginal : "Mantener original" ,
quality : "Calidad" ,
maxWidth : "Ancho maximo" ,
maxHeight : "Alto maximo" ,
submit : "Convertir a Base64" ,
submitBatch : "Convertir ({count} archivos)" ,
copyBase64 : "Copiar Base64" ,
copyDataUri : "Copiar Data URI" ,
copyImgTag : "Copiar etiqueta <img>" ,
copyCssUrl : "Copiar CSS url()" ,
},
2026-06-13 10:19:16 +08:00
"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" ,
},
2026-05-15 17:02:49 +08:00
"enhance-faces-standalone" : {
model : "Modelo" ,
fast : "Rapido" ,
balanced : "Equilibrado" ,
best : "Mejor" ,
},
2026-06-13 10:18:49 +08:00
"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" ,
},
2026-06-13 10:19:00 +08:00
"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" ,
},
2026-06-13 10:18:49 +08:00
"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" ,
},
2026-06-13 10:19:06 +08:00
"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" ,
},
2026-06-13 10:18:49 +08:00
"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" ,
},
2026-06-13 10:19:11 +08:00
"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" ,
},
2026-06-13 10:18:49 +08:00
"word-to-pdf" : {
submit : "Convert to PDF" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
2026-06-13 10:18:55 +08:00
"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" ,
},
2026-06-13 10:19:11 +08:00
"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" ,
},
2026-06-13 10:18:55 +08:00
"markdown-to-pdf" : {
hint : "Remote resources are disabled for privacy." ,
submit : "Convert to PDF" ,
submitBatch : "Convert to PDF ({count} files)" ,
progressLabel : "Converting" ,
},
2026-06-13 10:19:11 +08:00
"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" ,
},
2026-06-13 10:18:49 +08:00
"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" ,
},
2026-06-13 10:19:11 +08:00
"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" ,
},
2026-05-15 17:02:49 +08:00
},
urlImport : {
title : "Importar desde URLs" ,
placeholder : "Pega URLs de imagenes, una por linea..." ,
importButton : "Importar URLs" ,
addButton : "Agregar {count} archivos" ,
adding : "Agregando..." ,
retryButton : "Reintentar" ,
cancelButton : "Cancelar" ,
readyCount : "{count} listos" ,
failedStatus : "Error" ,
},
comparison : {
original : "Original" ,
processed : "Procesado" ,
before : "Antes" ,
after : "Despues" ,
savings : "Ahorro" ,
},
toolPage : {
emptyPrompt : "Arrastra o sube una imagen para comenzar" ,
filesCount : "Archivos ({count})" ,
addMore : "+ Agregar mas" ,
clearAll : "Limpiar todo" ,
acceptDescription : "Solo archivos {exts}" ,
notFound : "Herramienta no encontrada" ,
configureAndGenerate : "Configura los ajustes y genera." ,
processingFailed : "Error al procesar este archivo" ,
conversionComplete : "Conversion completada" ,
cannotPreviewDownload :
"Los archivos {type} no se pueden previsualizar en el navegador. Usa el boton de descarga para guardar tu archivo." ,
generatingPreview : "Generando vista previa..." ,
cannotPreviewWillProcess :
"Los archivos {ext} no se pueden previsualizar en el navegador. La herramienta procesara este archivo normalmente." ,
previousImage : "Imagen anterior" ,
nextImage : "Siguiente imagen" ,
imageCounter : "{current} / {total}" ,
settingsLabel : "Configuracion" ,
downloadAllZip : "Descargar todo (ZIP)" ,
hideSettings : "Ocultar configuracion" ,
imageArea : "Area de imagen" ,
2026-06-14 18:55:06 +08:00
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" ,
2026-06-14 19:38:47 +08:00
applyAndDownload : "Aplicar y descargar" ,
2026-06-14 18:55:06 +08:00
andMore : "and {count} more" ,
2026-06-14 21:37:15 +08:00
importFromFiles : "Import from Files" ,
2026-06-14 21:53:42 +08:00
saveToFiles : "Save to Files" ,
savedToFiles : "Saved to Files" ,
2026-06-14 19:03:13 +08:00
adjustSettings : "Adjust settings" ,
startOver : "Start over with a new file" ,
2026-06-15 11:52:22 +08:00
newFile : "New file" ,
2026-06-14 19:03:13 +08:00
backToTools : "Back to Tools" ,
original : "Original" ,
processed : "Processed" ,
saved : "Saved" ,
noChange : "no change" ,
download : "Download" ,
2026-06-14 19:24:12 +08:00
settingsSaved : "Tu configuracion se ha guardado." ,
tryAgain : "Reintentar" ,
tryDifferentFile : "Probar con otro archivo" ,
2026-06-14 19:38:47 +08:00
batchPartialSuccess : "{success} of {total} processed. {failed} failed." ,
dataResultsHint : "Results shown above. Use the copy button in the results panel." ,
downloadAsFile : "Download as file" ,
downloadAll : "Download All" ,
downloadFiles : "Download {count} files" ,
2026-05-15 17:02:49 +08:00
},
homePage : {
generatingPreview : "Generando vista previa..." ,
loadingPreview : "Cargando vista previa..." ,
changeFile : "Cambiar archivo" ,
quickActions : "Acciones rapidas" ,
allTools : "Todas las herramientas" ,
2026-06-14 18:46:16 +08:00
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" ,
2026-05-15 17:02:49 +08:00
},
fullscreenGrid : {
searchPlaceholder : "Buscar herramientas..." ,
hideDetails : "Ocultar detalles" ,
showDetails : "Mostrar detalles" ,
switchToSidebar : "Cambiar a vista de barra lateral" ,
sidebarButton : "Barra lateral" ,
noToolsFound : "No se encontraron herramientas" ,
tryDifferent : "Intenta con un termino de busqueda diferente" ,
},
editor : {
menu : {
file : {
label : "Archivo" ,
new : "Nuevo" ,
open : "Abrir" ,
save : "Guardar" ,
exportAs : "Exportar como..." ,
quickExportPng : "Exportacion rapida como PNG" ,
close : "Cerrar" ,
},
edit : {
label : "Editar" ,
undo : "Deshacer" ,
redo : "Rehacer" ,
cut : "Cortar" ,
copy : "Copiar" ,
copyMerged : "Copiar combinado" ,
paste : "Pegar" ,
pasteInPlace : "Pegar en su lugar" ,
delete : "Eliminar" ,
freeTransform : "Transformar libremente" ,
transform : {
label : "Transformar" ,
scale : "Escalar" ,
rotate : "Rotar" ,
skew : "Sesgar" ,
flipHorizontal : "Voltear horizontal" ,
flipVertical : "Voltear vertical" ,
},
},
image : {
label : "Imagen" ,
imageSize : "Tamano de imagen..." ,
canvasSize : "Tamano de lienzo..." ,
rotation : {
label : "Rotacion de imagen" ,
cw90 : "90 en sentido horario" ,
ccw90 : "90 en sentido antihorario" ,
r180 : "180" ,
flipHorizontal : "Voltear horizontal" ,
flipVertical : "Voltear vertical" ,
},
trim : "Recortar" ,
adjustments : {
label : "Ajustes" ,
brightnessContrast : "Brillo/Contraste" ,
hueSaturation : "Matiz/Saturacion" ,
colorBalance : "Balance de color" ,
levels : "Niveles" ,
curves : "Curvas" ,
},
},
layer : {
label : "Capa" ,
newLayer : "Nueva capa" ,
duplicateLayer : "Duplicar capa" ,
deleteLayer : "Eliminar capa" ,
arrange : {
label : "Ordenar" ,
bringToFront : "Traer al frente" ,
bringForward : "Traer adelante" ,
sendBackward : "Enviar atras" ,
sendToBack : "Enviar al fondo" ,
},
mergeDown : "Combinar hacia abajo" ,
flattenImage : "Aplanar imagen" ,
},
select : {
label : "Seleccionar" ,
all : "Todo" ,
deselect : "Deseleccionar" ,
inverse : "Invertir" ,
colorRange : "Rango de color..." ,
},
filter : {
label : "Filtro" ,
blur : {
label : "Desenfoque" ,
gaussian : "Desenfoque gaussiano" ,
motion : "Desenfoque de movimiento" ,
radial : "Desenfoque radial" ,
surface : "Desenfoque de superficie" ,
},
sharpen : {
label : "Enfocar" ,
sharpen : "Enfocar" ,
unsharpMask : "Mascara de desenfoque" ,
},
noise : {
label : "Ruido" ,
addNoise : "Agregar ruido" ,
reduceNoise : "Reducir ruido" ,
},
pixelate : {
label : "Pixelar" ,
pixelate : "Pixelar" ,
mosaic : "Mosaico" ,
},
stylize : {
label : "Estilizar" ,
emboss : "Relieve" ,
solarize : "Solarizar" ,
posterize : "Posterizar" ,
},
grayscale : "Escala de grises" ,
sepia : "Sepia" ,
invert : "Invertir" ,
},
view : {
label : "Ver" ,
zoomIn : "Acercar" ,
zoomOut : "Alejar" ,
fitOnScreen : "Ajustar a pantalla" ,
actualPixels : "Pixeles reales" ,
rulers : "Reglas" ,
grid : "Cuadricula" ,
guides : "Guias" ,
snap : "Ajustar" ,
panels : "Paneles" ,
},
},
menuBar : {
backTitle : "Volver a SnapOtter" ,
},
welcome : {
ariaLabel : "Zona de carga de imagenes" ,
heading : "Editor de imagenes" ,
dropDescription : "Arrastra una imagen aqui para comenzar" ,
openImageButton : "Abrir imagen" ,
newDocumentButton : "Nuevo documento" ,
pasteHint : "O pega desde el portapapeles (Ctrl+V)" ,
},
mobile : {
heading : "Se recomienda escritorio" ,
description :
"El editor de imagenes funciona mejor en pantallas de escritorio. Cambia a un dispositivo con una pantalla mas grande para la experiencia de edicion completa." ,
},
errors : {
serverDecodeFailed : "Error de decodificacion del servidor" ,
},
2026-06-05 16:40:57 +08:00
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" ,
},
2026-05-15 17:02:49 +08:00
},
settings : {
heading : "Configuracion" ,
nav : {
general : "General" ,
systemSettings : "Configuracion del sistema" ,
security : "Seguridad" ,
people : "Personas" ,
teams : "Equipos" ,
roles : "Roles" ,
auditLog : "Registro de auditoria" ,
2026-06-13 10:17:13 +08:00
usage : "Usage" ,
2026-05-15 17:02:49 +08:00
apiKeys : "Claves API" ,
aiFeatures : "Funciones de AI" ,
tools : "Herramientas" ,
productAnalytics : "Analitica del producto" ,
about : "Acerca de" ,
},
general : {
heading : "General" ,
description : "Preferencias del usuario y configuracion de pantalla." ,
loading : "Cargando..." ,
logOut : "Cerrar sesion" ,
defaultToolViewLabel : "Vista predeterminada de herramientas" ,
defaultToolViewDescription : "Como se muestran las herramientas en la pagina de inicio" ,
sidebarOption : "Barra lateral" ,
fullscreenGridOption : "Cuadricula de pantalla completa" ,
appVersionLabel : "Version de la app" ,
appVersionDescription : "Version actual de SnapOtter" ,
saveButton : "Guardar configuracion" ,
saveSuccess : "Configuracion guardada." ,
saveFailed : "Error al guardar la configuracion." ,
},
system : {
heading : "Configuracion del sistema" ,
description : "Configuracion del servidor y limites." ,
fileUploadLimitLabel : "Limite de carga de archivos (MB)" ,
fileUploadLimitDescription : "Tamano maximo de archivo por carga" ,
defaultThemeLabel : "Tema predeterminado" ,
defaultThemeDescription : "Tema aplicado para nuevas sesiones" ,
lightOption : "Claro" ,
darkOption : "Oscuro" ,
systemOption : "Sistema" ,
languageLabel : "Idioma" ,
languageDescription : "Idioma de la interfaz" ,
loginAttemptLimitLabel : "Limite de intentos de inicio de sesion" ,
loginAttemptLimitDescription :
"Intentos fallidos maximos de inicio de sesion por minuto antes del bloqueo" ,
fileManagementHeading : "Gestion de archivos" ,
maxFileAgeLabel : "Edad maxima de archivos (horas)" ,
maxFileAgeDescription :
"Cuanto tiempo se conservan los archivos procesados antes de la limpieza automatica" ,
startupCleanupLabel : "Limpieza al inicio" ,
startupCleanupDescription : "Limpia archivos temporales antiguos cuando el servidor arranca" ,
saveButton : "Guardar configuracion" ,
saveSuccess : "Configuracion guardada." ,
saveFailed : "Error al guardar la configuracion." ,
limitsAndResources : "Limites y recursos" ,
maxFileSize : "Tamano maximo de archivo" ,
maxBatchSize : "Tamano maximo de lote" ,
concurrentJobs : "Trabajos simultaneos" ,
workerThreads : "Hilos de trabajo" ,
maxPipelineSteps : "Pasos maximos de Pipeline" ,
processingTimeout : "Tiempo de espera de procesamiento" ,
rateLimitPerMin : "Limite de solicitudes (req/min)" ,
unlimited : "Ilimitado" ,
auto : "Automatico" ,
envOverride : "Establecido por variable de entorno" ,
maxCanvasPixels : "Pixeles maximos de lienzo" ,
maxSvgSize : "Tamano maximo de SVG" ,
maxSplitGrid : "Cuadricula maxima de division" ,
maxPdfPages : "Paginas maximas de PDF" ,
sessionDuration : "Duracion de la sesion" ,
2026-06-13 10:17:13 +08:00
supportBundleButton : "Download Support Bundle" ,
supportBundleDescription :
"Download a diagnostic zip with redacted config, logs, and job data for troubleshooting." ,
supportBundleFailed : "Failed to download support bundle." ,
2026-05-15 17:02:49 +08:00
},
security : {
heading : "Seguridad" ,
description : "Configuracion de contrasena y autenticacion." ,
changePasswordHeading : "Cambiar contrasena" ,
currentPasswordPlaceholder : "Contrasena actual" ,
newPasswordPlaceholder : "Nueva contrasena" ,
confirmPasswordPlaceholder : "Confirmar nueva contrasena" ,
passwordsMismatch : "Las contrasenas no coinciden" ,
passwordTooShort : "La contrasena debe tener al menos 4 caracteres" ,
changeSuccess : "Contrasena cambiada correctamente" ,
changeFailed : "Error al cambiar la contrasena" ,
currentPasswordIncorrect : "La contrasena actual es incorrecta" ,
changePasswordButton : "Cambiar contrasena" ,
loginAttemptLimitNote :
"Los limites de intentos de inicio de sesion se pueden configurar en Configuracion del sistema." ,
2026-06-13 23:00:33 +08:00
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" ,
2026-05-15 17:02:49 +08:00
},
people : {
heading : "Personas" ,
description : "Administra los miembros del espacio de trabajo y sus permisos" ,
userCount : "{count} usuario" ,
userCountPlural : "{count} usuarios" ,
searchPlaceholder : "Buscar miembros..." ,
addMembersButton : "Agregar miembros" ,
newMemberHeading : "Nuevo miembro" ,
usernamePlaceholder : "Nombre de usuario" ,
passwordPlaceholder : "Contrasena" ,
roleUserOption : "Usuario" ,
roleEditorOption : "Editor" ,
roleAdminOption : "Admin" ,
roleUserDescription : "Acceso basico a herramientas" ,
roleEditorDescription : "Todos los archivos y pipelines" ,
roleAdminDescription : "Acceso completo" ,
noDescription : "Sin descripcion" ,
defaultTeamOption : "Predeterminado" ,
createButton : "Crear" ,
cancelButton : "Cancelar" ,
createSuccess : "Usuario creado correctamente" ,
createFailed : "Error al crear el usuario" ,
userLimitReached : "Limite de usuarios alcanzado ({max} maximo)" ,
deleteConfirm : 'Eliminar usuario "{username}"? Esta accion no se puede deshacer.' ,
deleteSuccess : 'Usuario "{username}" eliminado' ,
deleteFailed : "Error al eliminar el usuario" ,
editHeading : "Editar {username}" ,
updateSuccess : "Usuario actualizado" ,
updateFailed : "Error al actualizar el usuario" ,
cannotRemoveOwnAdmin : "No puedes eliminar tu propio rol de administrador" ,
resetPasswordHeading : "Restablecer contrasena para {username}" ,
newPasswordLabel : "Nueva contrasena (minimo 8 caracteres)" ,
resetPasswordButton : "Restablecer contrasena" ,
resetPasswordWarning : "Esto invalidara todas las sesiones y claves API de este usuario." ,
resetSuccess : "Contrasena restablecida correctamente" ,
resetFailed : "Error al restablecer la contrasena" ,
tableHeaderUser : "Usuario" ,
tableHeaderRole : "Rol" ,
tableHeaderTeam : "Equipo" ,
noSearchResults : "Ningun miembro coincide con tu busqueda." ,
noUsersFound : "No se encontraron usuarios." ,
authBadgeLocalOidc : "Local + OIDC" ,
authBadgeOidc : "OIDC" ,
editRoleTeamAction : "Editar rol / equipo" ,
resetPasswordAction : "Restablecer contrasena" ,
deleteUserAction : "Eliminar usuario" ,
saveButton : "Guardar" ,
2026-05-16 23:08:19 +08:00
copyPasswordButton : "Copiar contrasena" ,
passwordCopied : "Copiado!" ,
copyPasswordWarning :
"Copia esta contrasena ahora. No podras verla despues de crear el usuario." ,
2026-05-15 17:02:49 +08:00
},
teams : {
heading : "Equipos" ,
description : "Organiza a los miembros en equipos para una mejor gestion." ,
createButton : "Crear nuevo equipo" ,
newTeamHeading : "Nuevo equipo" ,
teamNamePlaceholder : "Nombre del equipo" ,
createSubmitButton : "Crear" ,
cancelButton : "Cancelar" ,
createSuccess : "Equipo creado correctamente" ,
createFailed : "Error al crear el equipo" ,
duplicateTeamError : "Ya existe un equipo con ese nombre" ,
renameSuccess : "Equipo renombrado" ,
renameFailed : "Error al renombrar el equipo" ,
deleteConfirm : 'Eliminar equipo "{name}"? Los miembros seran desasignados.' ,
deleteSuccess : 'Equipo "{name}" eliminado' ,
deleteFailed : "Error al eliminar el equipo" ,
cannotDeleteDefault : "No se puede eliminar el equipo predeterminado o un equipo con miembros" ,
tableHeaderTeamName : "Nombre del equipo" ,
tableHeaderMembers : "Miembros" ,
emptyState : "No se encontraron equipos." ,
renameSaveButton : "Guardar" ,
renameCancelButton : "Cancelar" ,
renameAction : "Renombrar" ,
deleteAction : "Eliminar" ,
totalMembers : "Total de miembros" ,
nameRequired : "El nombre del equipo es obligatorio" ,
nameTooLong : "El nombre del equipo debe tener 50 caracteres o menos" ,
duplicateName : "Ya existe un equipo con este nombre" ,
2026-06-13 21:20:12 +08:00
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" ,
2026-05-15 17:02:49 +08:00
},
roles : {
heading : "Roles" ,
description :
"Administra roles y sus permisos. Los roles predeterminados no se pueden modificar." ,
createButton : "Crear rol personalizado" ,
newRoleHeading : "Nuevo rol" ,
roleNamePlaceholder : "Nombre del rol" ,
descriptionPlaceholder : "Descripcion (opcional)" ,
permissionsLabel : "Permisos" ,
createSubmitButton : "Crear" ,
cancelButton : "Cancelar" ,
createSuccess : "Rol creado correctamente" ,
createFailed : "Error al crear el rol" ,
duplicateRoleError : "Ya existe un rol con ese nombre" ,
editHeading : "Editar rol: {name}" ,
editSaveButton : "Guardar" ,
editCancelButton : "Cancelar" ,
updateSuccess : "Rol actualizado" ,
updateFailed : "Error al actualizar el rol" ,
deleteConfirm : 'Eliminar rol "{name}"? {count} usuario(s) deberan ser reasignados.' ,
deleteConfirmSimple : 'Eliminar rol "{name}"?' ,
deleteSuccess : 'Rol "{name}" eliminado' ,
deleteFailed : "Error al eliminar el rol" ,
emptyState : "No se encontraron roles." ,
builtInBadge : "Predeterminado" ,
userCountBadge : "{count} usuario(s)" ,
editRoleTitle : "Editar rol" ,
deleteRoleTitle : "Eliminar rol" ,
permGroup : {
tools : "Herramientas" ,
files : "Archivos" ,
apiKeys : "Claves API" ,
pipelines : "Pipelines" ,
settings : "Configuracion" ,
users : "Usuarios" ,
teams : "Equipos" ,
system : "Sistema" ,
},
},
auditLog : {
heading : "Registro de auditoria" ,
allActionsFilter : "Todas las acciones" ,
emptyState : "No hay entradas en el registro de auditoria." ,
tableHeaderTime : "Hora" ,
tableHeaderUser : "Usuario" ,
tableHeaderAction : "Accion" ,
tableHeaderTarget : "Objetivo" ,
paginationInfo : "Pagina {page} de {totalPages} ({total} entradas)" ,
previousButton : "Anterior" ,
nextButton : "Siguiente" ,
justNow : "ahora mismo" ,
minutesAgo : "hace {mins}m" ,
hoursAgo : "hace {hrs}h" ,
daysAgo : "hace {days}d" ,
},
2026-06-13 10:17:13 +08:00
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)" ,
2026-06-13 21:20:12 +08:00
storageByTeam : "Storage by Team" ,
teamColumn : "Team" ,
storageColumn : "Storage" ,
usersColumn : "Users" ,
2026-06-13 10:17:13 +08:00
},
2026-05-15 17:02:49 +08:00
apiKeys : {
heading : "Claves API" ,
description : "Administra las claves API para acceso programatico a SnapOtter." ,
keyNamePlaceholder : "Nombre de la clave (opcional)" ,
generateButton : "Generar clave API" ,
removeScopingLabel : "Eliminar restriccion de permisos" ,
restrictPermissionsLabel : "Restringir permisos (opcional)" ,
expiresLabel : "Expira:" ,
clearButton : "Limpiar" ,
copyTitle : "Copiar" ,
keyWarning : "Guarda esta clave de forma segura. No se mostrara de nuevo." ,
existingKeysHeading : "Claves existentes" ,
createdPrefix : "Creada {date}" ,
scopedPrefix : "Alcance:" ,
expiresPrefix : "Expira {date}" ,
deleteKeyTitle : "Eliminar clave" ,
deleteConfirm : "Eliminar esta clave API? Las integraciones que la usen dejaran de funcionar." ,
emptyState : "Aun no hay claves API. Genera una para comenzar." ,
},
tools : {
heading : "Herramientas" ,
description :
"Activa o desactiva herramientas individuales. Las herramientas desactivadas se ocultan para todos los usuarios." ,
restartBanner : "Se requiere reinicio para que los cambios surtan efecto." ,
searchPlaceholder : "Buscar herramientas..." ,
noSearchResults : "Ninguna herramienta coincide con tu busqueda." ,
loadFailedError :
"Error al cargar la configuracion de herramientas. El guardado esta desactivado para prevenir perdida de datos." ,
saveButton : "Guardar configuracion de herramientas" ,
disabledCount : "{count} herramienta(s) desactivada(s)" ,
},
experimental : {
label : "Activar herramientas experimentales" ,
description : "Muestra herramientas que aun estan en desarrollo. Pueden ser inestables." ,
},
fileManagement : {
title : "Gestion de archivos" ,
maxAge : "Edad maxima de archivos (horas)" ,
maxAgeDescription :
"Cuanto tiempo se conservan los archivos procesados antes de la limpieza automatica" ,
startupCleanup : "Limpieza al inicio" ,
startupCleanupDescription : "Limpia archivos temporales antiguos cuando el servidor arranca" ,
},
2026-06-13 16:39:22 +08:00
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." ,
},
2026-05-15 17:02:49 +08:00
analytics : {
heading : "Analitica del producto" ,
description : "Comparte datos de uso anonimos para ayudar a mejorar SnapOtter." ,
privacyNote : "Tus imagenes nunca salen de tu equipo." ,
disabledByAdmin :
"La analitica del producto ha sido desactivada por el administrador del servidor." ,
enabledLabel : "Analitica activada" ,
disabledLabel : "Analitica desactivada" ,
learnMore : "Mas informacion" ,
},
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..." ,
2026-06-13 10:17:13 +08:00
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}" ,
2026-05-15 17:02:49 +08:00
},
about : {
heading : "Acerca de" ,
appName : "SnapOtter" ,
appDescription :
2026-06-13 10:18:49 +08:00
"Una suite de procesamiento de imagenes autoalojada y con privacidad como prioridad, con 70+ herramientas. Redimensiona, comprime, convierte, agrega marcas de agua y automatiza tus flujos de trabajo de imagenes sin enviar datos a la nube." ,
2026-05-15 17:02:49 +08:00
versionLabel : "Version:" ,
linksHeading : "Enlaces" ,
githubLink : "Repositorio en GitHub" ,
docsLink : "Documentacion" ,
apiRefLink : "Referencia API (Swagger)" ,
2026-06-05 22:31:28 +08:00
licenseLabel : "License:" ,
2026-06-05 23:14:57 +08:00
licenseDescription :
"SnapOtter is open-source software licensed under the GNU Affero General Public License v3 (AGPLv3)." ,
2026-05-15 17:02:49 +08:00
},
},
auth : {
login : "Iniciar sesion" ,
logout : "Cerrar sesion" ,
username : "Nombre de usuario" ,
password : "Contrasena" ,
loginButton : "Iniciar sesion" ,
loggingIn : "Iniciando sesion..." ,
invalidCredentials : "Nombre de usuario o contrasena invalidos" ,
connectionError : "Error de conexion" ,
signInWith : "Iniciar sesion con {provider}" ,
signInWithSso : "Iniciar sesion con SSO" ,
or : "o" ,
methodLocal : "Local" ,
methodOidc : "OIDC" ,
methodBoth : "Local + OIDC" ,
oidcAuthFailed : "La autenticacion fallo. Intenta de nuevo." ,
oidcProviderUnreachable : "No se pudo contactar al proveedor de identidad. Intenta mas tarde." ,
oidcSessionExpired : "La sesion de inicio de sesion expiro. Intenta de nuevo." ,
oidcUserNotAuthorized :
"Tu cuenta no esta autorizada para acceder a esta aplicacion. Contacta a tu administrador." ,
oidcUserLimitReached : "Limite de usuarios alcanzado. Contacta a tu administrador." ,
oidcGenericError : "Error de autenticacion. Intenta de nuevo." ,
2026-06-13 22:27:56 +08:00
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." ,
2026-06-13 22:32:16 +08:00
ssoEnforcedLocalRestricted : "Local login is restricted to authorized administrators." ,
2026-06-13 23:00:33 +08:00
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." ,
2026-06-13 22:27:56 +08:00
methodSaml : "SAML" ,
2026-05-15 17:02:49 +08:00
passwordManagedByProvider :
"Los cambios de contrasena son administrados por tu proveedor de identidad." ,
enterUsername : "Ingresa tu nombre de usuario" ,
enterPassword : "Ingresa tu contrasena" ,
heroTitle : "Tus imagenes. Se quedan contigo." ,
heroSubtitle : "Todas las herramientas de imagen que necesitas." ,
rotatingPhrases : [
"Sin registros. Sin cuentas." ,
"Sin subidas a la nube. Nunca." ,
"100% procesamiento local." ,
"Gratis. Para siempre." ,
"Sin limites. Sin topes ocultos." ,
"Funciona totalmente sin conexion." ,
"Procesamiento por lotes ilimitado." ,
2026-06-13 10:18:49 +08:00
"70+ herramientas de imagen." ,
2026-05-15 17:02:49 +08:00
"15 modelos AI. Tu hardware." ,
"Ultra rapido. Construido sobre Sharp." ,
"Listo para redes aisladas." ,
"Un solo contenedor Docker." ,
"Codigo abierto. Siempre." ,
"Cada pixel se queda en tu hardware." ,
"Tu servidor. Tus reglas." ,
"Se instala con un solo docker pull." ,
"La alternativa autoalojada." ,
"Redimensiona, comprime, convierte. Localmente." ,
"Editor de imagenes gratuito. Sin marcas de agua." ,
"Procesamiento masivo de imagenes. Ilimitado." ,
"Elimina fondos sin conexion." ,
"Alternativa autoalojada a Canva." ,
"Sin claves API necesarias." ,
"Cumplimiento GDPR por diseno." ,
"Funciona sin internet." ,
],
},
changePassword : {
title : "Cambia tu contrasena" ,
description :
"Necesitas establecer una nueva contrasena antes de continuar. Tu contrasena debe tener al menos 8 caracteres con mayusculas, minusculas y un numero." ,
usernameLabel : "Nombre de usuario" ,
currentPasswordLabel : "Contrasena actual" ,
currentPasswordPlaceholder : "Ingresa la contrasena actual" ,
newPasswordLabel : "Nueva contrasena" ,
generateButton : "Generar contrasena segura" ,
newPasswordPlaceholder : "Al menos 8 caracteres" ,
confirmPasswordLabel : "Confirmar nueva contrasena" ,
confirmPasswordPlaceholder : "Repite la nueva contrasena" ,
passwordsMismatch : "Las contrasenas no coinciden" ,
failedError : "Error al cambiar la contrasena" ,
connectionError : "Error de conexion" ,
changingButton : "Cambiando..." ,
changeButton : "Cambiar contrasena" ,
sidebarTitle : "Ya casi" ,
sidebarDescription : "Establece una contrasena segura para proteger tu cuenta y estaras listo." ,
},
automate : {
title : "Automatizar" ,
invalidPipelineFile : "No es un archivo de Pipeline de SnapOtter valido" ,
newerVersion : "Este Pipeline fue creado con una version mas reciente de SnapOtter" ,
missingName : "Al archivo de Pipeline le falta un nombre" ,
noSteps : "El archivo de Pipeline no tiene pasos" ,
importFailed : "Error en la importacion" ,
couldNotRead : "No se pudo leer el archivo de Pipeline" ,
fileCount : "{count} archivo" ,
fileCountPlural : "{count} archivos" ,
importFromLibrary : "Importar desde la biblioteca" ,
addButton : "+ Agregar" ,
libraryButton : "Biblioteca" ,
clearButton : "Limpiar" ,
processingFailed : "Error al procesar este archivo" ,
processingMultiple : "Procesando {count} archivos..." ,
processingPipeline : "Procesando Pipeline..." ,
processButton : "Procesar" ,
processButtonMultiple : "Procesar ({count})" ,
processAllButton : "Procesar todo ({count})" ,
addTool : "Agregar herramienta" ,
toolPalette : "Paleta de herramientas" ,
clickToAdd : "Clic para agregar al Pipeline" ,
savedLabel : "Guardado" ,
importButton : "Importar" ,
noSavedPipelines : "No hay Pipelines guardados" ,
stepCount : "({count} paso)" ,
stepCountPlural : "({count} pasos)" ,
exportPipeline : "Exportar Pipeline" ,
deletePipeline : "Eliminar Pipeline" ,
moreCount : "+{count} mas" ,
pipelineBuilder : "Constructor de Pipeline" ,
addToolsPrompt : "Agrega herramientas desde la paleta para comenzar" ,
stepsConfigured : "{count} paso configurado" ,
stepsConfiguredPlural : "{count} pasos configurados" ,
noFilesLoaded : "No hay archivos cargados" ,
downloadZip : "Descargar ZIP" ,
saveButton : "Guardar" ,
pipelineNamePlaceholder : "Nombre del Pipeline" ,
descriptionPlaceholder : "Descripcion" ,
savingIndicator : "..." ,
cancelButton : "Cancelar" ,
preview : "Vista previa" ,
previousImage : "Imagen anterior" ,
nextImage : "Siguiente imagen" ,
imageCounter : "{current} / {total}" ,
imageArea : "Area de imagen" ,
templateSocialMedia : "Listo para redes sociales" ,
templatePrivacyClean : "Limpieza de privacidad" ,
templateWebOptimization : "Optimizacion web" ,
templateProfilePicture : "Foto de perfil" ,
templateWatermarkBatch : "Lote de marcas de agua" ,
createNew : "Crear nueva automatizacion" ,
savedAutomations : "Automatizaciones guardadas" ,
templates : "Plantillas" ,
addStep : "Agregar paso" ,
removeStep : "Eliminar" ,
moveUp : "Subir" ,
moveDown : "Bajar" ,
savePipeline : "Guardar Pipeline" ,
runPipeline : "Procesar" ,
pipelineName : "Nombre del Pipeline" ,
pipelineDescription : "Descripcion (opcional)" ,
noStepsPrompt : "Agrega pasos para construir tu automatizacion" ,
2026-06-06 20:47:08 +08:00
noStepsHeading : "No steps yet" ,
2026-06-05 22:31:28 +08:00
searchToolsPlaceholder : "Search tools..." ,
2026-06-06 20:47:08 +08:00
step : "Paso" ,
2026-05-15 17:02:49 +08:00
},
nav : {
tools : "Herramientas" ,
reader : "Lector" ,
automate : "Automatizar" ,
editor : "Editor" ,
files : "Archivos" ,
help : "Ayuda" ,
settings : "Configuracion" ,
grid : "Cuadricula" ,
},
files : {
2026-06-05 22:31:28 +08:00
myFiles : "My Files" ,
2026-06-05 23:14:57 +08:00
recentTab : "Recent" ,
uploadTab : "Upload Files" ,
fileDetailsAriaLabel : "File Details" ,
fileDetailsHeading : "File Details" ,
2026-06-05 22:31:28 +08:00
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" ,
2026-06-14 21:43:58 +08:00
selectFile : "Select File" ,
2026-06-05 22:31:28 +08:00
openInPipeline : "Open in Pipeline" ,
2026-06-14 21:53:42 +08:00
dropFilesHere : "Drop files here" ,
orClickToSelect : "or click to select files" ,
2026-06-05 22:31:28 +08:00
name : "Name" ,
format : "Format" ,
size : "Size" ,
dimensions : "Dimensions" ,
version : "Version" ,
toolsUsed : "Tools Used" ,
none : "None" ,
delete : "Delete" ,
pipeline : "Pipeline" ,
download : "Download" ,
2026-05-15 17:02:49 +08:00
},
dropzone : {
unsupportedFileType : "Este tipo de archivo no es compatible con esta herramienta" ,
urlFetchFailed : "No se pudo obtener la imagen desde la URL" ,
ariaLabel : "Zona de carga de archivos" ,
dropPrompt : "Arrastra tus imagenes aqui" ,
browseOrPaste : "haz clic en cualquier lugar para explorar, o pega desde el portapapeles" ,
uploadButton : "Subir" ,
defaultFormats : "PNG, JPG, WebP, HEIC, RAW, PSD y mas de 65 formatos" ,
orSeparator : "o" ,
urlPlaceholder : "Pega la URL de la imagen..." ,
urlLoadingIndicator : "..." ,
addUrlButton : "Agregar" ,
importMultipleUrls : "Importar multiples URLs..." ,
filesSelected : "{count} archivos seleccionados" ,
2026-06-14 19:09:36 +08:00
dropToAdd : "Suelta para agregar archivos" ,
dropToReplace : "Suelta para reemplazar archivo" ,
2026-05-15 17:02:49 +08:00
},
reviewPanel : {
processedResultAlt : "Resultado procesado" ,
sizeLabel : "Tamano: {size}" ,
typeLabel : "Tipo: {type}" ,
processedLabel : "Procesado: {time}" ,
undoButton : "Deshacer" ,
downloadButton : "Descargar" ,
openInEditor : "Abrir en el editor" ,
reviewHeading : "Revisar" ,
continueEditing : "Continuar editando" ,
},
features : {
notEnabledTitle : "Funcion no activada" ,
notEnabledDescription :
"Esta funcion no esta activada. Pide a tu administrador que la active en Configuracion." ,
requiresDownload : "Esta funcion requiere una descarga adicional (~{size})" ,
retryButton : "Reintentar" ,
queued : "En cola para instalacion..." ,
enableButton : "Activar {name}" ,
2026-06-09 23:09:34 +08:00
repairRequired : "Repair Required" ,
repairDescription : "Some model files are missing or corrupted. Repair will re-download them." ,
repairButton : "Repair {name}" ,
2026-05-15 17:02:49 +08:00
lessThanMinute : "Menos de un minuto restante" ,
oneMinuteLeft : "~1 minuto restante" ,
minutesLeft : "~{mins} minutos restantes" ,
progressMessages : [
"Ya casi... probablemente..." ,
"Las cosas buenas toman tiempo..." ,
"Mas rapido que ver secar la pintura..." ,
"Tu paciencia es verdaderamente inspiradora..." ,
"Trabajando mas duro de lo que parece..." ,
"Esta es la parte emocionante, en serio..." ,
"Haciendo cosas importantes tras bambalinas..." ,
"Si lees esto, esta funcionando..." ,
"Preparando algo increible..." ,
"Vale cada segundo, lo prometo..." ,
"El suspenso es parte de la experiencia..." ,
"Ensenandole trucos nuevos a tu computadora..." ,
"Configurando tus superpoderes..." ,
"Tus imagenes te lo agradeceran despues..." ,
"Cargando... pero con estilo..." ,
"Buen momento para un cafe..." ,
"Roma tampoco se construyo en un dia..." ,
"Shhh... genio trabajando..." ,
"Haciendo que tus fotos se pongan celosas..." ,
"Armando el equipo de ensueño..." ,
"Desempacando cosas geniales..." ,
"Ya casi termino de pensar en empezar... es broma..." ,
"Giro de trama: esto de verdad esta haciendo algo..." ,
"Calentando los motores creativos..." ,
"Cargando imaginacion..." ,
"No es un protector de pantalla, lo prometemos..." ,
"El gran arte necesita tiempo para instalarse..." ,
"Tu yo del futuro te lo agradecera..." ,
"Buscando archivos muy inteligentes..." ,
"Aguanta, lo mejor esta por venir..." ,
],
},
help : {
heading : "Ayuda" ,
gettingStarted : {
heading : "Primeros pasos" ,
description :
"Selecciona una herramienta desde la barra lateral o busca una. Sube una imagen arrastandola a la pagina o haciendo clic en el area de carga. Ajusta la configuracion y descarga tu resultado." ,
},
keyboardShortcuts : {
heading : "Atajos de teclado" ,
focusSearchBar : "Enfocar barra de busqueda" ,
goToTools : "Ir a herramientas" ,
toggleTheme : "Cambiar tema" ,
goToResize : "Ir a Redimensionar" ,
goToCrop : "Ir a Recortar" ,
goToCompress : "Ir a Comprimir" ,
goToConvert : "Ir a Convertir" ,
goToRemoveBackground : "Ir a Eliminar fondo" ,
goToWatermarkText : "Ir a Marca de agua de texto" ,
goToStripMetadata : "Ir a Eliminar metadatos" ,
goToImageInfo : "Ir a Info de imagen" ,
2026-06-14 19:17:34 +08:00
processFile : "Procesar archivo" ,
downloadResult : "Descargar resultado" ,
2026-05-15 17:02:49 +08:00
},
resources : {
heading : "Recursos" ,
githubLink : "Repositorio en GitHub" ,
reportIssueLink : "Reportar un problema" ,
docsLink : "Documentacion" ,
apiRefLink : "Referencia API (Swagger)" ,
},
versionLabel : "SnapOtter v{version}" ,
},
errors : {
generic : "Ocurrio un error" ,
offline : "Estas sin conexion" ,
reconnecting : "Reconectando al servidor..." ,
connected : "Conectado" ,
processingFailed : "Error al procesar este archivo" ,
timeout :
"La solicitud agoto el tiempo de espera. El servidor puede estar sobrecargado. Intenta de nuevo." ,
networkError : "Error de red. Verifica tu conexion." ,
invalidCredentials : "Nombre de usuario o contrasena invalidos" ,
connectionError : "Error de conexion" ,
},
analytics : {
consentTitle : "Ayuda a mejorar SnapOtter" ,
consentDescription :
"Las estadisticas de uso anonimas nos ayudan a corregir errores y crear las herramientas que realmente necesitas. Tus imagenes y archivos se quedan en tu equipo." ,
consentChangeable : "Puedes desactivar esto en cualquier momento en Configuracion." ,
acceptButton : "Claro, me parece bien" ,
declineButton : "Ahora no" ,
settingsTitle : "Analitica del producto" ,
settingsDescription : "Comparte datos de uso anonimos para ayudar a mejorar SnapOtter." ,
settingsPrivacy : "Tus imagenes nunca salen de tu equipo." ,
settingsDisabledByAdmin :
"La analitica del producto ha sido desactivada por el administrador del servidor." ,
learnMore : "Mas informacion" ,
},
sidebar : {
tools : "Herramientas" ,
grid : "Cuadricula" ,
automate : "Automatizar" ,
editor : "Editor" ,
files : "Archivos" ,
help : "Ayuda" ,
settings : "Configuracion" ,
},
toolCard : {
addToFavourites : "Agregar a favoritos" ,
},
appLayout : {
mobileNavTools : "Herramientas" ,
mobileNavAutomate : "Automatizar" ,
mobileNavEditor : "Editor" ,
mobileNavFiles : "Archivos" ,
mobileNavSettings : "Configuracion" ,
},
2026-06-07 21:48:08 +08:00
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" ,
},
2026-05-15 17:02:49 +08:00
} as const ;