diff --git a/frontend/src/app/locale.tsx b/frontend/src/app/locale.tsx index 86907c7..0f1d62d 100644 --- a/frontend/src/app/locale.tsx +++ b/frontend/src/app/locale.tsx @@ -1,57 +1,81 @@ -import { stringLocalization, elementLocalization } from "@/app/localization" +import { localization } from "@/app/localization" import { ReactElement } from 'react' const defaultLanguage: string = "es" +const elementTypeName: string = "element" +const stringTypeName: string = "string" interface LocalizedString { [key: string]: string } -export interface StringLocalization { - [key: string]: LocalizedString -} interface LocalizedElement { [key: string]: ReactElement } -export interface ElementLocalization { - [key: string]: LocalizedElement +interface LocalizedObjectPair { + string?: LocalizedString, + element?: LocalizedElement +} +export interface Localization { + [key: string]: LocalizedObjectPair +} +interface StringOrElement { + string?: string, + element?: ReactElement } -export const getLocalizedString = (identifier: string, language: string = defaultLanguage): string => { - // NOTE: MUST KEEP IN SYNC WITH getLocalizedElement - // ANY CHANGE MADE HERE MUST BE MADE THERE FOR CONSISTENCY - - // Return empty string if identifier not found - if (!(identifier in stringLocalization)) { - console.error(`Localized string identifier "${identifier}" not found`) - return "" +const getLocalizedStringOrElement = (type: string, identifier: string, language: string): StringOrElement => { + // Return empty if identifier not found + if (!(identifier in localization)) { + console.error(`Localization identifier "${identifier}" not found`) + return {} } - const localizedString = stringLocalization[identifier] + const localizedObjectPair = localization[identifier] - // Return localized if found, else default language if found, else empty - if (language in localizedString) return localizedString[language] - console.warn(`Localized string "${identifier}" in language "${language}" not found, using default language "${defaultLanguage}"`) - if (defaultLanguage in localizedString) return localizedString[defaultLanguage] - console.error(`Localized string "${identifier}" in default language "${defaultLanguage}" not found`) - return "" -} + // Return empty if type not found + if (!(type in localizedObjectPair)) { + console.error(`Localized ${type} "${identifier}" not found`) + return {} + } -export const getLocalizedElement = (identifier: string, language: string = defaultLanguage): ReactElement => { - // NOTE: MUST KEEP IN SYNC WITH getLocalizedString - // ANY CHANGE MADE HERE MUST BE MADE THERE FOR CONSISTENCY + const localizedObject = ( + type == stringTypeName ? + localizedObjectPair.string : + localizedObjectPair.element + ) ?? {} // line ƒor TS to stop whining, previous block ensures either exists - // Return empty element if identifier not found - if (!(identifier in elementLocalization)) { - console.error(`Localized element identifier "${identifier}" not found`) - return <> + if (!(language in localizedObject)) { + // Use default language if language not found + console.warn(`Localized ${type} "${identifier}" in language "${language}" not found, fetching default language "${defaultLanguage}"`) + language = defaultLanguage + } + if (!(language in localizedObject)) { + // Return empty if default language not found + console.error(`Localized ${type} "${identifier}" in default language "${language}" not found`) + return {} } - const localizedString = elementLocalization[identifier] + // Return in interface with both types for type safety + return { + string: ( + type == stringTypeName ? + (localizedObjectPair.string ?? {})[language] : + "" + ), + element: ( + type == elementTypeName ? + (localizedObjectPair.element ?? {})[language] : + <> + ) + } +} - // Return localized if found, else default language if found, else empty - if (language in localizedString) return localizedString[language] - console.warn(`Localized element "${identifier}" in language "${language}" not found, using default language "${defaultLanguage}"`) - if (defaultLanguage in localizedString) return localizedString[defaultLanguage] - console.error(`Localized element "${identifier}" in default language "${defaultLanguage}" not found`) - return <> +export const getLocalizedString = (identifier: string, language: string = defaultLanguage): string => { + let object = getLocalizedStringOrElement(stringTypeName, identifier, language) + return object.string ?? "" +} + +export const getLocalizedElement = (identifier: string, language: string = defaultLanguage): ReactElement => { + let object = getLocalizedStringOrElement(elementTypeName, identifier, language) + return object.element ?? <> } diff --git a/frontend/src/app/localization.tsx b/frontend/src/app/localization.tsx index 8af88f6..9df13d7 100644 --- a/frontend/src/app/localization.tsx +++ b/frontend/src/app/localization.tsx @@ -1,437 +1,561 @@ -import { StringLocalization, ElementLocalization } from '@/app/locale'; +import { Localization } from '@/app/locale'; -export const stringLocalization: StringLocalization = { - // example: { - // es: "ejemplo", - // en: "example" +export const localization: Localization = { + // example_string: { + // string: { + // es: "ejemplo", + // en: "example" + // } + // }, + // example_element: { + // element: { + // es: <>ejemplo, + // en: <>example + // } // } - - partners_github_wording: { - es: "Aprende sobre GitHub Copilot", - en: "Learn about GitHub Copilot" - }, - partners_emprendimiento_alt: { - es: "Emprendimiento TEC", - en: "Emprendimiento TEC (Entrepreneurship Institute)" - }, - partners_eic_alt: { - es: "Escuela de Ingeniería y Ciencias del Tecnológico de Monterrey", - en: "Tecnológico de Monterrey School of Engineering and Sciences" - }, - partners_gce_wording: { - es: "GitHub Student Developer Pack", - en: "GitHub Student Developer Pack" - }, - partners_blend_wording: { - es: "Explora las vacantes", - en: "Explore open positions" - }, - gallery_photo_alt: { - es: "Colección de fotografías de Guadalahacks 2024, personas programando y recibiendo premios", - en: "Guadalahacks 2024 pictures collage, people coding and receiving their awards" - }, - partnerLogo_defaultWording: { - es: "Enlace", - en: "Link" - } -} - -export const elementLocalization: ElementLocalization = { - // example: { - // es: <>ejemplo, - // en: <>example - // } - faq_title: { - es: <>FAQ, - en: <>FAQ + element: { + es: <>FAQ, + en: <>FAQ + } }, faq_q1: { - es: <>¿Qué es guadalahacks?, - en: <>What is guadalahacks? + element: + { + es: <>¿Qué es guadalahacks?, + en: <>What is guadalahacks? + } }, faq_q1_answer: { - es: <> - Únete a cientos de estudiantes de todo México para un fin de semana de construcción, aprendizaje y diversión. - Convive y conecta con la comunidad tech de México, desarrolla tu proyecto y pasa un fin de semana inolvidable. - Conoce Guadalajara y el Tecnológico de Monterrey, universidad líder en México y Latinoamérica. - , - en: <> - Join hundreds of students from all around Mexico for a weekend of building, learning and fun. - Get to know the tech community in Mexico, develop your project and have an unforgettable weekend. - Visit Guadalajara and Tecnológico de Monterrey, leading university in Mexico and Latin America. - + element: { + es: <> + Únete a cientos de estudiantes de todo México para un fin de semana de construcción, aprendizaje y diversión. + Convive y conecta con la comunidad tech de México, desarrolla tu proyecto y pasa un fin de semana inolvidable. + Conoce Guadalajara y el Tecnológico de Monterrey, universidad líder en México y Latinoamérica. + , + en: <> + Join hundreds of students from all around Mexico for a weekend of building, learning and fun. + Get to know the tech community in Mexico, develop your project and have an unforgettable weekend. + Visit Guadalajara and Tecnológico de Monterrey, leading university in Mexico and Latin America. + + } }, faq_q2: { - es: <>¿Quiénes son bienvenidxs?, - en: <>Who can apply? + element: { + es: <>¿Quiénes son bienvenidxs?, + en: <>Who can apply? + } }, faq_q2_answer: { - es: <> - Puedes formar parte del evento si eres estudiante o exatec, con menos de un año de haber egresado, - de cualquier campus del Tecnológico de Monterrey, no importa tu carrera ni nivel de experiencia o de estudios. - Somos un evento inclusivo y diverso, y fomentamos un espacio seguro para todxs. - , - en: <> - You can join us if you're a student or alum who graduated less than one year ago - from any Tecnológico de Monterrey campus, regardless of your major, experience or previous studies. - We're an inclusive and diverse event, and we aim to foster a safe space for everyone. - + element: { + es: <> + Puedes formar parte del evento si eres estudiante o exatec, con menos de un año de haber egresado, + de cualquier campus del Tecnológico de Monterrey, no importa tu carrera ni nivel de experiencia o de estudios. + Somos un evento inclusivo y diverso, y fomentamos un espacio seguro para todxs. + , + en: <> + You can join us if you're a student or alum who graduated less than one year ago + from any Tecnológico de Monterrey campus, regardless of your major, experience or previous studies. + We're an inclusive and diverse event, and we aim to foster a safe space for everyone. + + } }, faq_q3: { - es: <>¿Cuánto cuesta?, - en: <>What are the fees to enter? + element: { + es: <>¿Cuánto cuesta?, + en: <>What are the fees to enter? + } }, faq_q3_answer: { - es: <> - La participación no tiene costo alguno. - Habrá comida gratis durante todo el evento, así como premios para los mejores proyectos. - ¡No te lo puedes perder! - , - en: <> - Participation is free of charge. - We will have free meals throughout the weekned, as well as prizes for the best projects. - You won't want to miss it! - + element: { + es: <> + La participación no tiene costo alguno. + Habrá comida gratis durante todo el evento, así como premios para los mejores proyectos. + ¡No te lo puedes perder! + , + en: <> + Participation is free of charge. + We will have free meals throughout the weekned, as well as prizes for the best projects. + You won't want to miss it! + + } }, faq_q4: { - es: <>¿Qué necesito llevar?, - en: <>What do I need to bring? + element: { + es: <>¿Qué necesito llevar?, + en: <>What do I need to bring? + } }, faq_q4_answer: { - es: <>Trae tu computadora, cargador, cepillo de dientes, ropa cómoda y muchas ganas de aprender y divertirte., - en: <>Take your laptop, charger, toothbrush, comfortable clothes, and be ready to learn and have fun. + element: { + es: <>Trae tu computadora, cargador, cepillo de dientes, ropa cómoda y muchas ganas de aprender y divertirte., + en: <>Take your laptop, charger, toothbrush, comfortable clothes, and be ready to learn and have fun. + } }, faq_q5: { - es: <>¿Cuántas personas deben conformar un equipo?, - en: <>How many people can join my team? + element: { + es: <>¿Cuántas personas deben conformar un equipo?, + en: <>How many people can join my team? + } }, faq_q5_answer: { - es: <> - Los equipos deben estar conformados por un máximo de 4 personas. - Se recomiendan equipos de 2 a 4 integrantes, pero está permitido participar individualmente. - Todxs lxs integrantes deben registrarse individualmente. - Registrarán su equipo durante el evento. - , - en: <> - Teams must be 4 people maximum. - We suggest 2 to 4 members, but anyone who wants to participate individually is allowed to. - All team members have to submit their application. - Team registration will happen during the event. - + element: { + es: <> + Los equipos deben estar conformados por un máximo de 4 personas. + Se recomiendan equipos de 2 a 4 integrantes, pero está permitido participar individualmente. + Todxs lxs integrantes deben registrarse individualmente. + Registrarán su equipo durante el evento. + , + en: <> + Teams must be 4 people maximum. + We suggest 2 to 4 members, but anyone who wants to participate individually is allowed to. + All team members have to submit their application. + Team registration will happen during the event. + + } }, faq_q6: { - es: <>¿Qué clase de proyecto debería desarrollar?, - en: <>What kind of projects am I expected to build? + element: { + es: <>¿Qué clase de proyecto debería desarrollar?, + en: <>What kind of projects am I expected to build? + } }, faq_q6_answer: { - es: <> - Los retos serán liberados durante el evento. - No está permitido trabajar en proyectos que ya hayan sido desarrollados previamente. - , - en: <> - Challenge tracks will be revealed during the event. - Working on previously developed projects is not allowed. - + element: { + es: <> + Los retos serán liberados durante el evento. + No está permitido trabajar en proyectos que ya hayan sido desarrollados previamente. + , + en: <> + Challenge tracks will be revealed during the event. + Working on previously developed projects is not allowed. + + } }, faq_more: { - es: <>Más información próximamente., - en: <>More information available soon. + element: { + es: <>Más información próximamente., + en: <>More information available soon. + } }, landing_title: { - es: <>guadalahacks, - en: <>guadalahacks + element: { + es: <>guadalahacks, + en: <>guadalahacks + } }, landing_seeYouSoon: { - es: <>¡Nos vemos en 2025!, - en: <>See you in 2025! + element: { + es: <>¡Nos vemos en 2025!, + en: <>See you in 2025! + } }, landing_thankYou: { - es: <>Muchas gracias por acomapañarnos., - en: <>Thank you for coming. + element: { + es: <>Muchas gracias por acomapañarnos., + en: <>Thank you for coming. + } }, landing_teamsComingSoon: { - es: <>Pronto podrás conocer a los equipos detrás de los asombrosos proyectos., - en: <>Soon you'll be able to meet the teams behind these amazing projects. + element: { + es: <>Pronto podrás conocer a los equipos detrás de los asombrosos proyectos., + en: <>Soon you'll be able to meet the teams behind these amazing projects. + } }, landing_seeProjects: { - es: <>Conoce los proyectos, - en: <>See all the projects + element: { + es: <>Conoce los proyectos, + en: <>See all the projects + } }, partners_title: { - es: <>Partners, - en: <>Partners + element: { + es: <>Partners, + en: <>Partners + } + }, + partners_github_wording: { + string: { + es: "Aprende sobre GitHub Copilot", + en: "Learn about GitHub Copilot" + } + }, + partners_emprendimiento_alt: { + string: { + es: "Emprendimiento TEC", + en: "Emprendimiento TEC (Entrepreneurship Institute)" + } + }, + partners_eic_alt: { + string: { + es: "Escuela de Ingeniería y Ciencias del Tecnológico de Monterrey", + en: "Tecnológico de Monterrey School of Engineering and Sciences" + } + }, + partners_gce_wording: { + string: { + es: "GitHub Student Developer Pack", + en: "GitHub Student Developer Pack" + } + }, + partners_blend_wording: { + string: { + es: "Explora las vacantes", + en: "Explore open positions" + } }, schedule_title: { - es: <>Agenda, - en: <>Schedule + element: { + es: <>Agenda, + en: <>Schedule + } }, schedule_table_date: { - es: <>Fecha, - en: <>Date + element: { + es: <>Fecha, + en: <>Date + } }, schedule_table_date_0518: { - es: <>18 de mayo, - en: <>May 18 + element: { + es: <>18 de mayo, + en: <>May 18 + } }, schedule_table_date_0519: { - es: <>19 de mayo, - en: <>May 19 + element: { + es: <>19 de mayo, + en: <>May 19 + } }, schedule_table_time: { - es: <>Hora, - en: <>Time + element: { + es: <>Hora, + en: <>Time + } }, schedule_table_time_tbd: { - es: <>Por anunciar, - en: <>To be anounced + element: { + es: <>Por anunciar, + en: <>To be anounced + } }, schedule_table_event: { - es: <>Evento, - en: <>Event + element: { + es: <>Evento, + en: <>Event + } }, schedule_table_event_registration: { - es: <>Registro, - en: <>Registration + element: { + es: <>Registro, + en: <>Registration + } }, schedule_table_event_inauguration: { - es: <>Inauguración, - en: <>Inauguration + element: { + es: <>Inauguración, + en: <>Inauguration + } }, schedule_table_event_lunch: { - es: <>Comida, - en: <>Lunch + element: { + es: <>Comida, + en: <>Lunch + } }, schedule_table_event_dinner: { - es: <>Cena, - en: <>Dinner + element: { + es: <>Cena, + en: <>Dinner + } }, schedule_table_event_breakfast: { - es: <>Desayuno, - en: <>Breakfast + element: { + es: <>Desayuno, + en: <>Breakfast + } }, schedule_table_event_deadline: { - es: <>Cierre de envíos, - en: <>Submissions close + element: { + es: <>Cierre de envíos, + en: <>Submissions close + } }, schedule_table_event_closure: { - es: <>Cierre, - en: <>Closing ceremony + element: { + es: <>Cierre, + en: <>Closing ceremony + } }, schedule_table_location: { - es: <>Lugar, - en: <>Location + element: { + es: <>Lugar, + en: <>Location + } }, schedule_table_location_tecSalud: { - es: <>Auditorio TecSalud, - en: <>Auditorio TecSalud + element: { + es: <>Auditorio TecSalud, + en: <>Auditorio TecSalud + } }, schedule_table_location_negocios: { - es: <>Hábitat de Negocios, - en: <>Hábitat de Negocios (Business Ecosystem Building) + element: { + es: <>Hábitat de Negocios, + en: <>Hábitat de Negocios (Business Ecosystem Building) + } }, contact_title: { - es: <>Contáctanos, - en: <>Contact Us + element: { + es: <>Contáctanos, + en: <>Contact Us + } }, contact_contactUs: { - es: <>Escríbenos a hola@guadalahacks.com, - en: <>Shoot us an email at hola@guadalahacks.com + element: { + es: <>Escríbenos a hola@guadalahacks.com, + en: <>Shoot us an email at hola@guadalahacks.com + } }, contact_addressHeader: { - es: <>Dirección del evento, - en: <>Venue Address + element: { + es: <>Dirección del evento, + en: <>Venue Address + } }, footer_contactUs: { - es: <>Conecta, - en: <>Reach out to us + element: { + es: <>Conecta, + en: <>Reach out to us + } }, footer_contactUs_email: { - es: <>Correo electrónico, - en: <>Email + element: { + es: <>Correo electrónico, + en: <>Email + } }, footer_resources: { - es: <>Recursos, - en: <>Resources + element: { + es: <>Recursos, + en: <>Resources + } }, footer_resources_cc: { - es: <>Código de conducta, - en: <>Code of conduct + element: { + es: <>Código de conducta, + en: <>Code of conduct + } }, footer_resources_joinAsStaff: { - es: <>Forma parte del staff, - en: <>Join our staff + element: { + es: <>Forma parte del staff, + en: <>Join our staff + } }, footer_resources_joinAsMentor: { - es: <>Conviértete en mentor, - en: <>Become a mentor + element: { + es: <>Conviértete en mentor, + en: <>Become a mentor + } }, footer_resources_joinAsSponsor: { - es: <>Apóyanos como patrocinador, - en: <>Support us as a sponsor + element: { + es: <>Apóyanos como patrocinador, + en: <>Support us as a sponsor + } }, footer_footnote_madeWith: { - es: <>Creado con , - en: <>Made with + element: { + es: <>Creado con , + en: <>Made with + } }, footer_footnote_copyright: { - es: <>© 2024 guadalahacks. Todos los derechos reservados., - en: <>© 2024 guadalahacks. All rights reserved. + element: { + es: <>© 2024 guadalahacks. Todos los derechos reservados., + en: <>© 2024 guadalahacks. All rights reserved. + } }, navbar_title: { - es: <>guadalahacks, - en: <>guadalahacks + element: { + es: <>guadalahacks, + en: <>guadalahacks + } }, navbar_home: { - es: <>Inicio, - en: <>Home + element: { + es: <>Inicio, + en: <>Home + } }, navbar_contact: { - es: <>Contacto, - en: <>Contact + element: { + es: <>Contacto, + en: <>Contact + } }, navbar_partners: { - es: <>Partners, - en: <>Partners + element: { + es: <>Partners, + en: <>Partners + } }, navbar_faq: { - es: <>FAQ, - en: <>FAQ + element: { + es: <>FAQ, + en: <>FAQ + } }, cdc: { - es: <> -

Código de conducta de guadalahacks

-

Nuestro compromiso

-

- El objetivo de guadalahacks es fomentar la innovación y - la creación de soluciones tecnológicas en un espacio de construcción, - colaboración y aprendizaje. - Estamos comprometidxs a proporcionar un ambiente amigable, seguro - y acogedor para todxs, para todo género, orientación sexual, - discapacidad, etnia, religión, o cualquier otra categoría de diversidad. - Este código de conducta especifica los lineamientos de comportamiento - de los participantes, así como las consecuencias de un comportamiento inaceptable. -

-

Comportamiento esperado

- -

Comportamiento inaceptable

- -

Consecuencias de un comportamiento inaceptable

-

- Lxs organizadores del guadalahacks tienen el derecho y la responsabilidad - de sancionar o expulsar temporal o permanentemente a cualquier participante por - cualquier comportamiento que consideren inapropiado, amenazante, ofensivo o dañino. -

-

Si eres testigo o eres víctima de un comportamiento inaceptable

-

- Si eres víctima o testigo de un comportamiento inaceptable, o tienes alguna otra inquietud, - por favor comunícate con un miembro del equipo de guadalahacks lo antes posible - o escríbenos a - incidentes@guadalahacks.com - . -

-

Respeto al entorno

-

- Recordamos a los participantes que deben respetar las instalaciones y su entorno, - así como cualquier equipo y recurso proporcionado como parte del hackatón. -

-

Contacto

-

- Para reportar problemas relacionados con el código de conducta, comunícate con - un miembro del equipo de guadalahacks o escríbenos a - - incidentes@guadalahacks.com - . -

-

- Apreciamos tu colaboración en hacer de este guadalahacks un lugar amigable y - acogedor para todxs lxs participantes. -

- , - en: <> -

The guadalahacks Code of Conduct

-

Our commitments

-

- The goal of guadalahacks is to foster innovation and the creation of - tech solutions in a space where we can build, contribute and learn. - We're committed to provide a safe, welcoming environment for everyone, regardless - of gender, sexual orientation, disability, ethnical background, religion, or any - other diversity category. This code of conduct outlines the behavior guidelines - for all attendands and staff members, as well as the consequences of breaking it. -

-

Expected behavior

- -

Unacceptable behavior

- -

Consequences of unnacceptable behavior

-

- The organizers of guadalahacks have the right and responsibility to sanction - or expel any participant temporarily or permanently for any behavior they consider - inappropriate, threatening, offensive or harmful. -

-

Reporting unacceptable behavior

-

- If you're witness or victim of any unacceptable behavior, or you have any other concert, - please reach out to a member of the guadalahacks staff as soon as possible - or write us an email at - incidents@guadalahacks.com - . -

-

Take care of the facilities and resources

-

- We remind participants to respect the facilities and their surroundings, - as well as any equipment and resources provided as part of the hackathon. -

-

Contact

-

- To report any issues related to the code of conduct, please reach out to a member of the guadalahacks staff as soon as possible - or write us an email at - incidents@guadalahacks.com - . -

-

- We appreciate your effort to make guadalahacks a friendly and welcoming space for everyone. -

- + element: { + es: <> +

Código de conducta de guadalahacks

+

Nuestro compromiso

+

+ El objetivo de guadalahacks es fomentar la innovación y + la creación de soluciones tecnológicas en un espacio de construcción, + colaboración y aprendizaje. + Estamos comprometidxs a proporcionar un ambiente amigable, seguro + y acogedor para todxs, para todo género, orientación sexual, + discapacidad, etnia, religión, o cualquier otra categoría de diversidad. + Este código de conducta especifica los lineamientos de comportamiento + de los participantes, así como las consecuencias de un comportamiento inaceptable. +

+

Comportamiento esperado

+ +

Comportamiento inaceptable

+ +

Consecuencias de un comportamiento inaceptable

+

+ Lxs organizadores del guadalahacks tienen el derecho y la responsabilidad + de sancionar o expulsar temporal o permanentemente a cualquier participante por + cualquier comportamiento que consideren inapropiado, amenazante, ofensivo o dañino. +

+

Si eres testigo o eres víctima de un comportamiento inaceptable

+

+ Si eres víctima o testigo de un comportamiento inaceptable, o tienes alguna otra inquietud, + por favor comunícate con un miembro del equipo de guadalahacks lo antes posible + o escríbenos a + incidentes@guadalahacks.com + . +

+

Respeto al entorno

+

+ Recordamos a los participantes que deben respetar las instalaciones y su entorno, + así como cualquier equipo y recurso proporcionado como parte del hackatón. +

+

Contacto

+

+ Para reportar problemas relacionados con el código de conducta, comunícate con + un miembro del equipo de guadalahacks o escríbenos a + + incidentes@guadalahacks.com + . +

+

+ Apreciamos tu colaboración en hacer de este guadalahacks un lugar amigable y + acogedor para todxs lxs participantes. +

+ , + en: <> +

The guadalahacks Code of Conduct

+

Our commitments

+

+ The goal of guadalahacks is to foster innovation and the creation of + tech solutions in a space where we can build, contribute and learn. + We're committed to provide a safe, welcoming environment for everyone, regardless + of gender, sexual orientation, disability, ethnical background, religion, or any + other diversity category. This code of conduct outlines the behavior guidelines + for all attendands and staff members, as well as the consequences of breaking it. +

+

Expected behavior

+ +

Unacceptable behavior

+ +

Consequences of unnacceptable behavior

+

+ The organizers of guadalahacks have the right and responsibility to sanction + or expel any participant temporarily or permanently for any behavior they consider + inappropriate, threatening, offensive or harmful. +

+

Reporting unacceptable behavior

+

+ If you're witness or victim of any unacceptable behavior, or you have any other concert, + please reach out to a member of the guadalahacks staff as soon as possible + or write us an email at + incidents@guadalahacks.com + . +

+

Take care of the facilities and resources

+

+ We remind participants to respect the facilities and their surroundings, + as well as any equipment and resources provided as part of the hackathon. +

+

Contact

+

+ To report any issues related to the code of conduct, please reach out to a member of the guadalahacks staff as soon as possible + or write us an email at + incidents@guadalahacks.com + . +

+

+ We appreciate your effort to make guadalahacks a friendly and welcoming space for everyone. +

+ + } + }, + gallery_photo_alt: { + string: { + es: "Colección de fotografías de Guadalahacks 2024, personas programando y recibiendo premios", + en: "Guadalahacks 2024 pictures collage, people coding and receiving their awards" + } + }, + partnerLogo_defaultWording: { + string: { + es: "Enlace", + en: "Link" + } } -} \ No newline at end of file +}