refactor: Extract all hardcoded content to JSON files
- Move all bilingual text from templates to UI JSON (labels, buttons, modals) - Move skills summary paragraph to CV JSON with HTML support - Add new UI sections: navigation, viewControls, sections, footer, portfolio, pdfModal, shortcutsModal, infoModal, widgets - Update Go structs to match expanded JSON structure - Add template.HTML type for CV.SkillsSummary field - Add JSON content validation test (70-json-content-validation.test.mjs) Templates now contain only structural logic (CSS classes, HTML attributes) while all user-visible text loads from JSON files for proper i18n support.
This commit is contained in:
+123
-10
@@ -1,19 +1,78 @@
|
||||
{
|
||||
"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"
|
||||
"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"
|
||||
},
|
||||
"viewSource": "Ver proyecto en Github",
|
||||
"viewSourceSubtext": "¿Quieres saber cómo está hecho?"
|
||||
"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",
|
||||
@@ -87,5 +146,59 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"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?"
|
||||
},
|
||||
"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"
|
||||
},
|
||||
"actionButtons": {
|
||||
"downloadPdf": "Descargar como PDF",
|
||||
"printFriendly": "Imprimir amigable"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user