f91a24ea9b
Plain text endpoint: - Add /text route for plain text CV (for curl/AI crawlers) - Use k3a/html2text library for HTML-to-text conversion - Add Plain Text button to hamburger menu with UI translations Contact form feature: - Add ContactHandler with proper email service integration - Add CSRF protection middleware - Add rate limiting (5 submissions/hour per IP) - Add honeypot and timing-based bot protection - Add input validation with detailed error messages - Add security logging middleware - Add browser-only middleware for API protection Code quality: - Fix all golangci-lint errcheck warnings for w.Write calls - Remove duplicate getClientIP functions - Wire up ContactHandler in routes.Setup
239 lines
7.0 KiB
JSON
239 lines
7.0 KiB
JSON
{
|
|
"navigation": {
|
|
"cvSections": "Secciones CV",
|
|
"training": "Formación",
|
|
"skills": "Competencias",
|
|
"experience": "Experiencia",
|
|
"awards": "Premios y Reconocimientos",
|
|
"projects": "Proyectos Personales / Freelance",
|
|
"courses": "Cursos Realizados",
|
|
"languages": "Idiomas",
|
|
"references": "Referencias",
|
|
"other": "Otros",
|
|
"quickActions": "Acciones Rápidas",
|
|
"collapseAll": "Colapsar Todo",
|
|
"expandAll": "Expandir Todo",
|
|
"zoom": "Zoom",
|
|
"viewControls": "Controles de Vista",
|
|
"actions": "Acciones"
|
|
},
|
|
"viewControls": {
|
|
"length": "Longitud",
|
|
"icons": "Iconos",
|
|
"view": "Vista"
|
|
},
|
|
"sections": {
|
|
"technicalSkills": "Competencias Técnicas",
|
|
"moreSkills": "Más Competencias",
|
|
"yearsOfExperience": "años de experiencia",
|
|
"drivingLicense": "Carnet de conducir tipo",
|
|
"obtainedFrom": "obtenido de",
|
|
"currentBadge": "ACTUAL",
|
|
"expiredBadge": "EXPIRADO",
|
|
"present": "presente",
|
|
"technologies": "Tecnologías:",
|
|
"maintainedBy": "MANTENIDO POR"
|
|
},
|
|
"footer": {
|
|
"viewOnGithub": "Ver este proyecto en GitHub",
|
|
"lastUpdated": "Última actualización"
|
|
},
|
|
"portfolio": {
|
|
"seeAllProjects": "Ver todos los proyectos en mi",
|
|
"domestikaPortfolio": "portfolio de Domestika"
|
|
},
|
|
"pdfModal": {
|
|
"title": "Descargar PDF",
|
|
"subtitle": "Elige tu formato preferido",
|
|
"preparingPdf": "Preparando PDF...",
|
|
"pleaseWait": "Por favor espera mientras generamos tu CV",
|
|
"close": "Cerrar",
|
|
"downloadButton": "Descargar PDF",
|
|
"shortCv": {
|
|
"title": "CV Corto (4 páginas)",
|
|
"pages": "4 Páginas",
|
|
"description": "Información esencial",
|
|
"ariaLabel": "CV Corto - 4 páginas, información esencial"
|
|
},
|
|
"defaultCv": {
|
|
"title": "CV Por Defecto (5 páginas)",
|
|
"pages": "5 Páginas",
|
|
"description": "Corto con habilidades - Recomendado",
|
|
"ariaLabel": "CV Por Defecto - 5 páginas con habilidades (Recomendado)"
|
|
},
|
|
"extendedCv": {
|
|
"title": "CV Extendido (9 páginas)",
|
|
"pages": "9 Páginas",
|
|
"description": "Todos los detalles",
|
|
"ariaLabel": "CV Extendido - 9 páginas, versión completa"
|
|
}
|
|
},
|
|
"shortcutsModal": {
|
|
"title": "Atajos de Teclado",
|
|
"subtitle": "Aprende los Atajos",
|
|
"description": "Usa estos atajos de teclado para navegar y controlar el CV de forma más eficiente.",
|
|
"close": "Cerrar",
|
|
"sections": {
|
|
"zoom": {
|
|
"title": "Control de Zoom",
|
|
"zoomIn": {
|
|
"key": "Ctrl / Cmd + Más",
|
|
"description": "Aumentar zoom (+10%)"
|
|
},
|
|
"zoomOut": {
|
|
"key": "Ctrl / Cmd + Menos",
|
|
"description": "Reducir zoom (-10%)"
|
|
},
|
|
"zoomReset": {
|
|
"key": "Ctrl / Cmd + 0",
|
|
"description": "Restablecer zoom al 100%"
|
|
}
|
|
},
|
|
"viewControls": {
|
|
"title": "Controles de Vista",
|
|
"toggleLength": {
|
|
"key": "Tab a Longitud",
|
|
"description": "Alternar longitud CV (Corto/Largo)"
|
|
},
|
|
"toggleIcons": {
|
|
"key": "Tab a Iconos",
|
|
"description": "Mostrar/ocultar iconos de empresas"
|
|
},
|
|
"toggleTheme": {
|
|
"key": "Tab a Vista",
|
|
"description": "Cambiar tema (Normal/Limpio)"
|
|
}
|
|
},
|
|
"navigation": {
|
|
"title": "Navegación",
|
|
"expandAll": {
|
|
"key": "Menú → Expandir Todo",
|
|
"description": "Expandir todas las secciones del CV"
|
|
},
|
|
"collapseAll": {
|
|
"key": "Menú → Colapsar Todo",
|
|
"description": "Colapsar todas las secciones del CV"
|
|
},
|
|
"scrollToTop": {
|
|
"key": "Click en botón ↑",
|
|
"description": "Volver arriba"
|
|
}
|
|
},
|
|
"actions": {
|
|
"title": "Acciones",
|
|
"print": {
|
|
"key": "Ctrl / Cmd + P",
|
|
"description": "Imprimir o guardar como PDF"
|
|
},
|
|
"closeModal": {
|
|
"key": "ESC",
|
|
"description": "Cerrar cualquier modal abierto"
|
|
},
|
|
"showHelp": {
|
|
"key": "?",
|
|
"description": "Mostrar esta ayuda de atajos"
|
|
}
|
|
},
|
|
"browser": {
|
|
"title": "Navegador (Predeterminado)",
|
|
"tab": {
|
|
"key": "Tab",
|
|
"description": "Navegar entre controles"
|
|
},
|
|
"enter": {
|
|
"key": "Enter / Espacio",
|
|
"description": "Activar control enfocado"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"infoModal": {
|
|
"title": "Acerca de este CV",
|
|
"description": "Este CV interactivo fue construido por mí mismo con <strong>Go + HTMX</strong>, demostrando arquitectura moderna de hipermedia sin frameworks pesados de JavaScript.",
|
|
"techStack": {
|
|
"goHono": "Go + Hono",
|
|
"htmx": "HTMX",
|
|
"html5": "HTML5 Semántico",
|
|
"css3": "CSS3 Puro"
|
|
},
|
|
"viewSource": "Ver proyecto en Github",
|
|
"viewSourceSubtext": "¿Quieres saber cómo está hecho?"
|
|
},
|
|
"contactModal": {
|
|
"title": "Ponerse en contacto",
|
|
"subtitle": "¡Conectemos!",
|
|
"description": "¿Tienes alguna pregunta o estás interesado en trabajar juntos? Rellena el formulario a continuación y me pondré en contacto contigo lo antes posible.",
|
|
"close": "Cerrar",
|
|
"form": {
|
|
"email": "Correo electrónico",
|
|
"emailPlaceholder": "tu.email@ejemplo.com",
|
|
"name": "Nombre",
|
|
"namePlaceholder": "Tu nombre",
|
|
"company": "Empresa",
|
|
"companyPlaceholder": "Empresa",
|
|
"subject": "Asunto",
|
|
"subjectPlaceholder": "Asunto",
|
|
"message": "Mensaje",
|
|
"messagePlaceholder": "Tu mensaje...",
|
|
"submit": "Enviar mensaje",
|
|
"sending": "Enviando...",
|
|
"note": "* Campos obligatorios"
|
|
},
|
|
"success": {
|
|
"title": "¡Mensaje enviado!",
|
|
"message": "Gracias por tu mensaje. Me pondré en contacto contigo pronto."
|
|
},
|
|
"error": {
|
|
"title": "Error"
|
|
}
|
|
},
|
|
"widgets": {
|
|
"backToTop": {
|
|
"ariaLabel": "Volver arriba",
|
|
"tooltip": "Volver arriba"
|
|
},
|
|
"info": {
|
|
"ariaLabel": "Información",
|
|
"tooltip": "Información"
|
|
},
|
|
"download": {
|
|
"ariaLabel": "Descargar PDF",
|
|
"tooltip": "Descargar PDF"
|
|
},
|
|
"print": {
|
|
"ariaLabel": "Imprimir CV",
|
|
"tooltip": "Imprimir CV"
|
|
},
|
|
"shortcuts": {
|
|
"ariaLabel": "Atajos de teclado",
|
|
"tooltip": "Atajos de teclado (?)"
|
|
},
|
|
"zoomToggle": {
|
|
"ariaLabel": "Alternar control de zoom",
|
|
"tooltip": "Control de zoom"
|
|
},
|
|
"zoomControl": {
|
|
"groupLabel": "Control de zoom",
|
|
"closeLabel": "Cerrar control de zoom",
|
|
"closeTitle": "Cerrar",
|
|
"sliderLabel": "Ajustar nivel de zoom del CV",
|
|
"resetLabel": "Restablecer zoom al 100%",
|
|
"resetTitle": "Restablecer"
|
|
},
|
|
"pdfToast": {
|
|
"title": "Preparando PDF",
|
|
"closeLabel": "Cerrar notificación"
|
|
},
|
|
"contact": {
|
|
"ariaLabel": "Contáctame",
|
|
"tooltip": "Contáctame"
|
|
},
|
|
"actionButtons": {
|
|
"downloadPdf": "Descargar como PDF",
|
|
"printFriendly": "Imprimir amigable",
|
|
"plainText": "Texto Plano",
|
|
"contact": "Contacto"
|
|
}
|
|
}
|
|
}
|