Skip to content

Commit ed9df00

Browse files
committed
feat: add Spanish localization dictionary for the portfolio site
1 parent ecc9a33 commit ed9df00

1 file changed

Lines changed: 161 additions & 0 deletions

File tree

src/i18n/es.ts

Lines changed: 161 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,161 @@
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

Comments
 (0)