mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
Add complete i18n infrastructure with 21 supported languages: English, Simplified Chinese, Traditional Chinese, Japanese, Korean, Spanish, French, Italian, Brazilian Portuguese, German, Dutch, Swedish, Russian, Polish, Ukrainian, Arabic (RTL), Turkish, Hindi, Vietnamese, Indonesian, and Thai. - I18nProvider context with three-tier locale detection (user preference > navigator.languages > instance default > English) - ~1500 translation keys per locale with TypeScript-enforced completeness - Dynamic code-splitting: only the active locale is loaded at runtime - Language selectors in footer, login page, settings, and mobile sidebar - Arabic RTL support with CSS logical properties across all components - Tool names, descriptions, and categories translated via i18n helpers - Public API endpoint GET /api/v1/config/locale for instance default - Multi-script font stack (CJK, Arabic, Devanagari, Thai, Cyrillic) - format() and plural() helpers for interpolation and pluralization - API error translation mapping (translateApiError) - 36 Playwright e2e tests verifying all 21 locales load correctly - 25 unit tests for format, plural, locale detection, and completeness - Updated translations.md docs and CLAUDE.md conventions
1967 lines
73 KiB
TypeScript
1967 lines
73 KiB
TypeScript
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...",
|
|
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",
|
|
},
|
|
categories: {
|
|
essentials: "Esenciales",
|
|
optimization: "Optimizacion",
|
|
adjustments: "Ajustes",
|
|
watermark: "Marca de agua y superposicion",
|
|
utilities: "Utilidades",
|
|
layout: "Diseno y composicion",
|
|
format: "Formato y conversion",
|
|
ai: "Herramientas de AI",
|
|
},
|
|
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",
|
|
},
|
|
"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",
|
|
},
|
|
"transparency-fixer": {
|
|
name: "Corrector de transparencia PNG",
|
|
description: "Corrige PNGs con transparencia falsa en un clic",
|
|
},
|
|
"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",
|
|
},
|
|
"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",
|
|
},
|
|
"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",
|
|
},
|
|
pipeline: {
|
|
name: "Constructor de Pipeline",
|
|
description: "Encadena multiples herramientas en un flujo de trabajo",
|
|
},
|
|
},
|
|
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",
|
|
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",
|
|
},
|
|
"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.",
|
|
},
|
|
"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",
|
|
},
|
|
"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",
|
|
},
|
|
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",
|
|
},
|
|
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",
|
|
},
|
|
"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",
|
|
},
|
|
"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()",
|
|
},
|
|
"enhance-faces-standalone": {
|
|
model: "Modelo",
|
|
fast: "Rapido",
|
|
balanced: "Equilibrado",
|
|
best: "Mejor",
|
|
},
|
|
},
|
|
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",
|
|
},
|
|
homePage: {
|
|
generatingPreview: "Generando vista previa...",
|
|
loadingPreview: "Cargando vista previa...",
|
|
changeFile: "Cambiar archivo",
|
|
quickActions: "Acciones rapidas",
|
|
allTools: "Todas las herramientas",
|
|
},
|
|
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",
|
|
},
|
|
},
|
|
settings: {
|
|
heading: "Configuracion",
|
|
nav: {
|
|
general: "General",
|
|
systemSettings: "Configuracion del sistema",
|
|
security: "Seguridad",
|
|
people: "Personas",
|
|
teams: "Equipos",
|
|
roles: "Roles",
|
|
auditLog: "Registro de auditoria",
|
|
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",
|
|
},
|
|
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.",
|
|
},
|
|
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",
|
|
},
|
|
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",
|
|
},
|
|
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",
|
|
},
|
|
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",
|
|
},
|
|
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...",
|
|
},
|
|
about: {
|
|
heading: "Acerca de",
|
|
appName: "SnapOtter",
|
|
appDescription:
|
|
"Una suite de procesamiento de imagenes autoalojada y con privacidad como prioridad, con 51 herramientas. Redimensiona, comprime, convierte, agrega marcas de agua y automatiza tus flujos de trabajo de imagenes sin enviar datos a la nube.",
|
|
versionLabel: "Version:",
|
|
linksHeading: "Enlaces",
|
|
githubLink: "Repositorio en GitHub",
|
|
docsLink: "Documentacion",
|
|
apiRefLink: "Referencia API (Swagger)",
|
|
},
|
|
},
|
|
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.",
|
|
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.",
|
|
"51 herramientas de imagen.",
|
|
"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",
|
|
step: "Paso",
|
|
},
|
|
nav: {
|
|
tools: "Herramientas",
|
|
reader: "Lector",
|
|
automate: "Automatizar",
|
|
editor: "Editor",
|
|
files: "Archivos",
|
|
help: "Ayuda",
|
|
settings: "Configuracion",
|
|
grid: "Cuadricula",
|
|
},
|
|
files: {
|
|
recentTab: "Recientes",
|
|
uploadTab: "Subir",
|
|
fileDetailsAriaLabel: "Detalles del archivo",
|
|
fileDetailsHeading: "Detalles del archivo",
|
|
},
|
|
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",
|
|
},
|
|
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}",
|
|
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",
|
|
},
|
|
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",
|
|
},
|
|
} as const;
|