From e7ec35aa4d20e5348716f7024f9ee7a07c8b1469 Mon Sep 17 00:00:00 2001 From: itziarZG Date: Thu, 18 Jun 2026 08:19:44 +0200 Subject: [PATCH] feat: add becas --- src/i18n/becas/ca.ts | 51 ++++++++++++ src/i18n/becas/en.ts | 48 ++++++++++++ src/i18n/becas/es.ts | 51 ++++++++++++ src/i18n/becas/index.ts | 9 +++ src/i18n/menu/ca.ts | 4 + src/i18n/menu/en.ts | 4 + src/i18n/menu/es.ts | 4 + src/pages/[lang]/becas.astro | 148 +++++++++++++++++++++++++++++++++++ 8 files changed, 319 insertions(+) create mode 100644 src/i18n/becas/ca.ts create mode 100644 src/i18n/becas/en.ts create mode 100644 src/i18n/becas/es.ts create mode 100644 src/i18n/becas/index.ts create mode 100644 src/pages/[lang]/becas.astro diff --git a/src/i18n/becas/ca.ts b/src/i18n/becas/ca.ts new file mode 100644 index 0000000..228a8be --- /dev/null +++ b/src/i18n/becas/ca.ts @@ -0,0 +1,51 @@ +export const ca = { + title: 'Beques - PyConES 2026', + heading: 'Beques i ajuts', + intro: + "Des de la comunitat de PyConES volem facilitar al màxim l'assistència a aquesta convenció de totes les persones que tinguin alguna dificultat en aquest moment. Per això, s'ha decidit dedicar una part dels nostres recursos en beces per a les persones que ho necessitin.", + description: + "Les beces es destinaran a sufragar les despeses d'allotjament, el transport i/o l'entrada de l'esdeveniment.", + targetAudience: { + title: 'A qui van dirigides?', + items: [ + 'Estudiants universitaris, formació professional o BootCamp.', + 'Persones en situació de desocupació.', + 'Famílies monoparentals.', + 'Persones amb contracte de pràctiques, jornada reduïda o baixa laboral.', + ], + }, + documentation: { + title: 'Documentació a aportar', + items: [ + { + category: 'Estudiants', + requirement: 'Presentar el resguard de la matrícula del curs vigent.', + }, + { + category: 'Desocupats', + requirement: 'Certificat de desocupació.', + }, + { + category: 'Famílies monoparentals', + requirement: + 'Document que certifiqui la situació. Recordeu censurar la informació compromesa del document.', + }, + { + category: 'Contractes de pràctiques, jornada reduïda o baixa laboral', + requirement: + 'Document que certifiqui la situació. Recordeu censurar la informació compromesa del document.', + }, + ], + }, + application: { + title: 'Sol·licitar una beca', + body: "Per a sol·licitar la beca heu d'omplir el formulari de sol·licitud. Després d'estudiar la sol·licitud, ens posarem en contacte per correu electrònic amb la resposta.", + formLink: '#', + formText: 'Omplir formulari de sol·licitud', + }, + sponsors: { + title: 'Patrocinadors de beques', + intro: + 'Volem donar les gràcies a les empreses patrocinadores que han col·laborat amb nosaltres per a fer possibles aquestes beces.', + }, +} diff --git a/src/i18n/becas/en.ts b/src/i18n/becas/en.ts new file mode 100644 index 0000000..570620f --- /dev/null +++ b/src/i18n/becas/en.ts @@ -0,0 +1,48 @@ +export const en = { + title: 'Scholarships - PyConES 2026', + heading: 'Scholarships and aid', + intro: + 'From the PyConES community, we want to make it as easy as possible for anyone facing difficulties to attend this convention. That is why we have decided to dedicate part of our resources to scholarships for those who need them.', + description: 'Scholarships will cover accommodation, transportation, and/or event registration costs.', + targetAudience: { + title: 'Who is this for?', + items: [ + 'University students, vocational training, or BootCamp participants.', + 'Unemployed individuals.', + 'Single-parent families.', + 'People with internship contracts, reduced working hours, or on leave.', + ], + }, + documentation: { + title: 'Required documentation', + items: [ + { + category: 'Students', + requirement: 'Provide proof of enrollment for the current academic year.', + }, + { + category: 'Unemployed', + requirement: 'Unemployment certificate.', + }, + { + category: 'Single-parent families', + requirement: 'Document certifying the situation. Remember to redact any sensitive information.', + }, + { + category: 'Internship contracts, reduced hours, or on leave', + requirement: 'Document certifying the situation. Remember to redact any sensitive information.', + }, + ], + }, + application: { + title: 'Apply for a scholarship', + body: 'To apply for a scholarship, please fill out the application form. After reviewing your application, we will contact you via email with our response.', + formLink: '#', + formText: 'Fill out application form', + }, + sponsors: { + title: 'Scholarship sponsors', + intro: + 'We would like to thank the sponsoring companies that have collaborated with us to make these scholarships possible.', + }, +} diff --git a/src/i18n/becas/es.ts b/src/i18n/becas/es.ts new file mode 100644 index 0000000..f44da06 --- /dev/null +++ b/src/i18n/becas/es.ts @@ -0,0 +1,51 @@ +export const es = { + title: 'Becas - PyConES 2026', + heading: 'Becas y ayudas', + intro: + 'Desde la comunidad de PyConES queremos facilitar al máximo la asistencia a esta convención de todas las personas que tengan alguna dificultad en este momento. Por ello, se ha decidido dedicar una parte de nuestros recursos en becas para las personas que lo necesiten.', + description: + 'Las becas se destinarán a sufragar los gastos de alojamiento, el transporte y/o la entrada del evento.', + targetAudience: { + title: '¿A quién van dirigidas?', + items: [ + 'Estudiantes universitarios, formación profesional o BootCamp.', + 'Personas en situación de desempleo.', + 'Familias monoparentales.', + 'Personas con contrato de prácticas, jornada reducida o baja laboral.', + ], + }, + documentation: { + title: 'Documentación a aportar', + items: [ + { + category: 'Estudiantes', + requirement: 'Presentar el resguardo de la matrícula del curso vigente.', + }, + { + category: 'Desempleados', + requirement: 'Certificado de desempleo.', + }, + { + category: 'Familias monoparentales', + requirement: + 'Documento que certifique la situación. Recuerde censurar la información comprometida del documento.', + }, + { + category: 'Contratos en prácticas, jornada reducida o baja laboral', + requirement: + 'Documento que certifique la situación. Recuerde censurar la información comprometida del documento.', + }, + ], + }, + application: { + title: 'Solicitar una beca', + body: 'Para solicitar la beca debe rellenar el formulario de solicitud. Tras estudiar la solicitud nos pondremos en contacto vía email con la respuesta.', + formLink: '#', + formText: 'Rellenar formulario de solicitud', + }, + sponsors: { + title: 'Patrocinadores de becas', + intro: + 'Queremos dar las gracias a las empresas patrocinadoras que han colaborado con nosotros para hacer posible estas becas.', + }, +} diff --git a/src/i18n/becas/index.ts b/src/i18n/becas/index.ts new file mode 100644 index 0000000..2411ea8 --- /dev/null +++ b/src/i18n/becas/index.ts @@ -0,0 +1,9 @@ +import { es } from './es' +import { en } from './en' +import { ca } from './ca' + +export const texts = { + es, + en, + ca, +} as const diff --git a/src/i18n/menu/ca.ts b/src/i18n/menu/ca.ts index 6f3d575..56d8fb7 100644 --- a/src/i18n/menu/ca.ts +++ b/src/i18n/menu/ca.ts @@ -28,6 +28,10 @@ export const ca = { label: 'Codi de conducta', href: '/code-of-conduct', }, + { + label: 'Beces', + href: '/becas', + }, ], }, { diff --git a/src/i18n/menu/en.ts b/src/i18n/menu/en.ts index 456c24f..a4b2391 100644 --- a/src/i18n/menu/en.ts +++ b/src/i18n/menu/en.ts @@ -28,6 +28,10 @@ export const en = { label: 'Code of Conduct', href: '/code-of-conduct', }, + { + label: 'Scholarships', + href: '/becas', + }, ], }, { diff --git a/src/i18n/menu/es.ts b/src/i18n/menu/es.ts index 97a5a26..dc342c4 100644 --- a/src/i18n/menu/es.ts +++ b/src/i18n/menu/es.ts @@ -28,6 +28,10 @@ export const es = { label: 'Código de conducta', href: '/code-of-conduct', }, + { + label: 'Becas', + href: '/becas', + }, ], }, { diff --git a/src/pages/[lang]/becas.astro b/src/pages/[lang]/becas.astro new file mode 100644 index 0000000..266fddf --- /dev/null +++ b/src/pages/[lang]/becas.astro @@ -0,0 +1,148 @@ +--- +import Layout from '../../layouts/Layout.astro' +import StatusIcon from '../../components/icons/StatusIcon.astro' +import { texts } from '../../i18n/becas' + +export function getStaticPaths() { + return [{ params: { lang: 'es' } }, { params: { lang: 'en' } }, { params: { lang: 'ca' } }] +} + +const { lang } = Astro.params + +const t = texts[(lang || 'es') as keyof typeof texts] + +const { title, heading, intro, description, targetAudience, documentation, application, sponsors } = t +--- + + +
+ +
+

+ + {heading} +

+
+
+
+ + +
+
+

+ {intro} +

+

+ {description} +

+
+
+ + +
+

+ + {targetAudience.title} +

+
+
    + { + targetAudience.items.map((item: string) => ( +
  • +
  • + )) + } +
+
+
+ + +
+

+ + {documentation.title} +

+
+ { + documentation.items.map((item: { category: string; requirement: string }) => ( +
+ + {item.category.charAt(0)} + +
+

{item.category}

+

{item.requirement}

+
+
+ )) + } +
+
+ + +
+

+ + {application.title} +

+
+

+ {application.body} +

+ + {application.formText} + + + + + +
+
+ + +
+

+ + {sponsors.title} +

+
+

+ {sponsors.intro} +

+
+ +
+
+
+
+