diff --git a/public/images/Barcelona/seuUB.jpg b/public/images/Barcelona/seuUB.jpg new file mode 100644 index 0000000..f2be3ae Binary files /dev/null and b/public/images/Barcelona/seuUB.jpg differ diff --git a/public/images/Barcelona/ub_map.png b/public/images/Barcelona/ub_map.png new file mode 100644 index 0000000..ab5fe3f Binary files /dev/null and b/public/images/Barcelona/ub_map.png differ diff --git a/src/components/AccommodationPage.astro b/src/components/AccommodationPage.astro new file mode 100644 index 0000000..f3dc022 --- /dev/null +++ b/src/components/AccommodationPage.astro @@ -0,0 +1,142 @@ +--- +import { accommodationTexts } from '../i18n/accommodation' + +interface Props { + lang: string +} + +const { lang } = Astro.props +const t = accommodationTexts[lang as keyof typeof accommodationTexts] +--- + +
+
+

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

+

+ {t['accommodation.hero.subtitle']} +

+
+ +
+

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

+
+ + +
+
+
+

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

+
+
+ +
+ +
+
+ +
+ 🏗️ +

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

+

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

+
+
+
+ + +
+

+ + {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']} + + +
+
+ 🏙️ +
+
+
+
+ + diff --git a/src/components/LocationPage.astro b/src/components/LocationPage.astro new file mode 100644 index 0000000..5a8e7c6 --- /dev/null +++ b/src/components/LocationPage.astro @@ -0,0 +1,337 @@ +--- +import { locationTexts } from '../i18n/location' + +interface Props { + lang: string +} + +const { lang } = Astro.props +const t = locationTexts[lang as keyof typeof locationTexts] + +const transportIcons = { + metro: 'M12 2L4.5 20.29L5.21 21L12 18L18.79 21L19.5 20.29L12 2Z', + train: + 'M12 2c-4 0-8 .5-8 4v9.5C4 17.43 5.57 19 7.5 19L6 20.5v.5h12v-.5L16.5 19c1.93 0 3.5-1.57 3.5-3.5V6c0-3.5-4-4-8-4zM7.5 17c-.83 0-1.5-.67-1.5-1.5S6.67 14 7.5 14s1.5.67 1.5 1.5S8.33 17 7.5 17zm9 0c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zM18 11H6V6h12v5z', + car: 'M18.92 6.01C18.72 5.42 18.16 5 17.5 5h-11c-.66 0-1.21.42-1.42.99L3 13v8c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-1h12v1c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-8l-2.08-6.99zM6.5 16c-.83 0-1.5-.67-1.5-1.5S5.67 13 6.5 13s1.5.67 1.5 1.5S7.33 16 6.5 16zm11 0c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zM5 11l1.5-4.5h11L19 11H5z', + bus: 'M4 16c0 .88.39 1.67 1 2.22V20c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-1h8v1c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-1.78c.61-.55 1-1.34 1-2.22V6c0-3.5-3.58-4-8-4s-8 .5-8 4v10zm3.5 1c-.83 0-1.5-.67-1.5-1.5S6.67 14 7.5 14s1.5.67 1.5 1.5S8.33 17 7.5 17zm9 0c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zM17 11H7V6h10v5z', +} +--- + +
+ +
+ {t['location.hero.title']} +
+
+

+ {t['location.hero.title']} +

+

+ {t['location.hero.subtitle']} +

+
+
+
+ + +
+
+
+

+ + {t['location.location.title']} +

+

+ {t['location.hero.text']} +

+
+ + + + + {t['location.location.text']} +
+
+ + +
+

+ + {t['location.rooms.title']} +

+
+
+
+

{t['location.rooms.paranimf.title']}

+ 400 PAX +
+

{t['location.rooms.paranimf.desc']}

+
+
+
+

{t['location.rooms.aulamagna.title']}

+ 160 PAX +
+

{t['location.rooms.aulamagna.desc']}

+
+
+
+

{t['location.rooms.teaching.title']}

+ 90-120 PAX +
+

{t['location.rooms.teaching.desc']}

+
+
+
+
+ + +
+
+

Google Maps

+

Gran Via de les Corts Catalanes, 585, 08007 Barcelona

+ + Ver en el mapa + +
+ +
+

+ + + + {t['location.spaces.title']} +

+
    +
  • + {t['location.spaces.gallery.title']} + {t['location.spaces.gallery.desc']} +
  • +
  • + {t['location.spaces.hall.title']} + {t['location.spaces.hall.desc']} +
  • +
  • + {t['location.spaces.cloister.title']} + {t['location.spaces.cloister.desc']} +
  • +
  • + {t['location.spaces.garden.title']} + {t['location.spaces.garden.desc']} +
  • +
+
+
+
+ + +
+
+ +
+
+ +

+ {t['location.city.title']} +

+ +
+
+

+ {t['location.city.intro']} +

+

+ {t['location.city.heritage']} +

+
+

+ {t['location.city.climate.title']} +

+

+ {t['location.city.climate.text']} +

+
+
+ +
+
+

+ + {t['location.city.tech.title']} +

+

+ {t['location.city.tech.text']} +

+
+ +
+

+ + {t['location.city.connections.title']} +

+

+ {t['location.city.connections.text']} +

+
+
+
+
+
+ + +
+

+ {t['location.transport.title']} +

+
+ +
+
+ +
+

{t['location.transport.metro.title']}

+

{t['location.transport.metro.items']}

+
+ +
+
+ +
+

{t['location.transport.renfe.title']}

+

{t['location.transport.renfe.items']}

+
+ +
+
+ +
+

{t['location.transport.long.title']}

+

{t['location.transport.long.items']}

+
+ +
+
+ +
+

{t['location.transport.car.title']}

+

{t['location.transport.car.desc']}

+
+
+
+
+ + diff --git a/src/i18n/accommodation/ca.ts b/src/i18n/accommodation/ca.ts new file mode 100644 index 0000000..22d95a7 --- /dev/null +++ b/src/i18n/accommodation/ca.ts @@ -0,0 +1,25 @@ +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.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", +} as const diff --git a/src/i18n/accommodation/en.ts b/src/i18n/accommodation/en.ts new file mode 100644 index 0000000..7baa419 --- /dev/null +++ b/src/i18n/accommodation/en.ts @@ -0,0 +1,25 @@ +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.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', +} as const diff --git a/src/i18n/accommodation/es.ts b/src/i18n/accommodation/es.ts new file mode 100644 index 0000000..e215478 --- /dev/null +++ b/src/i18n/accommodation/es.ts @@ -0,0 +1,25 @@ +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.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', +} as const diff --git a/src/i18n/accommodation/index.ts b/src/i18n/accommodation/index.ts new file mode 100644 index 0000000..93fc10f --- /dev/null +++ b/src/i18n/accommodation/index.ts @@ -0,0 +1,9 @@ +import { es } from './es' +import { en } from './en' +import { ca } from './ca' + +export const accommodationTexts = { + es, + en, + ca, +} as const diff --git a/src/i18n/location/ca.ts b/src/i18n/location/ca.ts new file mode 100644 index 0000000..4fd9f7b --- /dev/null +++ b/src/i18n/location/ca.ts @@ -0,0 +1,58 @@ +export const ca = { + 'location.title': 'Localització', + 'location.hero.title': 'Seu: Universitat de Barcelona', + 'location.hero.subtitle': 'Edifici Històric de la Gran Via', + 'location.hero.text': + "Després d'una recerca exhaustiva de possibles seus per a la PyConES 2026, vam concloure que la Universitat de Barcelona (UB) oferia un dels espais més emblemàtics de la ciutat. Com a universitat més gran i antiga de Catalunya, les seves instal·lacions històriques compleixen totes les necessitats del nostre esdeveniment.", + 'location.location.title': 'Ubicació', + 'location.location.text': + 'Situada al bell mig de Barcelona, al costat de la Plaça Universidat i la Plaça Catalunya.', + 'location.rooms.title': 'Sales i Espais', + 'location.rooms.paranimf.title': 'Paranimf', + 'location.rooms.paranimf.desc': + 'Sala on es reuneix el Claustre de la universitat, amb capacitat per a 400 persones i un projector de gran canó.', + 'location.rooms.aulamagna.title': 'Aula Magna', + 'location.rooms.aulamagna.desc': + 'Segona sala més gran, polivalent, per a 160 persones. Pot transmetre la xerrada del Paranimf.', + 'location.rooms.teaching.title': 'Aules Docents', + 'location.rooms.teaching.desc': + 'Almenys 4 sales recentment restaurades amb capacitat per a 90-120 persones, equipades amb projector.', + 'location.spaces.title': 'Espais Oberts', + 'location.spaces.gallery.title': 'Galeria del Paranimf', + 'location.spaces.gallery.desc': 'Ideal per a acreditacions i pòsters acadèmics (250 persones).', + 'location.spaces.hall.title': 'Vestíbul Principal', + 'location.spaces.hall.desc': + 'Espai impressionant per a la fira de sponsors i connexió amb el jardí (500 personas).', + 'location.spaces.cloister.title': 'Claustre de Matemàtiques', + 'location.spaces.cloister.desc': + 'Pati central amb balcons, ideal per al descans entre sessions (350 persones total).', + 'location.spaces.garden.title': 'Jardí Central', + 'location.spaces.garden.desc': 'Espai exterior per a caterings i esdeveniments socials (300 persones).', + 'location.transport.title': 'Com arribar-hi', + 'location.transport.metro.title': 'Metro i FGC', + 'location.transport.metro.items': + 'Universitat (L1, L2) - 1 min; Catalunya (L1, L3, L6, L7) - 10 min; Passeig de Gràcia (L2, L4) - 5 min', + 'location.transport.renfe.title': 'Renfe', + 'location.transport.renfe.items': + 'Catalunya (R1, R3, R4) - 10 min; Passeig de Gràcia (R2, R2 Sud, R2 Nord) - 15 min', + 'location.transport.long.title': 'Llarga Distància', + 'location.transport.long.items': + 'Aeroport El Prat (35 min Aerobús); Sants Estació (20 min Metro); Estació del Nord (10 min Metro)', + 'location.transport.car.title': 'Cotxe i Pàrquing', + 'location.transport.car.desc': + 'Es desaconsella el cotxe (sense pàrquing propi i dins de la ZBE). Pàrquings propers: Romara, Roma 4, Baldisa.', + 'location.city.title': 'Barcelona: Seu per a la PyConES 2026', + 'location.city.intro': + 'Barcelona s’alça com una elecció immillorable per allotjar la PyConES 2026, la ciutat fusiona el seu inconfusible encant cultural amb un dinamisme tecnològic d’avantguarda.', + 'location.city.heritage': + 'La seva rica herència cultural, plasmada en obres com la Sagrada Família o el Park Güell, crea un ambient que fomenta la creativitat. És un gresol d’idees on la innovació prospera naturalment.', + 'location.city.climate.title': 'L’escenari perfecte', + 'location.city.climate.text': + 'Barcelona garanteix allotjament per a tots els gustos amb més de 500 hotels i un clima ideal durant la tardor, amb temperatures entre 18-24 graus.', + 'location.city.tech.title': 'Centre tecnològic a Espanya', + 'location.city.tech.text': + 'El 22@Barcelona és la prova de com la ciutat ha transformat zones industrials en un epicentre de coneixement, situant-se al top 5 d’Europa en noves empreses tecnològiques.', + 'location.city.connections.title': 'Connexions i mobilitat', + 'location.city.connections.text': + 'Sants és un node clau de l’AVE, connectant amb Madrid en 2.5h. L’Aeroport del Prat i una xarxa de mobilitat sostenible completen una accessibilitat excepcional.', +} as const diff --git a/src/i18n/location/en.ts b/src/i18n/location/en.ts new file mode 100644 index 0000000..4a0914d --- /dev/null +++ b/src/i18n/location/en.ts @@ -0,0 +1,56 @@ +export const en = { + 'location.title': 'Location', + 'location.hero.title': 'Venue: University of Barcelona', + 'location.hero.subtitle': 'Historic Building at Gran Via', + 'location.hero.text': + "After an exhaustive search for possible venues for PyConES 2026, we concluded that the University of Barcelona (UB) offered one of the city's most iconic spaces. As Catalonia's largest and oldest university, its historic facilities meet all our event's needs.", + 'location.location.title': 'Location', + 'location.location.text': + 'Located in the heart of Barcelona, right by Plaza Universidad and Plaza Cataluña.', + 'location.rooms.title': 'Rooms and Spaces', + 'location.rooms.paranimf.title': 'Paranimf', + 'location.rooms.paranimf.desc': + 'The University Senate room, with a capacity of 400 people and a large-scale projector.', + 'location.rooms.aulamagna.title': 'Aula Magna', + 'location.rooms.aulamagna.desc': + 'The second largest room, multipurpose, for 160 people. It can stream talks from the Paranimf.', + 'location.rooms.teaching.title': 'Teaching Classrooms', + 'location.rooms.teaching.desc': + 'At least 4 recently restored rooms with capacity for 90-120 people, fully equipped.', + 'location.spaces.title': 'Open Spaces', + 'location.spaces.gallery.title': 'Paranimf Gallery', + 'location.spaces.gallery.desc': 'Perfect for registrations and academic posters (250 people).', + 'location.spaces.hall.title': 'Main Hall', + 'location.spaces.hall.desc': 'An impressive space for the sponsor fair and garden access (500 people).', + 'location.spaces.cloister.title': 'Mathematics Cloister', + 'location.spaces.cloister.desc': 'Central courtyard with balconies, ideal for breaks (350 people total).', + 'location.spaces.garden.title': 'Central Garden', + 'location.spaces.garden.desc': 'Outdoor space for catering and social events (300 people).', + 'location.transport.title': 'How to Get There', + 'location.transport.metro.title': 'Metro and FGC', + 'location.transport.metro.items': + 'Universitat (L1, L2) - 1 min; Catalunya (L1, L3, L6, L7) - 10 min; Passeig de Gràcia (L2, L4) - 5 min', + 'location.transport.renfe.title': 'Renfe', + 'location.transport.renfe.items': + 'Catalunya (R1, R3, R4) - 10 min; Passeig de Gràcia (R2, R2 Sud, R2 Nord) - 15 min', + 'location.transport.long.title': 'Long Distance', + 'location.transport.long.items': + 'El Prat Airport (35 min Aerobús); Sants Station (20 min Metro); Estació del Nord (10 min Metro)', + 'location.transport.car.title': 'Car and Parking', + 'location.transport.car.desc': + 'Car travel is discouraged (no private parking and within ZBE). Nearby parking: Romara, Roma 4, Baldisa.', + 'location.city.title': 'Barcelona: Host City for PyConES 2026', + 'location.city.intro': + 'Barcelona stands as an unbeatable choice for PyConES 2026, blending its unique cultural charm with cutting-edge technological dynamism and world-class infrastructure.', + 'location.city.heritage': + 'Its rich heritage, from Sagrada Familia to Park Güell, fosters creativity. Ranked among the top 25 global cities, it is a melting pot where innovation thrives naturally.', + 'location.city.climate.title': 'The Perfect Setting', + 'location.city.climate.text': + 'With over 500 hotels and a mild autumn climate (18-24°C), Barcelona ensures a comfortable stay for all attendees.', + 'location.city.tech.title': 'Spain’s Tech Hub', + 'location.city.tech.text': + 'The 22@Barcelona innovation district transforms industrial zones into a knowledge epicenter, placing the city in the European top 5 for tech startups.', + 'location.city.connections.title': 'Connections and Mobility', + 'location.city.connections.text': + 'Sants station connects to Madrid via high-speed AVE in 2.5h. El Prat Airport and extensive public transport offer seamless national and international access.', +} as const diff --git a/src/i18n/location/es.ts b/src/i18n/location/es.ts new file mode 100644 index 0000000..43b72a9 --- /dev/null +++ b/src/i18n/location/es.ts @@ -0,0 +1,58 @@ +export const es = { + 'location.title': 'Localización', + 'location.hero.title': 'Sede: Universidad de Barcelona', + 'location.hero.subtitle': 'Edificio Histórico de la Gran Vía', + 'location.hero.text': + 'Tras una búsqueda exhaustiva de posibles sedes para el evento de PyConES 2026, concluimos que la Universidad de Barcelona (UB) ofrecía uno de los espacios más emblemáticos de la ciudad. Siendo la UB la universidad más grande y antigua de Cataluña, las equipaciones de este edificio cumplen con todas las necesidades de nuestro evento.', + 'location.location.title': 'Ubicación', + 'location.location.text': + 'Situada en el mismísimo centro de Barcelona, junto a Plaza Universidad y Plaza Cataluña.', + 'location.rooms.title': 'Salas y Espacios', + 'location.rooms.paranimf.title': 'Paranimf', + 'location.rooms.paranimf.desc': + 'Sala donde se reúne el Claustro de la universidad, con capacidad para 400 personas y un proyector de gran cañón.', + 'location.rooms.aulamagna.title': 'Aula Magna', + 'location.rooms.aulamagna.desc': + 'Segunda sala más grande, polivalente, para 160 personas. Puede transmitir la charla del Paranimf.', + 'location.rooms.teaching.title': 'Aulas Docentes', + 'location.rooms.teaching.desc': + 'Al menos 4 salas recién restauradas con capacidad para 90-120 personas, equipadas con proyector.', + 'location.spaces.title': 'Espacios Abiertos', + 'location.spaces.gallery.title': 'Galería del Paranimf', + 'location.spaces.gallery.desc': 'Ideal para acreditaciones y pósters académicos (250 personas).', + 'location.spaces.hall.title': 'Vestíbulo Principal', + 'location.spaces.hall.desc': + 'Espacio impresionante para la feria de sponsors y conexión con el jardín (500 personas).', + 'location.spaces.cloister.title': 'Claustro de Matemáticas', + 'location.spaces.cloister.desc': + 'Patio central con balcones, ideal para el descanso entre sesiones (350 personas total).', + 'location.spaces.garden.title': 'Jardín Central', + 'location.spaces.garden.desc': 'Espacio exterior para caterings y eventos sociales (300 personas).', + 'location.transport.title': 'Cómo llegar', + 'location.transport.metro.title': 'Metro y FGC', + 'location.transport.metro.items': + 'Universitat (L1, L2) - 1 min; Catalunya (L1, L3, L6, L7) - 10 min; Passeig de Gràcia (L2, L4) - 5 min', + 'location.transport.renfe.title': 'Renfe', + 'location.transport.renfe.items': + 'Catalunya (R1, R3, R4) - 10 min; Passeig de Gràcia (R2, R2 Sud, R2 Nord) - 15 min', + 'location.transport.long.title': 'Larga Distancia', + 'location.transport.long.items': + 'Aeropuerto El Prat (35 min Aerobús); Sants Estació (20 min Metro); Estació del Nord (10 min Metro)', + 'location.transport.car.title': 'Coche y Parking', + 'location.transport.car.desc': + 'Se desaconseja el coche (sin parking propio y dentro de ZBE). Parkings cercanos: Romara, Roma 4, Baldisa.', + 'location.city.title': 'Barcelona: Sede para la PyConES 2026', + 'location.city.intro': + 'Barcelona se alza como una elección inmejorable para albergar la PyConES 2026, la ciudad fusiona su inconfundible encanto cultural con un dinamismo tecnológico de vanguardia. La ciudad posee una infraestructura de primer nivel que garantiza una experiencia memorable para todos.', + 'location.city.heritage': + 'Su rica herencia cultural, plasmada en maravillas como la Sagrada Familia, el Park Güell o la Casa Batlló, crea un ambiente que fomenta la creatividad. Clasificada entre las 25 ciudades más potentes del mundo, es un crisol donde la innovación prospera naturalmente.', + 'location.city.climate.title': 'El escenario perfecto', + 'location.city.climate.text': + 'Barcelona garantiza alojamiento para todos los gustos con más de 500 hoteles y un clima ideal durante otoño, con temperaturas entre 18-24 grados.', + 'location.city.tech.title': 'Centro tecnológico en España', + 'location.city.tech.text': + 'El 22@Barcelona es la prueba de cómo la ciudad ha transformado zonas industriales en un epicentro de conocimiento, situándose en el top 5 de Europa en número de nuevas empresas tecnológicas.', + 'location.city.connections.title': 'Conexiones y movilidad', + 'location.city.connections.text': + 'Sants es un nodo clave del AVE, conectando con Madrid en 2.5h. El Aeropuerto de El Prat y la Estació del Nord completan una red de acceso excepcional, apoyada internamente por una movilidad sostenible de vanguardia.', +} as const diff --git a/src/i18n/location/index.ts b/src/i18n/location/index.ts new file mode 100644 index 0000000..3811b89 --- /dev/null +++ b/src/i18n/location/index.ts @@ -0,0 +1,9 @@ +import { es } from './es' +import { en } from './en' +import { ca } from './ca' + +export const locationTexts = { + es, + en, + ca, +} as const diff --git a/src/i18n/menu/ca.ts b/src/i18n/menu/ca.ts index aed2123..30318d9 100644 --- a/src/i18n/menu/ca.ts +++ b/src/i18n/menu/ca.ts @@ -4,6 +4,14 @@ export const ca = { label: 'Inici', href: '/', }, + { + label: 'Seu', + href: '/location', + }, + { + label: 'On allotjar-se', + href: '/accommodation', + }, { label: 'Diversitat i Inclusió', children: [ diff --git a/src/i18n/menu/en.ts b/src/i18n/menu/en.ts index 1f2b058..20a9e40 100644 --- a/src/i18n/menu/en.ts +++ b/src/i18n/menu/en.ts @@ -5,13 +5,12 @@ export const en = { href: '/', }, { - label: 'The Conference', - children: [ - { - label: 'Venue', - href: '/location', - }, - ], + label: 'Venue', + href: '/location', + }, + { + label: 'Where to stay', + href: '/accommodation', }, { label: 'Diversity and Inclusion', diff --git a/src/i18n/menu/es.ts b/src/i18n/menu/es.ts index dd5101a..6a13fa1 100644 --- a/src/i18n/menu/es.ts +++ b/src/i18n/menu/es.ts @@ -5,13 +5,12 @@ export const es = { href: '/', }, { - label: 'La Conferencia', - children: [ - { - label: 'Sede', - href: '/location', - }, - ], + label: 'Sede', + href: '/location', + }, + { + label: 'Dónde alojarse', + href: '/accommodation', }, { label: 'Diversidad e Inclusión', diff --git a/src/pages/[lang]/accommodation.astro b/src/pages/[lang]/accommodation.astro new file mode 100644 index 0000000..e340b5f --- /dev/null +++ b/src/pages/[lang]/accommodation.astro @@ -0,0 +1,36 @@ +--- +import Layout from '../../layouts/Layout.astro' +import AccommodationPage from '../../components/AccommodationPage.astro' + +export function getStaticPaths() { + return [{ params: { lang: 'es' } }, { params: { lang: 'en' } }, { params: { lang: 'ca' } }] +} + +const { lang } = Astro.params + +const titles = { + es: 'Dónde alojarse | PyConES 2026', + en: 'Where to stay | PyConES 2026', + ca: 'On allotjar-se | PyConES 2026', +} + +const title = titles[(lang || 'es') as keyof typeof titles] +--- + + +
+
+ +
+
+
+ + diff --git a/src/pages/[lang]/location.astro b/src/pages/[lang]/location.astro new file mode 100644 index 0000000..00ba711 --- /dev/null +++ b/src/pages/[lang]/location.astro @@ -0,0 +1,34 @@ +--- +import Layout from '../../layouts/Layout.astro' +import LocationPage from '../../components/LocationPage.astro' + +export function getStaticPaths() { + return [{ params: { lang: 'es' } }, { params: { lang: 'en' } }, { params: { lang: 'ca' } }] +} + +const { lang } = Astro.params + +const titles = { + es: 'Localización | PyConES 2026', + en: 'Location | PyConES 2026', + ca: 'Localització | PyConES 2026', +} + +const title = titles[(lang || 'es') as keyof typeof titles] +--- + + +
+
+ +
+
+
+ +