Skip to content

feat(becas): add FAQ section with markdown-sourced Q/A content - #245

Merged
francescarpi merged 5 commits into
mainfrom
feat/243
Oct 19, 2026
Merged

francescarpi merged 5 commits into
mainfrom
feat/243

Conversation

@francescarpi

Copy link
Copy Markdown
Collaborator

Resumen

Añade una sección de preguntas frecuentes sobre becas en src/pages/[lang]/becas.astro, alimentada por markdowns individuales (uno por pregunta/respuesta). Sigue 1:1 el patrón ya existente del repo para src/data/{jobs,teams,sponsors,speakers}/*.md (items sueltos + i18n en frontmatter).

Cierra la issue #243.

Cambios

Nuevos

  • src/data/becas-faq/*.md (15 archivos) — una Q/A por archivo, con frontmatter:
    • id, category, order (establece orden dentro de cada categoría, no depende del filesystem).
    • question y answer como objetos { es, en, ca } (mismo shape que location y description en src/data/jobs/).
  • src/components/BecasFaq.astro — presentación pura:
    • Carga los .md con import.meta.glob('../data/becas-faq/*.md', { eager: true }), igual que TeamsPage.astro/JobsPage.astro.
    • Agrupa por category, ordena por order.
    • Renderiza cada Q/A como <details>/<summary> accesible (sin JS, soporta teclado nativo).
  • src/types/becas-faq.ts — tipos IBecasFaq y TBecasFaqCategory.

Modificados

  • src/i18n/becas/{es,en,ca}.ts — bloque faq: { title, subtitle, autoTranslateNotice, categories: { general, entrada, alojamiento, transporte } } para strings de UI.
  • src/pages/[lang]/becas.astro — import de BecasFaq y render del componente antes de la sección <!-- Contact -->.

Categorías cubiertas

  • Sobre la beca en general (3 preguntas): contrato, cambiar tipo de beca, justificante de asistencia / visado.
  • Sobre la beca de entrada (3 preguntas): cuándo canjear, ya tener otra entrada, faltas durante la conferencia.
  • Sobre la beca de alojamiento (6 preguntas): hotel + extras, gestión de estancia, fechas exactas, noches extra, acompañante, compartir habitación.
  • Sobre la beca de transporte (3 preguntas): cuándo comprar vuelo, factura, fechas de los billetes.

i18n

  • ES: contenido fuente original de la issue.
  • EN y CA: traducción automática generada (con glosario cuidado: beca→scholarship/beca, becado→grantee/becat, justificante→certificate of attendance/justificant, etc.).
  • Las traducciones EN/CA muestran una nota visible al pie: "This text was automatically translated and is pending human review" / "Aquest text ha estat traduït automàticament i està pendent de revisió humana".
  • Necesita revisión humana antes de salir a producción. Se recomienda abrir una issue child para tracking de esa revisión.

Accesibilidad

  • Un solo <h1> por página (sin tocar el existente).
  • Jerarquía: <h2> FAQ → <h3> por categoría → <summary> (que ya es un heading implícito del disclosure).
  • <details>/<summary> nativos: soportan teclado (Enter/Space/Tab), lectores de pantalla y modo focus-visible del tema sin JS.
  • Iconos decorativos con aria-hidden="true".
  • IDs estables por pregunta (faq-general-001, etc.) listos para anchor links desde emails u otras páginas.
  • Sin links target="_blank" en este bloque (ningún enlace abre nueva pestaña).

Patrón seguido en el repo

  • Markdown suelto por item: como jobs/, teams/, sponsors/, speakers/.
  • import.meta.glob con eager: true: como TeamsPage.astro y JobsPage.astro.
  • i18n en src/i18n/<sección>/ con shape por idioma: como el resto de secciones.
  • Tipos en src/types/: como jobs.ts, sponsors.ts, etc.
  • Tailwind classes idénticas al resto de secciones (bg-white/5 rounded-2xl border border-white/10 shadow-sm, bg-pycon-red/20 para el icon badge).

Pendiente (no bloqueante para merge, recomendado)

  • Revisión humana de EN y CA por parte de la organización (issue child).
  • Sumar schema.org FAQPage JSON-LD si se decide priorizar SEO (no incluido por costo de mantenimiento vs. una sola página interna).

Cómo probar

```bash
pnpm install
pnpm dev

Visitar http://localhost:4321/es/becas, /en/becas, /ca/becas

Probar apertura/cierre de cada disclosure con teclado y con clic

```

Closes #243

- Add 15 Q/A pairs as markdown files under src/data/becas-faq/,
  one per question, with i18n question/answer blocks in frontmatter
  (es, en, ca), grouping them by category (general, entrada,
  alojamiento, transporte) via frontmatter fields.
- Add BecasFaq component that loads the markdowns through
  import.meta.glob, groups items by category, and renders them
  as accessible <details>/<summary> disclosure widgets.
- Extend the becas i18n module with title, subtitle and category
  labels in es/en/ca. EN and CA translations are auto-generated
  and visually flagged as pending human review.
- Render the new section on /[lang]/becas before the existing
  contact block, following the same visual and accessibility
  patterns already used in the page.
@francescarpi francescarpi added enhancement New feature or request 🦮 a11y Accessibility Issue 🈂️ i18n Internationalization diversidad labels Oct 18, 2026
@francescarpi francescarpi self-assigned this Oct 18, 2026

@ctrl-alt-d ctrl-alt-d left a comment •

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Ca]

Aquí el més important és la paraula Beca, que el seu plural és Beques i no pas Beces com està posat a per tot.

Faltes d'ortografia

  • beces → beques (totes les aparicions inclús al menú).
  • resol·licitat → resolt.
  • Fílies monoparentals / nombroses → Famílies monoparentals / nombroses.
  • cupos → contingents.
  • tʼhaguéssis dʼabsentar → t'haguessis d'absentar.
  • BootCamp → bootcamp.

Correccions gramaticals i lingüístiques

  • sigui el més accessible possible → sigui tan accessible com sigui possible.
  • l'entrada de l'esdeveniment → l'entrada a l'esdeveniment.
  • No obstant, → No obstant això,.
  • com números d'identificació → com ara números d'identificació.
  • Estudiants universitaris, formació professional, BootCamp o doctorat. → Estudiants universitaris, de formació professional, de bootcamp o de doctorat.
  • Documentació a aportar → Documentació que cal aportar.
  • signis lʼassistència com a mínim 2 dies → acreditis l'assistència durant almenys dos dies.
  • Tingueu en compte que lʼhotel no es compromet a mantenir-te → Tingues en compte que l'hotel no es compromet a mantenir-te.
  • Sou lliure dʼescollir → Sou lliures d'escollir.
  • per la vostra beca → a la vostra beca.
  • podeu contactar-nos a → podeu contactar amb nosaltres a.

Revisió de coherència

  • Unificar el tractament: tu o vosaltres. Actualment s'alternen dins d'algunes respostes.
  • Revisar Heu rebut el contracte?, perquè la resposta sembla redactada des del punt de vista de l'organització.
  • Revisar l'alternança entre contracte, acord de beques i acord de la beca per mantenir una denominació coherent.

[Es]

Faltas de ortografía

  • tienes porqué adjuntar → tienes por qué adjuntar (aunque es preferible no tienes que adjuntar).
  • 118€ → 118 € (debe haber un espacio entre la cifra y el símbolo).
  • BootCamp → bootcamp (minúscula si se usa como nombre común).

Correcciones gramaticales y de estilo

  • los gastos de alojamiento, el transporte y/o la entrada del evento → los gastos de alojamiento, transporte y/o entrada al evento.
  • los gastos de tramitación ni pago de visados → los gastos de tramitación ni de pago de visados.
  • Estudiantes universitarios, formación profesional, BootCamp, doctorado. → Estudiantes universitarios, de formación profesional, de bootcamp o de doctorado.
  • Documentación a aportar → Documentación que se debe aportar (recomendación de estilo).
  • recuerda censurar la información → recuerda ocultar los datos personales (más claro en este contexto).
  • nos pondremos en contacto por email → nos pondremos en contacto contigo por correo electrónico.
  • No, lo siento, pero son adjudicaciones independientes → No, lo sentimos, pero son adjudicaciones independientes.
  • en diferentes cupos → en distintos cupos (mejora estilística opcional).
  • firmes la asistencia al menos 2 días → acredites tu asistencia durante al menos dos días.
  • un justificante, que puede ser laboral, de estudio, médico o por horarios de transporte, etc. → un justificante laboral, académico, médico o relacionado con los horarios de transporte.
  • Registro a partir de las 14:00 y salida hasta las 12:00 → Entrada a partir de las 14:00 y salida antes de las 12:00 (confirmar la hora límite).
  • tiempo de estadía de la beca → periodo de estancia cubierto por la beca.
  • otra habitación diferente → otra habitación.
  • el presupuesto asignado por tu beca → el presupuesto asignado a tu beca.
  • Si tienes alguna duda, puedes contactarnos en → Si tienes alguna duda, puedes escribirnos a.

Coherencia y contenido

  • ¿Habéis recibido el contrato? → Revisar la respuesta Sí, no te preocupes, porque no confirma expresamente la recepción de un contrato concreto.
  • ¿Puedo cambiar una beca por otra? → Unificar lo siento con recibís, ya que mezclan singular y plural.
  • Unificar email, mail y correo electrónico; se recomienda correo electrónico.
  • Unificar contrato, acuerdo de becas y acuerdo de la beca si hacen referencia al mismo documento.
  • 2 de agosto → Añadir el año para evitar ambigüedades y revisar si el plazo sigue vigente.
  • Revisar No te preocupes, te guardamos la de beca por si al final pasa algo, porque resulta impreciso para explicar las condiciones de reserva de la entrada.

[Eng]

Correccions gramaticals i de naturalitat

  • From the PyConES community, we want to make attending the convention as accessible as possible for everyone. → At PyConES, we want to make attending the conference as accessible as possible for everyone.
  • Visa processing and payment fees are not included. → Visa application and visa fees are not covered.
  • until your application has been processed → until a decision has been made on your application
  • University students, vocational training, BootCamp, or doctoral students. → University students, vocational training students, bootcamp participants, or doctoral students.
  • People with internship contracts, reduced working hours, leave of absence, or sabbatical. → People on internship contracts, working reduced hours, on sick leave, or on a leave of absence.
  • Single-parent / large families. → Single-parent families and large families.
  • Document certifying the indicated situation. → A document confirming your circumstances.
  • please fill out the form before August 2nd → please complete the form before 2 August
  • After reviewing your application, we will contact you via email with our response. → Once we have reviewed your application, we will email you with our decision.
  • No, I'm sorry, but they are awarded independently. → Unfortunately not. Each grant is awarded independently.
  • We manage them separately, in different quotas and with different requirements. → We manage them separately, with different allocations and eligibility requirements.
  • From the moment you send us the signed grant agreement. → As soon as you send us the signed grant agreement.
  • use the one that credits you within one of those groups → use the ticket that identifies you as a member of one of those groups
  • we will keep your scholarship ticket safe just in case → we will reserve your scholarship ticket in case you need it
  • we would need a supporting document — for example, work, study, medical, or transport schedule reasons → we would need supporting documentation, such as proof of work or study commitments, medical reasons, or transport schedules
  • Check-in is from 14:00 and check-out is until 12:00. → Check-in is from 14:00, and check-out is by 12:00.
  • the hotel does not commit to keeping you in the same room as during the scholarship stay → the hotel cannot guarantee that you will be able to stay in the same room beyond the period covered by your grant
  • Yes, but the extra cost will be at your own expense. → Yes, but you will need to cover the additional cost.
  • Write to us at the grants email, copying in the other grantee you would like to share with → Email the scholarships team, copying in the other scholarship recipient you would like to share a room with
  • Contact their customer support or write to the email address of the place where you bought your tickets. → Contact the airline or booking platform's customer support team to request one.
  • the budget assigned by your grant → the budget allocated to your grant

Coherència terminològica

  • Unificar scholarship, grant i aid. Recomanació: utilitzar grant per als ajuts econòmics i mantenir scholarship només si és la denominació oficial del programa.
  • About the entry grant → About the ticket grant.
  • About the accommodation grant → Mantenir aquesta denominació.
  • About the travel grant → Mantenir aquesta denominació.
  • grantees → grant recipients (més natural per al públic general).
  • Unificar conference i convention; recomano conference.
  • Unificar ticket i event registration quan facin referència al mateix concepte.
  • Mantenir l'anglès britànic a tota la pàgina: programme, organiser, enrolment, accommodation.
  • Unificar el format de les dates: 2 August, 6 November 2026, 8 November 2026.

Contingut que convé revisar

  • Have you received the contract? — La resposta comença amb Yes, però no permet comprovar la recepció d'un contracte concret.
  • When can I redeem my ticket? — Potser seria més precís When can I claim my ticket?, depenent de com funcioni el procés.
  • No news, good news. → No news is good news. (expressió idiomàtica completa).
  • Visa application and visa fees are not covered. — Comprovar si només es volen excloure les taxes de visat o també altres despeses administratives.
  • August 2nd — Afegir l'any i revisar si el termini continua vigent.
  • scholarship certificate — Comprovar si es refereix a una confirmació de concessió de l'ajut o a un certificat d'assistència.

[Altres]

El peu de pàgina apareix dues vegades:

Captura de pantalla on es veu que el peu de pàgina apareix per duplicat

…ion on /becas

The page rendered two <Layout> components back-to-back, which made the
shared <Footer /> in src/layouts/Layout.astro appear twice in /es/becas,
/en/becas and /ca/becas while every other page rendered it correctly.
Drop the inner opening and closing tags so /becas renders a single
<Layout> like the rest of the site.

Caught while running pnpm build after the FAQ changes; only visible in
the rendered HTML, not at the source level.
Apply the linguistic and coherence corrections requested by ctrl-alt-d
in the review of #245 across es, en and ca. The same review also flagged
pre-existing strings on the scholarships page outside the FAQ block;
those are addressed here too so the page reads consistently.

CA
- beces -> beques wherever it appeared (still 'Beca' / 'beca' as a word,
  plural corrected).
- Fílies -> Famílies (monoparentals / nombroses).
- resol·licitat -> resolt.
- cupos -> contingents.
- tʼhaguéssis dʼabsentar -> t'haguessis d'absentar (typo fix).
- BootCamp -> bootcamp.
- Grammar and style: 'més accessible possible' -> 'tan accessible com
  sigui possible', 'l'entrada de l'esdeveniment' -> 'l'entrada a
  l'esdeveniment', 'No obstant,' -> 'No obstant això,', 'A qui van
  dirigides?' block recast, 'Documentació a aportar' -> 'Documentació
  que cal aportar', etc.
- FAQ answers switched to 'vosaltres' address consistently across all
  14 modified Q/A pairs, including the new 'Sobre la beca...' category
  headings.

ES
- tienes porqué adjuntar -> no tienes que adjuntar.
- 118 € with separator.
- BootCamp -> bootcamp.
- Grammar and style: covered/notIncluded recast, 'recuerda censurar'
  -> 'recuerda ocultar', 'nos pondremos en contacto por email' ->
  'nos pondremos en contacto contigo por correo electrónico', etc.
- FAQ answers switched to 'tú' address consistently across all 14
  modified Q/A pairs.
- accommodation dates: 'Registro a partir de las 14:00 y salida hasta
  las 12:00' -> 'Entrada a partir de las 14:00 y salida antes de las
  12:00'.
- 'asignado por tu beca' -> 'asignado a tu beca'.
- 'otra habitación diferente' -> 'otra habitación'.
- 'periodo de estancia cubierto por la beca'.
- FAQ entry-002 rephrased to clarify the ticket reservation conditions
  (per reviewer's coherence note).
- 'lo siento, pero son adjudicaciones independientes' -> 'lo sentimos,
  pero son adjudicaciones independientes'.

EN
- 'scholarship' normalised to 'grant' for the financial aid programme
  and 'grant agreement' for the document formerly called 'contracte/
  contrato/contract'.
- 'convention' -> 'conference'.
- 'ticket' kept for the ticket grant; 'event registration' removed.
- British English preserved: programme, organiser, enrolment,
  accommodation.
- Date format unified: '2 August', '6 November 2026', '8 November 2026'.
- grantees -> grant recipients.
- 'No news, good news' -> 'No news is good news'.
- 'scholarship ticket' -> 'grant ticket'; 'at your own expense'
  -> 'cover the additional cost'; 'budget assigned by your grant'
  -> 'budget allocated to your grant'; etc.
- FAQ entry-002 rephrased to mirror the es/ca wording.
- All 14 modified FAQ answers rewritten with this terminology.

Application deadline
- Across es/en/ca the body and CTA of 'application' now reflect that
  the 2 August 2026 deadline has passed and route to a mailto for the
  grants team. The forms.gle link is kept only if the form is still
  open; verify before merging.

The autoTranslateNotice in en/ca remains in place until human review
of the corrected translations is completed.

Refs #245.
The Catalan menu entry linking to the scholarships page was labelled
'Beces'; the correct plural in Catalan is 'Beques'. The href remains
'/becas' to avoid breaking existing bookmarks; an eventual rename of
the route should be coordinated with redirects.

Refs #245.
Addresses the second-pass items flagged in ctrl-alt-d's review after the
previous fix commit landed: treatment consistency in the Catalan FAQ
answers, the ambiguous 'scholarship certificate' wording, and a few
terminology cleanups left out of the previous round.

CA — treatment unified to 'vosaltres'
- entrada-001: 'No esperis' -> 'No espereu'.
- entrada-002: reworded the whole answer (was entirely in 'tu' while
  the rest of the page uses 'vosaltres'): 'teniu', 'feu servir',
  'esteu esperant', 'us acredita', 'la necessiteu'.
- general-001: response aligned to the 'vosaltres' block of the
  question and the rest of the FAQ: 'no us preocupeu', 'us
  escriuríem', 'ens doneu'.

EN/ES/CA — 'scholarship certificate' clarified
- general-003: replaced 'scholarship certificate / justificante de la
  beca / justificant de la beca' (ambiguous between grant
  confirmation and attendance certificate) with 'grant award letter /
  confirmación de concesión de la beca / confirmació de concessió de
  la beca', as confirmed by the diversity team.
- Question was rewritten to first-person ('Can I get / ¿Puedes / Puc')
  to match the answer's perspective and avoid implying we already have
  a single canonical 'certificate'.
- Mailto for visa requests added inline (diversidadybecas@2026.es...)
  since the grant award letter request is the practical next step.

EN/ES/CA — minor terminology tidy in alojamiento-001
- EN: 'Mail:' -> 'Email:'; 'at your own expense' -> 'cover the
  additional cost' to match alojamiento-004/005 wording.
- ES: 'Mail:' -> 'Correo electrónico:' (per reviewer's
  email/correo/mail unification).
- CA: 'Correu:' -> 'Correu electrònic:' for symmetry.

ES — question treatment in general-001
- '¿Habéis recibido el acuerdo de la beca?' -> '¿Has recibido el
  acuerdo de la beca?' to match the 'tú' used in the answer and across
  the rest of the Spanish FAQ.

Refs #245.
@francescarpi

Copy link
Copy Markdown
Collaborator Author

Uff... havia fet pur vibecodding mentres estava a la reunió i l'he pujat sense revisar...
Canvis fets. Quan puguis (no cal avui).

@ctrl-alt-d ctrl-alt-d left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGFM

@francescarpi
francescarpi merged commit b925fe8 into main Oct 19, 2026
1 check passed
@francescarpi
francescarpi deleted the feat/243 branch October 19, 2026 07:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🦮 a11y Accessibility Issue diversidad enhancement New feature or request 🈂️ i18n Internationalization

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants