|
| 1 | +// Diccionario fuente (español). `en.ts` se declara `satisfies typeof es` para |
| 2 | +// que TypeScript rompa si falta una clave — es la garantía real de paridad, |
| 3 | +// reforzada por tests/i18n-dictionary.test.ts. |
| 4 | + |
| 5 | +const es = { |
| 6 | + meta: { |
| 7 | + siteName: 'CodeByMike', |
| 8 | + defaultDescription: |
| 9 | + 'Software Engineer especializado en escalabilidad, rendimiento y experiencia de usuario de clase mundial.', |
| 10 | + }, |
| 11 | + nav: { |
| 12 | + diseno: 'Diseño Web', |
| 13 | + tools: 'Herramientas', |
| 14 | + engineering: 'Ingeniería', |
| 15 | + lab: 'Lab', |
| 16 | + notes: 'Notas', |
| 17 | + security: 'Seguridad', |
| 18 | + log: 'Log', |
| 19 | + available: 'Disponible', |
| 20 | + loginAria: 'Login', |
| 21 | + languageSwitch: 'English', |
| 22 | + }, |
| 23 | + footer: { |
| 24 | + tagline: 'Software Engineer. Arquitectura escalable, rendimiento obsesivo y experiencias de usuario de clase mundial.', |
| 25 | + groups: { |
| 26 | + sitio: { title: 'Sitio', inicio: 'Inicio', contacto: 'Contacto' }, |
| 27 | + producto: { |
| 28 | + title: 'Producto', |
| 29 | + herramientas: 'Herramientas', |
| 30 | + notas: 'Notas', |
| 31 | + docs: 'Documentación', |
| 32 | + certificaciones: 'Certificaciones', |
| 33 | + }, |
| 34 | + ingenieria: { |
| 35 | + title: 'Ingeniería', |
| 36 | + ingenieria: 'Ingeniería', |
| 37 | + arquitectura: 'Arquitectura', |
| 38 | + seguridad: 'Seguridad', |
| 39 | + laboratorio: 'Laboratorio', |
| 40 | + }, |
| 41 | + operacion: { title: 'Operación', log: 'Log', status: 'Status' }, |
| 42 | + redes: { title: 'Redes' }, |
| 43 | + contacto: { title: 'Contacto directo' }, |
| 44 | + }, |
| 45 | + }, |
| 46 | + notFound: { |
| 47 | + title: '404 — CodeByMike', |
| 48 | + description: 'La página que buscas no existe o ya no está disponible.', |
| 49 | + eyebrow: 'Error 404', |
| 50 | + headingA: 'Página', |
| 51 | + headingB: 'no encontrada', |
| 52 | + body: 'La ruta que intentas visitar no existe o el contenido ya no está disponible.', |
| 53 | + cta: 'Volver al inicio', |
| 54 | + }, |
| 55 | + home: { |
| 56 | + title: 'CodeByMike | Mike — Software Engineer', |
| 57 | + description: |
| 58 | + 'Mike — Software Engineer en Colombia (remoto). TypeScript, React, Next.js, Astro, Node.js y PostgreSQL. Productos escalables, arquitectura robusta y rendimiento obsesivo.', |
| 59 | + badge: 'Disponible · Colombia · Remoto', |
| 60 | + githubTop3Label: 'GitHub Colombia', |
| 61 | + githubTop3Value: 'Contributor', |
| 62 | + githubDevProgramLabel: 'Miembro oficial', |
| 63 | + githubDevProgramValue: 'Developer Program', |
| 64 | + hud: { |
| 65 | + title: 'sys.monitor', |
| 66 | + boot: 'boot', |
| 67 | + sistema: 'sistema', |
| 68 | + build: 'build', |
| 69 | + pipeline: 'pipeline', |
| 70 | + stack: 'stack', |
| 71 | + lab: 'lab', |
| 72 | + }, |
| 73 | + hero: { |
| 74 | + line1: 'Ingeniería de', |
| 75 | + line2: 'software', |
| 76 | + line3: 'con propósito.', |
| 77 | + lead: 'Soy Mike — un Software Engineer construyendo productos escalables para equipos que no pueden permitirse adivinar. Arquitectura robusta, rendimiento obsesivo, experiencias de clase mundial.', |
| 78 | + stackLabel: 'Stack principal', |
| 79 | + stackLine1: 'TypeScript · React · Next.js', |
| 80 | + stackLine2: 'Astro · Node.js · PostgreSQL', |
| 81 | + ctaProjects: 'Ver proyectos', |
| 82 | + ctaCerts: 'Certificaciones', |
| 83 | + ctaContact: 'Hablemos', |
| 84 | + }, |
| 85 | + bento: { |
| 86 | + sectionLabel: 'Qué hago', |
| 87 | + about: { |
| 88 | + badge: 'Práctica', |
| 89 | + title: 'Diseño la arquitectura que escala tu producto. Y la construyo.', |
| 90 | + statYears: 'Años exp.', |
| 91 | + statProjects: 'Proyectos', |
| 92 | + statIndustries: 'Industrias', |
| 93 | + }, |
| 94 | + now: { |
| 95 | + badge: 'Ahora', |
| 96 | + body: 'Construyendo productos full-stack con Astro + Next.js y arquitectura serverless.', |
| 97 | + }, |
| 98 | + capabilities: { |
| 99 | + badge: 'Capacidades', |
| 100 | + items: [ |
| 101 | + 'Arquitectura escalable · Full-stack', |
| 102 | + 'APIs REST · GraphQL · tRPC', |
| 103 | + 'Performance · Core Web Vitals', |
| 104 | + 'Testing · Unit · E2E · TypeScript', |
| 105 | + ], |
| 106 | + }, |
| 107 | + location: { badge: 'Base', country: 'Colombia', tz: 'GMT−5 · Remoto global' }, |
| 108 | + contactMicro: { |
| 109 | + badge: 'Inbound', |
| 110 | + body: 'Primera respuesta en 24 h · L–V.', |
| 111 | + note: 'Proyectos evaluados por fit y timing.', |
| 112 | + cta: 'Brief', |
| 113 | + }, |
| 114 | + github: { user: 'mikerb95', note: 'Open source · commits diarios', cta: 'Ver perfil' }, |
| 115 | + }, |
| 116 | + proyectos: { sectionLabel: 'Trabajo seleccionado', title: 'Proyectos en producción.' }, |
| 117 | + proceso: { |
| 118 | + sectionLabel: 'Cómo trabajo', |
| 119 | + title: 'Un proceso en cuatro pasos, calibrado a tu velocidad.', |
| 120 | + steps: [ |
| 121 | + { t: 'Diagnóstico', d: 'Dos semanas escuchando — cada flujo, cada hoja de cálculo, cada workaround.', time: 'Sem 1–2' }, |
| 122 | + { t: 'Arquitectura', d: 'Mapeo de decisiones del producto. Qué es crítico vs. cosmético.', time: 'Sem 3' }, |
| 123 | + { t: 'Prototipo', d: 'React real, datos reales, límites reales. Testeado con los usuarios finales.', time: 'Sem 4–8' }, |
| 124 | + { t: 'Ship & mentoring', d: 'Construyo junto a tu equipo. Les dejo un sistema que pueden escalar.', time: 'Sem 9+' }, |
| 125 | + ], |
| 126 | + }, |
| 127 | + expertise: { |
| 128 | + sectionLabel: 'Expertise técnico', |
| 129 | + items: [ |
| 130 | + { title: 'Arquitectura Escalable', body: 'Diseño sistemas distribuidos y modulares pensados para crecer. Monorepos, APIs robustas y patrones de diseño sólidos.' }, |
| 131 | + { title: 'Performance First', body: 'La velocidad es una feature. Optimizo Core Web Vitals, tiempos de respuesta de API y eficiencia en bases de datos.' }, |
| 132 | + { title: 'Calidad de Código', body: 'Testing riguroso (Unit, E2E), tipado estático estricto y documentación clara. Código mantenible es código rentable.' }, |
| 133 | + ], |
| 134 | + }, |
| 135 | + lab: { |
| 136 | + sectionLabel: 'Laboratorio en vivo', |
| 137 | + badge: 'Demo interactiva · seguridad', |
| 138 | + titleLine1: 'Sala de espejos:', |
| 139 | + titleLine2: 'te reconozco sin cookies.', |
| 140 | + p1a: 'Construí un laboratorio de ', |
| 141 | + p1strong: 'device fingerprinting', |
| 142 | + p1b: |
| 143 | + ' para hacer visible algo que casi nadie ve: tu navegador expone decenas de señales —canvas, GPU, fuentes, audio— que juntas forman una huella casi única. Escaneas un QR, entras a una sala y un tablero te identifica en vivo ', |
| 144 | + p1strong2: 'sin login y sin cookies', |
| 145 | + p1c: '.', |
| 146 | + p2a: '¿El objetivo? Que lo ', |
| 147 | + p2em: 'sientas', |
| 148 | + p2b: |
| 149 | + ': entra en incógnito, borra tus cookies y vuelve a entrar. Te reconoce igual. Y termina enseñándote cómo defenderte. Un demo para explicar privacidad y rastreo sin diapositivas.', |
| 150 | + cta: 'Entrar al laboratorio', |
| 151 | + note: 'Efímero · sin PII · las salas se borran en 2h', |
| 152 | + points: [ |
| 153 | + { title: 'Escanea y entra', body: 'Varios dispositivos se enlazan a la misma sala por un QR — como un aula o un evento en vivo.' }, |
| 154 | + { title: 'Te reconoce, no te loguea', body: 'Recolector propio contrastado con FingerprintJS. Si vuelves en incógnito, el contador de revisitas sube.' }, |
| 155 | + { title: 'Aprende a defenderte', body: 'Cierra explicando por qué el incógnito no basta y qué sí funciona: Tor, resistFingerprinting y más.' }, |
| 156 | + ], |
| 157 | + }, |
| 158 | + }, |
| 159 | +} |
| 160 | + |
| 161 | +export default es |
0 commit comments