diff --git a/src/components/AccommodationPage.astro b/src/components/AccommodationPage.astro index b9274d1..89f4261 100644 --- a/src/components/AccommodationPage.astro +++ b/src/components/AccommodationPage.astro @@ -8,6 +8,24 @@ interface Props { const { lang } = Astro.props const t = accommodationTexts[lang as keyof typeof accommodationTexts] +type AreaSlug = + | 'eixampleEsquerra' + | 'elRaval' + | 'santAntoni' + | 'ciutatVella' + | 'sants' + | 'poblenou22' + | 'elClot' + | 'lesCorts' + | 'eixampleDreta' + | 'collblanc' + +const walkingAreas: AreaSlug[] = ['eixampleEsquerra', 'elRaval', 'santAntoni', 'ciutatVella'] +const directMetroAreas: AreaSlug[] = ['sants', 'poblenou22', 'elClot'] +const transferAreas: AreaSlug[] = ['lesCorts', 'eixampleDreta', 'collblanc'] + +const areaName = (slug: AreaSlug) => t[`accommodation.areas.${slug}.name` as keyof typeof t] +const areaDesc = (slug: AreaSlug) => t[`accommodation.areas.${slug}.desc` as keyof typeof t] ---
@@ -20,20 +38,72 @@ const t = accommodationTexts[lang as keyof typeof accommodationTexts]

-
-

- {t['accommodation.intro']} -

+ +
+
+ +

+ {t['accommodation.areas.title']} +

+ +
+
+

{t['accommodation.areas.transportIntro.p1']}

+

{t['accommodation.areas.transportIntro.p2']}

+

{t['accommodation.areas.transportIntro.p3']}

+
+ +
+
+

{t['accommodation.areas.category.walking']}

+
    + { + walkingAreas.map((slug) => ( +
  • +

    {areaName(slug)}

    +

    {areaDesc(slug)}

    +
  • + )) + } +
+
+
+

{t['accommodation.areas.category.directMetro']}

+
    + { + directMetroAreas.map((slug) => ( +
  • +

    {areaName(slug)}

    +

    {areaDesc(slug)}

    +
  • + )) + } +
+
+
+

{t['accommodation.areas.category.transferMetro']}

+
    + { + transferAreas.map((slug) => ( +
  • +

    {areaName(slug)}

    +

    {areaDesc(slug)}

    +
  • + )) + } +
+
+
-
+
-
-

{t['accommodation.hotels.title']}

-
+ +

+ {t['accommodation.hotels.title']} +

+
- +

{t['accommodation.hotels.subtitle']}

{t['accommodation.hotels.disclaimer']} @@ -55,59 +131,36 @@ const t = accommodationTexts[lang as keyof typeof accommodationTexts]

- -
-

- - {t['accommodation.areas.title']} -

-
-
-

- {t['accommodation.areas.eixample.name']} -

-

{t['accommodation.areas.eixample.desc']}

-
-
-

- {t['accommodation.areas.gothic.name']} -

-

{t['accommodation.areas.gothic.desc']}

-
-
-

- {t['accommodation.areas.poblenou.name']} -

-

{t['accommodation.areas.poblenou.desc']}

-
-
-
-
-

+

{t['accommodation.apartments.title']}

{t['accommodation.apartments.text']}

{t['accommodation.apartments.link']} - ({t['accommodation.a11y.linkOpensNewTab']}) +
@@ -140,4 +194,10 @@ const t = accommodationTexts[lang as keyof typeof accommodationTexts] transform: translateY(0); } } + + @media (prefers-reduced-motion: reduce) { + .accommodation-container { + animation: none; + } + } diff --git a/src/i18n/accommodation/ca.ts b/src/i18n/accommodation/ca.ts index 22d95a7..ef0ec68 100644 --- a/src/i18n/accommodation/ca.ts +++ b/src/i18n/accommodation/ca.ts @@ -2,24 +2,55 @@ export const ca = { 'accommodation.title': 'Allotjament', 'accommodation.hero.title': 'On allotjar-se', 'accommodation.hero.subtitle': 'Recomanacions per a la teva estada a Barcelona', - 'accommodation.intro': - "Barcelona és una de les ciutats amb més oferta hotelera d'Europa. Per a la PyConES 2026, recomanem buscar allotjament al districte de l'Eixample o a Ciutat Vella per estar a pocs minuts a peu de la seu (UB Edifici Històric).", 'accommodation.hotels.title': 'Hotels Recomanats', 'accommodation.hotels.subtitle': 'Convenis i opcions properes', 'accommodation.hotels.disclaimer': 'Estem treballant per tancar convenis exclusius amb descomptes per als assistents. Torna aviat per veure els codis promocionals!', 'accommodation.areas.title': 'Millors Zones', - 'accommodation.areas.eixample.name': "L'Eixample", - 'accommodation.areas.eixample.desc': - 'La zona més segura i elegant, amb arquitectura modernista i a un pas de la seu.', - 'accommodation.areas.gothic.name': 'Barri Gòtic', - 'accommodation.areas.gothic.desc': - 'El centre històric, amb carrers màgics i molta vida nocturna, a 10 min de la UB.', - 'accommodation.areas.poblenou.name': 'Poblenou / 22@', - 'accommodation.areas.poblenou.desc': - 'El hub tecnològic. Un poc més allunyat però molt ben connectat per metro (L1).', + 'accommodation.areas.transportIntro.p1': + 'Si has de tornar a casa en tren, les millors opcions són Sants, Eixample Esquerra o Les Corts (per anar a Sants Estació).', + 'accommodation.areas.transportIntro.p2': + "Si tornes en avió, et recomanem els barris d'El Raval, Sant Antoni, Eixample Esquerra (Aerobús), Sants (tren Rodalies R2) o Les Corts i Collblanc (L9 Sud). Tanmateix hi ha una parada de l'autobús directe a l'aeroport (Aerobús) davant de la seu.", + 'accommodation.areas.transportIntro.p3': + 'Tindrem servei de consigna, així que si marxes el diumenge pots fer check-out i deixar les maletes aquí.', + 'accommodation.areas.category.walking': 'A peu', + 'accommodation.areas.category.directMetro': 'Metro directe', + 'accommodation.areas.category.transferMetro': 'Metro amb transbord', + 'accommodation.areas.eixampleEsquerra.name': 'Eixample Esquerra', + 'accommodation.areas.eixampleEsquerra.desc': + "Costat esquerre de l'eixample, modernista i molt a prop de la UB a peu; bona opció si també fas servir Sants.", + 'accommodation.areas.elRaval.name': 'El Raval', + 'accommodation.areas.elRaval.desc': + 'Barri cèntric i multicultural, a poca distància a peu de la seu; l’Aerobús enllaça bé amb l’aeroport.', + 'accommodation.areas.santAntoni.name': 'Sant Antoni', + 'accommodation.areas.santAntoni.desc': + 'Mercat i terrasses, ambient de barri i una passejada còmoda fins a la universitat.', + 'accommodation.areas.ciutatVella.name': 'Ciutat Vella', + 'accommodation.areas.ciutatVella.desc': + 'Nucli històric (Gòtic, Born…): ambient únic i ubicacions a prop de l’esdeveniment.', + 'accommodation.areas.sants.name': 'Sants', + 'accommodation.areas.sants.desc': + 'Al costat de l’estació de Sants: ideal per trens de llarg recorregut i Rodalies cap a l’aeroport.', + 'accommodation.areas.poblenou22.name': 'Poblenou / 22@', + 'accommodation.areas.poblenou22.desc': + 'Districte 22@ i platja; ben connectat per metro en línia directa al centre i la UB.', + 'accommodation.areas.elClot.name': 'El Clot', + 'accommodation.areas.elClot.desc': + 'Barri consolidat amb bon accés en metro directe al centre on hi ha la seu.', + 'accommodation.areas.lesCorts.name': 'Les Corts', + 'accommodation.areas.lesCorts.desc': + 'A prop de la L9 Sud a l’aeroport; per arribar a la seu sol cal transbord en metro.', + 'accommodation.areas.eixampleDreta.name': 'Eixample Dreta', + 'accommodation.areas.eixampleDreta.desc': + 'Eixample dret: emblemàtic i ben comunicat, amb enllaços que sovint impliquen una correspondència.', + 'accommodation.areas.collblanc.name': 'Collblanc', + 'accommodation.areas.collblanc.desc': + 'L9 Sud a l’aeroport; per arribar a la UB normalment faràs transbord.', 'accommodation.apartments.title': 'Apartaments Turístics', 'accommodation.apartments.text': "Si prefereixes un apartament, assegura't que compti amb llicència turística oficial (HUTB). Barcelona és molt estricta amb la regulació d'allotjaments.", 'accommodation.apartments.link': "Veure guia d'allotjament segur a Barcelona", + 'accommodation.apartments.linkUrl': 'https://meet.barcelona.cat/habitatgesturistics/ca', + 'accommodation.a11y.constructionIcon': 'En construcció', + 'accommodation.a11y.linkOpensNewTab': "s'obre en una pestanya nova", } as const diff --git a/src/i18n/accommodation/en.ts b/src/i18n/accommodation/en.ts index 7baa419..f3bdea3 100644 --- a/src/i18n/accommodation/en.ts +++ b/src/i18n/accommodation/en.ts @@ -2,24 +2,55 @@ export const en = { 'accommodation.title': 'Accommodation', 'accommodation.hero.title': 'Where to stay', 'accommodation.hero.subtitle': 'Recommendations for your stay in Barcelona', - 'accommodation.intro': - 'Barcelona offers one of the largest hotel selections in Europe. For PyConES 2026, we recommend looking for accommodation in the Eixample district or Ciutat Vella to be within walking distance of the venue (UB Historic Building).', 'accommodation.hotels.title': 'Recommended Hotels', 'accommodation.hotels.subtitle': 'Agreements and nearby options', 'accommodation.hotels.disclaimer': 'We are working on exclusive discounts for attendees. Check back soon for promo codes!', 'accommodation.areas.title': 'Best Areas', - 'accommodation.areas.eixample.name': "L'Eixample", - 'accommodation.areas.eixample.desc': - 'The safest and most elegant area, with modernist architecture and very close to the venue.', - 'accommodation.areas.gothic.name': 'Gothic Quarter', - 'accommodation.areas.gothic.desc': - 'The historical center, with magical streets and vibrant nightlife, 10 min from UB.', - 'accommodation.areas.poblenou.name': 'Poblenou / 22@', - 'accommodation.areas.poblenou.desc': - 'The tech hub. Slightly further away but very well connected by metro (L1).', + 'accommodation.areas.transportIntro.p1': + 'If you are heading home by train, the best options are Sants, Eixample Esquerra, or Les Corts (for reaching Sants Estació).', + 'accommodation.areas.transportIntro.p2': + 'If you fly out, we suggest El Raval, Sant Antoni, Eixample Esquerra (Aerobús), Sants (Rodalies R2 to the airport), or Les Corts and Collblanc (L9 Sud). There is also a direct airport bus (Aerobús) stop in front of the venue.', + 'accommodation.areas.transportIntro.p3': + 'We will provide a luggage room, so if you leave on Sunday you can check out and leave your bags with us.', + 'accommodation.areas.category.walking': 'On foot', + 'accommodation.areas.category.directMetro': 'Direct metro', + 'accommodation.areas.category.transferMetro': 'Metro with a change', + 'accommodation.areas.eixampleEsquerra.name': 'Eixample Esquerra', + 'accommodation.areas.eixampleEsquerra.desc': + 'The left side of the Eixample: modernist and very close to UB on foot; a strong pick if you also use Sants.', + 'accommodation.areas.elRaval.name': 'El Raval', + 'accommodation.areas.elRaval.desc': + 'A central, multicultural area within walking distance of the venue; Aerobús links well to the airport.', + 'accommodation.areas.santAntoni.name': 'Sant Antoni', + 'accommodation.areas.santAntoni.desc': + 'Market halls and terraces, a lively neighbourhood feel, and an easy walk to the university.', + 'accommodation.areas.ciutatVella.name': 'Ciutat Vella', + 'accommodation.areas.ciutatVella.desc': + 'The old city (Gòtic, Born…): unique atmosphere and locations close to the event.', + 'accommodation.areas.sants.name': 'Sants', + 'accommodation.areas.sants.desc': + 'Next to Sants station: ideal for long-distance trains and Rodalies to the airport.', + 'accommodation.areas.poblenou22.name': 'Poblenou / 22@', + 'accommodation.areas.poblenou22.desc': + 'The 22@ district by the beach; direct metro lines to the centre and UB.', + 'accommodation.areas.elClot.name': 'El Clot', + 'accommodation.areas.elClot.desc': + 'An established neighbourhood with a direct metro ride to the city centre where the venue is.', + 'accommodation.areas.lesCorts.name': 'Les Corts', + 'accommodation.areas.lesCorts.desc': + 'Near L9 Sud to the airport; reaching the venue usually means one metro change.', + 'accommodation.areas.eixampleDreta.name': 'Eixample Dreta', + 'accommodation.areas.eixampleDreta.desc': + 'The right side of the Eixample: iconic and well connected, often with one interchange.', + 'accommodation.areas.collblanc.name': 'Collblanc', + 'accommodation.areas.collblanc.desc': + 'L9 Sud to the airport; you will typically change lines to get to UB.', 'accommodation.apartments.title': 'Tourist Apartments', 'accommodation.apartments.text': 'If you prefer an apartment, make sure it has an official tourist license (HUTB). Barcelona is very strict regarding accommodation regulations.', 'accommodation.apartments.link': 'View safe accommodation guide in Barcelona', + 'accommodation.apartments.linkUrl': 'https://meet.barcelona.cat/habitatgesturistics/en', + 'accommodation.a11y.constructionIcon': 'Under construction', + 'accommodation.a11y.linkOpensNewTab': 'opens in a new tab', } as const diff --git a/src/i18n/accommodation/es.ts b/src/i18n/accommodation/es.ts index e215478..18418e4 100644 --- a/src/i18n/accommodation/es.ts +++ b/src/i18n/accommodation/es.ts @@ -2,24 +2,55 @@ export const es = { 'accommodation.title': 'Alojamiento', 'accommodation.hero.title': 'Dónde alojarse', 'accommodation.hero.subtitle': 'Recomendaciones para tu estancia en Barcelona', - 'accommodation.intro': - "Barcelona es una de las ciudades con mayor oferta hotelera de Europa. Para la PyConES 2026, recomendamos buscar alojamiento en el distrito de l'Eixample o en Ciutat Vella para estar a pocos minutos a pie de la sede (UB Edifici Històric).", 'accommodation.hotels.title': 'Hoteles Recomendados', 'accommodation.hotels.subtitle': 'Convenios y opciones cercanas', 'accommodation.hotels.disclaimer': 'Estamos trabajando para cerrar convenios exclusivos con descuentos para los asistentes. ¡Vuelve pronto para ver los códigos promocionales!', 'accommodation.areas.title': 'Mejores Zonas', - 'accommodation.areas.eixample.name': "L'Eixample", - 'accommodation.areas.eixample.desc': - 'La zona más segura y elegante, con arquitectura modernista y a un paso de la sede.', - 'accommodation.areas.gothic.name': 'Barrio Gótico', - 'accommodation.areas.gothic.desc': - 'El centro histórico, con calles mágicas y mucha vida nocturna, a 10 min de la UB.', - 'accommodation.areas.poblenou.name': 'Poblenou / 22@', - 'accommodation.areas.poblenou.desc': - 'El hub tecnológico. Un poco más alejado pero muy bien conectado por metro (L1).', + 'accommodation.areas.transportIntro.p1': + 'Si tienes que volver a casa en tren, las mejores opciones son Sants, Eixample Esquerra o Les Corts (para ir a Sants Estació).', + 'accommodation.areas.transportIntro.p2': + 'Si vuelves en avión, te recomendamos los barrios de El Raval, Sant Antoni, Eixample Esquerra (Aerobús), Sants (tren Rodalies R2) o Les Corts y Collblanc (L9 Sud). No obstante hay una parada del autobús directo al aeropuerto (Aerobús) delante de la sede.', + 'accommodation.areas.transportIntro.p3': + 'Contaremos con servicio de consigna, por lo que si te vas el domingo, puedes hacer check-out y dejar tus maletas aquí.', + 'accommodation.areas.category.walking': 'A pie', + 'accommodation.areas.category.directMetro': 'Metro directo', + 'accommodation.areas.category.transferMetro': 'Metro con transbordo', + 'accommodation.areas.eixampleEsquerra.name': 'Eixample Esquerra', + 'accommodation.areas.eixampleEsquerra.desc': + 'Lado izquierdo del ensanche, modernista y muy cerca de la UB a pie; buena opción si también usas Sants.', + 'accommodation.areas.elRaval.name': 'El Raval', + 'accommodation.areas.elRaval.desc': + 'Barrio céntrico y multicultural, a poca distancia andando de la sede; el Aerobús enlaza bien con el aeropuerto.', + 'accommodation.areas.santAntoni.name': 'Sant Antoni', + 'accommodation.areas.santAntoni.desc': + 'Mercado y terrazas, ambiente de barrio y un paseo cómodo hasta la universidad.', + 'accommodation.areas.ciutatVella.name': 'Ciutat Vella', + 'accommodation.areas.ciutatVella.desc': + 'Casco histórico (Gòtic, Born…): ambiente único y ubicaciones cerca del evento.', + 'accommodation.areas.sants.name': 'Sants', + 'accommodation.areas.sants.desc': + 'Junto a la estación de Sants: ideal para trenes de largo recorrido y Rodalies hacia el aeropuerto.', + 'accommodation.areas.poblenou22.name': 'Poble Nou / 22@', + 'accommodation.areas.poblenou22.desc': + 'Distrito 22@ y playa; bien conectado por metro en línea directa al centro y la UB.', + 'accommodation.areas.elClot.name': 'El Clot', + 'accommodation.areas.elClot.desc': + 'Barrio consolidado con buen acceso en metro directo al centro donde está la sede.', + 'accommodation.areas.lesCorts.name': 'Les Corts', + 'accommodation.areas.lesCorts.desc': + 'Cerca de la L9 Sud al aeropuerto; para la sede suele requerir transbordo en metro.', + 'accommodation.areas.eixampleDreta.name': 'Eixample Dreta', + 'accommodation.areas.eixampleDreta.desc': + 'Eixample derecho: emblemático y bien comunicado, con enlaces que suelen implicar una correspondencia.', + 'accommodation.areas.collblanc.name': 'Collblanc', + 'accommodation.areas.collblanc.desc': + 'L9 Sud al aeropuerto; para llegar a la UB normalmente harás transbordo.', 'accommodation.apartments.title': 'Apartamentos Turísticos', 'accommodation.apartments.text': 'Si prefieres un apartamento, asegúrate de que cuente con licencia turística oficial (HUTB). Barcelona es muy estricta con la regulación de alojamientos.', 'accommodation.apartments.link': 'Ver guía de alojamiento seguro en Barcelona', + 'accommodation.apartments.linkUrl': 'https://meet.barcelona.cat/habitatgesturistics/es', + 'accommodation.a11y.constructionIcon': 'En construcción', + 'accommodation.a11y.linkOpensNewTab': 'se abre en una pestaña nueva', } as const