initial commit
Build & Deployment / Build & Deploy (push) Failing after 5s

This commit is contained in:
Raul Lugo
2026-08-10 17:55:26 +02:00
parent 6429ed3fa3
commit 4ced446c9c
74 changed files with 9242 additions and 30 deletions
+80
View File
@@ -0,0 +1,80 @@
export const de = {
invalid: {
title: "Einladung nicht gefunden",
description: "Wir konnten diese Einladung nicht finden. Bitte prüfe den Link oder kontaktiere uns.",
},
hero: {
eyebrow: "Hochzeitseinladung",
title: "Wir freuen uns sehr, mit dir zu feiern",
greeting: "Hallo, {name}!",
description:
"Bitte bestätige, wer kommen wird, und teile ein paar Reisedetails, damit wir alles gut planen können.",
},
deadline: {
open: "Du kannst diese Antwort bis zum {date} bearbeiten.",
closed: "Die RSVP-Frist ist abgelaufen. Deine Antworten sind jetzt schreibgeschützt.",
},
sections: {
wedding: "Hochzeitsdetails",
rsvp: "RSVP",
travel: "Reisedetails",
interactions: "Mach es persönlich",
},
wedding: {
dateLabel: "Datum",
dateValue: "Das Hochzeitsdatum wird bald ergänzt",
locationLabel: "Ort",
locationValue: "Details zum Veranstaltungsort folgen bald",
accommodationLabel: "Unterkunft",
accommodationValue: "Empfehlungen für Unterkünfte in der Nähe werden später ergänzt.",
},
form: {
attending: "Nimmt teil?",
yes: "Ja",
no: "Nein",
mealPreference: "Essenswunsch",
mealPlaceholder: "Essen auswählen",
dietaryRestrictions: "Ernährungseinschränkungen",
noRestrictions: "Keine Einschränkungen",
arrivalDate: "Anreisedatum",
departureDate: "Abreisedatum",
stayLocation: "Wo übernachtest du?",
needsTransportHelp: "Brauchst du Hilfe beim Transport?",
messageToCouple: "Nachricht an das Paar",
submit: "RSVP speichern",
submitted: "Danke — deine RSVP wurde gespeichert.",
},
meals: {
meat: "Fleisch",
fish: "Fisch",
vegetarian: "Vegetarisch",
vegan: "Vegan",
kids: "Kindermenü",
other: "Andere",
},
errors: {
generic: "Bitte prüfe das Formular und versuche es erneut.",
closed: "Die RSVP-Frist ist abgelaufen.",
},
interactions: {
intro: "Diese Frage ist optional und hilft uns, den Ablauf der Feier zu planen.",
toastTitle: "Toast oder Rede",
toastDescription: "Möchte jemand aus deiner Gruppe ein paar Worte sagen? Das ist optional und wird von uns geplant.",
wantsToast: "Jemand möchte sprechen",
speakerName: "Name der sprechenden Person",
estimatedMinutes: "Ungefähre Minuten",
},
upload: {
title: "Foto für die Hochzeitsüberraschung",
description: "Lade ein Foto von dir oder deiner Gruppe für eine Hochzeitsaktivität hoch. Du kannst es bis zur Frist ersetzen.",
current: "Aktuell hochgeladenes Foto: {filename}",
choose: "Bild auswählen",
upload: "Foto hochladen",
replace: "Foto ersetzen",
uploading: "Wird hochgeladen...",
success: "Foto erfolgreich hochgeladen.",
error: "Das Foto konnte nicht hochgeladen werden. Bitte versuche es erneut.",
disabled: "Foto-Uploads sind geschlossen, da die RSVP-Frist abgelaufen ist.",
requirements: "JPG, PNG oder WebP. Maximal 10 MB.",
},
} as const
+80
View File
@@ -0,0 +1,80 @@
export const en = {
invalid: {
title: "Invitation not found",
description: "We could not find this invitation. Please check the link or contact us.",
},
hero: {
eyebrow: "Wedding invitation",
title: "We cannot wait to celebrate with you",
greeting: "Hello, {name}!",
description:
"Please confirm who will attend and share a few travel details so we can plan everything with care.",
},
deadline: {
open: "You can edit this response until {date}.",
closed: "The RSVP deadline has passed. Your answers are now read-only.",
},
sections: {
wedding: "Wedding details",
rsvp: "RSVP",
travel: "Travel details",
interactions: "Make it personal",
},
wedding: {
dateLabel: "Date",
dateValue: "Wedding date coming soon",
locationLabel: "Location",
locationValue: "Venue details coming soon",
accommodationLabel: "Accommodation",
accommodationValue: "Nearby stay recommendations will be added later.",
},
form: {
attending: "Attending?",
yes: "Yes",
no: "No",
mealPreference: "Meal preference",
mealPlaceholder: "Select a meal",
dietaryRestrictions: "Dietary restrictions",
noRestrictions: "No restrictions",
arrivalDate: "Arrival date",
departureDate: "Departure date",
stayLocation: "Where are you staying?",
needsTransportHelp: "Do you need transportation help?",
messageToCouple: "Message to the couple",
submit: "Save RSVP",
submitted: "Thank you — your RSVP was saved.",
},
meals: {
meat: "Meat",
fish: "Fish",
vegetarian: "Vegetarian",
vegan: "Vegan",
kids: "Kids menu",
other: "Other",
},
errors: {
generic: "Please check the RSVP form and try again.",
closed: "The RSVP deadline has passed.",
},
interactions: {
intro: "This question is optional and helps us plan the celebration schedule.",
toastTitle: "Toast or speech",
toastDescription: "Would someone in your group like to say a few words? This is optional and will be scheduled by us.",
wantsToast: "Someone would like to speak",
speakerName: "Speaker name",
estimatedMinutes: "Estimated minutes",
},
upload: {
title: "Wedding surprise photo",
description: "Upload one photo of yourself or your group for a wedding activity. You can replace it until the deadline.",
current: "Current photo uploaded: {filename}",
choose: "Choose image",
upload: "Upload photo",
replace: "Replace photo",
uploading: "Uploading...",
success: "Photo uploaded successfully.",
error: "We could not upload the photo. Please try again.",
disabled: "Photo uploads are closed because the RSVP deadline has passed.",
requirements: "JPG, PNG, or WebP. Maximum 10 MB.",
},
} as const
+80
View File
@@ -0,0 +1,80 @@
export const es = {
invalid: {
title: "Invitación no encontrada",
description: "No pudimos encontrar esta invitación. Revisa el enlace o contáctanos.",
},
hero: {
eyebrow: "Invitación de boda",
title: "Nos emociona mucho celebrar contigo",
greeting: "¡Hola, {name}!",
description:
"Confirma quién asistirá y comparte algunos detalles del viaje para que podamos planificar todo con cariño.",
},
deadline: {
open: "Puedes editar esta respuesta hasta el {date}.",
closed: "La fecha límite para confirmar asistencia ya pasó. Tus respuestas están en modo lectura.",
},
sections: {
wedding: "Detalles de la boda",
rsvp: "Confirmación",
travel: "Detalles del viaje",
interactions: "Hazlo personal",
},
wedding: {
dateLabel: "Fecha",
dateValue: "La fecha de la boda se agregará pronto",
locationLabel: "Lugar",
locationValue: "Los detalles del lugar se agregarán pronto",
accommodationLabel: "Alojamiento",
accommodationValue: "Pronto agregaremos recomendaciones para quedarse cerca.",
},
form: {
attending: "¿Asiste?",
yes: "Sí",
no: "No",
mealPreference: "Preferencia de comida",
mealPlaceholder: "Selecciona una opción",
dietaryRestrictions: "Restricciones alimentarias",
noRestrictions: "Sin restricciones",
arrivalDate: "Fecha de llegada",
departureDate: "Fecha de salida",
stayLocation: "¿Dónde te hospedarás?",
needsTransportHelp: "¿Necesitas ayuda con transporte?",
messageToCouple: "Mensaje para la pareja",
submit: "Guardar confirmación",
submitted: "Gracias — guardamos tu confirmación.",
},
meals: {
meat: "Carne",
fish: "Pescado",
vegetarian: "Vegetariano",
vegan: "Vegano",
kids: "Menú infantil",
other: "Otro",
},
errors: {
generic: "Revisa el formulario e inténtalo de nuevo.",
closed: "La fecha límite para confirmar asistencia ya pasó.",
},
interactions: {
intro: "Esta pregunta es opcional y nos ayuda a organizar el horario de la celebración.",
toastTitle: "Brindis o discurso",
toastDescription: "¿Alguien de tu grupo quiere decir unas palabras? Es opcional y nosotros lo organizaremos.",
wantsToast: "Alguien quiere hablar",
speakerName: "Nombre de la persona",
estimatedMinutes: "Minutos aproximados",
},
upload: {
title: "Foto para la sorpresa de la boda",
description: "Sube una foto tuya o de tu grupo para una actividad de la boda. Puedes reemplazarla hasta la fecha límite.",
current: "Foto actual subida: {filename}",
choose: "Elegir imagen",
upload: "Subir foto",
replace: "Reemplazar foto",
uploading: "Subiendo...",
success: "Foto subida correctamente.",
error: "No pudimos subir la foto. Inténtalo de nuevo.",
disabled: "La subida de fotos está cerrada porque ya pasó la fecha límite.",
requirements: "JPG, PNG o WebP. Máximo 10 MB.",
},
} as const
+11
View File
@@ -0,0 +1,11 @@
import { de } from "./de"
import { en } from "./en"
import { es } from "./es"
export const dictionaries = {
en,
es,
de,
} as const
export type GuestDictionary = typeof en