diff --git a/apps/mana/apps/web/src/lib/i18n/locales/events/de.json b/apps/mana/apps/web/src/lib/i18n/locales/events/de.json
new file mode 100644
index 000000000..2eace4aae
--- /dev/null
+++ b/apps/mana/apps/web/src/lib/i18n/locales/events/de.json
@@ -0,0 +1,145 @@
+{
+ "list_view": {
+ "doc_title": "Events - Mana",
+ "tab_mine": "Meine Events",
+ "tab_discover": "Entdecken",
+ "subtitle_count": "{upcoming} bevorstehend · {past} vergangen",
+ "new_event_btn": "+ Neues Event",
+ "cancel_btn": "Abbrechen",
+ "placeholder_title": "Worum geht's? (z. B. Geburtstag Anna)",
+ "placeholder_location": "Ort (optional)",
+ "submit_create": "Event anlegen",
+ "section_upcoming": "Bevorstehend",
+ "section_past": "Vergangen",
+ "empty_upcoming": "Keine bevorstehenden Events. Zeit für eine Party?"
+ },
+ "detail_view": {
+ "loading": "Lade Event...",
+ "back": "← Zurück",
+ "action_edit": "Bearbeiten",
+ "action_delete": "Löschen",
+ "confirm_delete": "Event \"{title}\" wirklich löschen?",
+ "placeholder_title": "Event-Titel",
+ "placeholder_description": "Beschreibung",
+ "placeholder_location": "Ort — tippe eine Adresse...",
+ "location_pinned_title": "Koordinaten gesetzt",
+ "label_start": "Start",
+ "label_end": "Ende",
+ "label_all_day": "Ganztägig",
+ "action_cancel": "Abbrechen",
+ "action_save": "Speichern",
+ "map_iframe_title": "Event-Ort auf Karte",
+ "map_open": "In OpenStreetMap öffnen →",
+ "label_visibility": "Sichtbarkeit",
+ "section_rsvps": "RSVPs",
+ "section_guests": "Gäste",
+ "section_bring_list": "Bring-Liste",
+ "section_share": "Teilen",
+ "action_copy_link": "Kopieren",
+ "action_make_private": "Privat machen",
+ "share_hint": "Antworten erscheinen automatisch unten in „Antworten via Link\" (Polling alle 30s).",
+ "action_publish": "Event veröffentlichen & Link generieren"
+ },
+ "event_card": {
+ "badge_draft": "Entwurf",
+ "badge_cancelled": "Abgesagt",
+ "badge_published": "Geteilt",
+ "all_day": "Ganztägig",
+ "yes_count": "{count} kommen",
+ "pending_count": "· {count} offen"
+ },
+ "discovered_card": {
+ "all_day": "Ganztag",
+ "source_fallback": "Quelle",
+ "saved_label": "Gespeichert",
+ "action_save": "Merken",
+ "action_dismiss": "Ausblenden"
+ },
+ "discovery_tab": {
+ "loading": "Lade...",
+ "action_refresh": "Aktualisieren",
+ "action_sources": "Quellen",
+ "action_sources_count": "Quellen ({count})",
+ "loading_events": "Lade Events...",
+ "empty_title": "Noch keine Events gefunden",
+ "empty_hint": "Füge iCal-Feeds von Venues oder Vereinen hinzu, um Events zu entdecken.",
+ "action_manage_sources": "Quellen verwalten",
+ "action_load_more": "Mehr laden"
+ },
+ "discovery_setup": {
+ "title": "Event-Entdeckung einrichten",
+ "step1_desc": "Welche Regionen sollen nach Events durchsucht werden?",
+ "action_next": "Weiter",
+ "step2_desc": "Was interessiert dich?",
+ "placeholder_freetext": "Weitere Interessen (kommagetrennt, z.B. Impro-Theater, Rust Meetups)",
+ "action_back": "Zurück",
+ "action_finish": "Fertig"
+ },
+ "region_picker": {
+ "radius_unit": "{km} km",
+ "add_region": "+ Region",
+ "placeholder_search": "Stadt oder Region suchen...",
+ "radius_label": "Radius: {km} km",
+ "searching": "Suche...",
+ "action_cancel": "Abbrechen"
+ },
+ "source_manager": {
+ "section_title": "Quellen",
+ "action_discover": "Automatisch finden",
+ "action_discovering": "Suche...",
+ "action_add_ical": "+ iCal-Feed",
+ "placeholder_name": "Name (z.B. Jazzhaus Freiburg)",
+ "placeholder_url": "iCal URL (.ics)",
+ "action_submit_add": "Hinzufügen",
+ "action_cancel": "Abbrechen",
+ "section_suggested": "Vorgeschlagene Quellen",
+ "action_activate": "Aktivieren",
+ "action_reject": "x",
+ "empty": "Noch keine Quellen. Nutze \"Automatisch finden\" oder füge iCal-Feeds manuell hinzu.",
+ "meta_last_scan": "Letzter Scan: {date}",
+ "never_scanned": "nie",
+ "errors_count": "{count} Fehler",
+ "action_scan": "Scannen",
+ "action_scan_title": "Jetzt scannen",
+ "action_remove_title": "Entfernen"
+ },
+ "bring_list_editor": {
+ "placeholder_label": "z. B. Salat, Wein, Lautsprecher",
+ "placeholder_quantity": "Anzahl",
+ "action_add": "Hinzufügen",
+ "option_no_one": "— Niemand —",
+ "action_remove_title": "Entfernen",
+ "empty": "Noch nichts auf der Liste.",
+ "claimed_via_link": "{name} (via Link)",
+ "unknown_assignee": "?"
+ },
+ "guest_list_editor": {
+ "placeholder_name": "Name",
+ "placeholder_email": "E-Mail (optional)",
+ "action_add": "Hinzufügen",
+ "action_remove_title": "Entfernen",
+ "empty": "Noch keine Gäste hinzugefügt.",
+ "rsvp_pending": "Offen",
+ "rsvp_yes": "Ja",
+ "rsvp_maybe": "Vielleicht",
+ "rsvp_no": "Nein"
+ },
+ "public_rsvp_list": {
+ "title": "Antworten via Link",
+ "action_refresh": "Neu laden",
+ "err_load": "Fehler beim Laden",
+ "empty": "Noch keine Antworten via Share-Link.",
+ "status_yes": "Ja",
+ "status_no": "Nein",
+ "status_maybe": "Vielleicht",
+ "meta_updated": "Aktualisiert um {time} · Auto-Refresh alle 30s",
+ "action_import_title": "Zur Gästeliste"
+ },
+ "rsvp_summary": {
+ "label_yes": "Ja",
+ "label_maybe": "Vielleicht",
+ "label_no": "Nein",
+ "label_pending": "Offen",
+ "attending": "kommen"
+ }
+}
diff --git a/apps/mana/apps/web/src/lib/i18n/locales/events/en.json b/apps/mana/apps/web/src/lib/i18n/locales/events/en.json
new file mode 100644
index 000000000..6b85d28c1
--- /dev/null
+++ b/apps/mana/apps/web/src/lib/i18n/locales/events/en.json
@@ -0,0 +1,145 @@
+{
+ "list_view": {
+ "doc_title": "Events - Mana",
+ "tab_mine": "My events",
+ "tab_discover": "Discover",
+ "subtitle_count": "{upcoming} upcoming · {past} past",
+ "new_event_btn": "+ New event",
+ "cancel_btn": "Cancel",
+ "placeholder_title": "What's it about? (e.g. Anna's birthday)",
+ "placeholder_location": "Location (optional)",
+ "submit_create": "Create event",
+ "section_upcoming": "Upcoming",
+ "section_past": "Past",
+ "empty_upcoming": "No upcoming events. Time for a party?"
+ },
+ "detail_view": {
+ "loading": "Loading event...",
+ "back": "← Back",
+ "action_edit": "Edit",
+ "action_delete": "Delete",
+ "confirm_delete": "Really delete event \"{title}\"?",
+ "placeholder_title": "Event title",
+ "placeholder_description": "Description",
+ "placeholder_location": "Location — type an address...",
+ "location_pinned_title": "Coordinates set",
+ "label_start": "Start",
+ "label_end": "End",
+ "label_all_day": "All day",
+ "action_cancel": "Cancel",
+ "action_save": "Save",
+ "map_iframe_title": "Event location on map",
+ "map_open": "Open in OpenStreetMap →",
+ "label_visibility": "Visibility",
+ "section_rsvps": "RSVPs",
+ "section_guests": "Guests",
+ "section_bring_list": "Bring list",
+ "section_share": "Share",
+ "action_copy_link": "Copy",
+ "action_make_private": "Make private",
+ "share_hint": "Replies appear automatically below in \"Replies via link\" (polling every 30s).",
+ "action_publish": "Publish event & generate link"
+ },
+ "event_card": {
+ "badge_draft": "Draft",
+ "badge_cancelled": "Cancelled",
+ "badge_published": "Shared",
+ "all_day": "All day",
+ "yes_count": "{count} attending",
+ "pending_count": "· {count} pending"
+ },
+ "discovered_card": {
+ "all_day": "All day",
+ "source_fallback": "Source",
+ "saved_label": "Saved",
+ "action_save": "Save",
+ "action_dismiss": "Dismiss"
+ },
+ "discovery_tab": {
+ "loading": "Loading...",
+ "action_refresh": "Refresh",
+ "action_sources": "Sources",
+ "action_sources_count": "Sources ({count})",
+ "loading_events": "Loading events...",
+ "empty_title": "No events found yet",
+ "empty_hint": "Add iCal feeds from venues or clubs to discover events.",
+ "action_manage_sources": "Manage sources",
+ "action_load_more": "Load more"
+ },
+ "discovery_setup": {
+ "title": "Set up event discovery",
+ "step1_desc": "Which regions should be searched for events?",
+ "action_next": "Next",
+ "step2_desc": "What interests you?",
+ "placeholder_freetext": "More interests (comma-separated, e.g. improv theatre, Rust meetups)",
+ "action_back": "Back",
+ "action_finish": "Done"
+ },
+ "region_picker": {
+ "radius_unit": "{km} km",
+ "add_region": "+ Region",
+ "placeholder_search": "Search city or region...",
+ "radius_label": "Radius: {km} km",
+ "searching": "Searching...",
+ "action_cancel": "Cancel"
+ },
+ "source_manager": {
+ "section_title": "Sources",
+ "action_discover": "Find automatically",
+ "action_discovering": "Searching...",
+ "action_add_ical": "+ iCal feed",
+ "placeholder_name": "Name (e.g. Jazzhaus Freiburg)",
+ "placeholder_url": "iCal URL (.ics)",
+ "action_submit_add": "Add",
+ "action_cancel": "Cancel",
+ "section_suggested": "Suggested sources",
+ "action_activate": "Activate",
+ "action_reject": "x",
+ "empty": "No sources yet. Use \"Find automatically\" or add iCal feeds manually.",
+ "meta_last_scan": "Last scan: {date}",
+ "never_scanned": "never",
+ "errors_count": "{count} errors",
+ "action_scan": "Scan",
+ "action_scan_title": "Scan now",
+ "action_remove_title": "Remove"
+ },
+ "bring_list_editor": {
+ "placeholder_label": "e.g. salad, wine, speaker",
+ "placeholder_quantity": "Count",
+ "action_add": "Add",
+ "option_no_one": "— No one —",
+ "action_remove_title": "Remove",
+ "empty": "Nothing on the list yet.",
+ "claimed_via_link": "{name} (via link)",
+ "unknown_assignee": "?"
+ },
+ "guest_list_editor": {
+ "placeholder_name": "Name",
+ "placeholder_email": "Email (optional)",
+ "action_add": "Add",
+ "action_remove_title": "Remove",
+ "empty": "No guests added yet.",
+ "rsvp_pending": "Pending",
+ "rsvp_yes": "Yes",
+ "rsvp_maybe": "Maybe",
+ "rsvp_no": "No"
+ },
+ "public_rsvp_list": {
+ "title": "Replies via link",
+ "action_refresh": "Reload",
+ "err_load": "Loading error",
+ "empty": "No replies via share link yet.",
+ "status_yes": "Yes",
+ "status_no": "No",
+ "status_maybe": "Maybe",
+ "meta_updated": "Updated at {time} · Auto-refresh every 30s",
+ "action_import_title": "Add to guest list"
+ },
+ "rsvp_summary": {
+ "label_yes": "Yes",
+ "label_maybe": "Maybe",
+ "label_no": "No",
+ "label_pending": "Pending",
+ "attending": "attending"
+ }
+}
diff --git a/apps/mana/apps/web/src/lib/i18n/locales/events/es.json b/apps/mana/apps/web/src/lib/i18n/locales/events/es.json
new file mode 100644
index 000000000..27cafc626
--- /dev/null
+++ b/apps/mana/apps/web/src/lib/i18n/locales/events/es.json
@@ -0,0 +1,145 @@
+{
+ "list_view": {
+ "doc_title": "Eventos - Mana",
+ "tab_mine": "Mis eventos",
+ "tab_discover": "Descubrir",
+ "subtitle_count": "{upcoming} próximos · {past} pasados",
+ "new_event_btn": "+ Nuevo evento",
+ "cancel_btn": "Cancelar",
+ "placeholder_title": "¿De qué se trata? (p. ej. cumpleaños de Anna)",
+ "placeholder_location": "Lugar (opcional)",
+ "submit_create": "Crear evento",
+ "section_upcoming": "Próximos",
+ "section_past": "Pasados",
+ "empty_upcoming": "No hay eventos próximos. ¿Tiempo para una fiesta?"
+ },
+ "detail_view": {
+ "loading": "Cargando evento...",
+ "back": "← Atrás",
+ "action_edit": "Editar",
+ "action_delete": "Eliminar",
+ "confirm_delete": "¿Eliminar de verdad el evento \"{title}\"?",
+ "placeholder_title": "Título del evento",
+ "placeholder_description": "Descripción",
+ "placeholder_location": "Lugar — escribe una dirección...",
+ "location_pinned_title": "Coordenadas establecidas",
+ "label_start": "Inicio",
+ "label_end": "Fin",
+ "label_all_day": "Todo el día",
+ "action_cancel": "Cancelar",
+ "action_save": "Guardar",
+ "map_iframe_title": "Lugar del evento en el mapa",
+ "map_open": "Abrir en OpenStreetMap →",
+ "label_visibility": "Visibilidad",
+ "section_rsvps": "RSVPs",
+ "section_guests": "Invitados",
+ "section_bring_list": "Lista de cosas",
+ "section_share": "Compartir",
+ "action_copy_link": "Copiar",
+ "action_make_private": "Hacer privado",
+ "share_hint": "Las respuestas aparecen automáticamente abajo en «Respuestas vía enlace» (polling cada 30s).",
+ "action_publish": "Publicar evento y generar enlace"
+ },
+ "event_card": {
+ "badge_draft": "Borrador",
+ "badge_cancelled": "Cancelado",
+ "badge_published": "Compartido",
+ "all_day": "Todo el día",
+ "yes_count": "{count} asisten",
+ "pending_count": "· {count} pendientes"
+ },
+ "discovered_card": {
+ "all_day": "Todo el día",
+ "source_fallback": "Fuente",
+ "saved_label": "Guardado",
+ "action_save": "Guardar",
+ "action_dismiss": "Descartar"
+ },
+ "discovery_tab": {
+ "loading": "Cargando...",
+ "action_refresh": "Actualizar",
+ "action_sources": "Fuentes",
+ "action_sources_count": "Fuentes ({count})",
+ "loading_events": "Cargando eventos...",
+ "empty_title": "Aún no se han encontrado eventos",
+ "empty_hint": "Añade feeds iCal de salas o clubes para descubrir eventos.",
+ "action_manage_sources": "Gestionar fuentes",
+ "action_load_more": "Cargar más"
+ },
+ "discovery_setup": {
+ "title": "Configurar descubrimiento de eventos",
+ "step1_desc": "¿En qué regiones se deben buscar eventos?",
+ "action_next": "Siguiente",
+ "step2_desc": "¿Qué te interesa?",
+ "placeholder_freetext": "Más intereses (separados por coma, p. ej. teatro improv, meetups Rust)",
+ "action_back": "Atrás",
+ "action_finish": "Listo"
+ },
+ "region_picker": {
+ "radius_unit": "{km} km",
+ "add_region": "+ Región",
+ "placeholder_search": "Buscar ciudad o región...",
+ "radius_label": "Radio: {km} km",
+ "searching": "Buscando...",
+ "action_cancel": "Cancelar"
+ },
+ "source_manager": {
+ "section_title": "Fuentes",
+ "action_discover": "Buscar automáticamente",
+ "action_discovering": "Buscando...",
+ "action_add_ical": "+ Feed iCal",
+ "placeholder_name": "Nombre (p. ej. Jazzhaus Freiburg)",
+ "placeholder_url": "URL iCal (.ics)",
+ "action_submit_add": "Añadir",
+ "action_cancel": "Cancelar",
+ "section_suggested": "Fuentes sugeridas",
+ "action_activate": "Activar",
+ "action_reject": "x",
+ "empty": "Aún no hay fuentes. Usa \"Buscar automáticamente\" o añade feeds iCal manualmente.",
+ "meta_last_scan": "Último escaneo: {date}",
+ "never_scanned": "nunca",
+ "errors_count": "{count} errores",
+ "action_scan": "Escanear",
+ "action_scan_title": "Escanear ahora",
+ "action_remove_title": "Quitar"
+ },
+ "bring_list_editor": {
+ "placeholder_label": "p. ej. ensalada, vino, altavoz",
+ "placeholder_quantity": "Cantidad",
+ "action_add": "Añadir",
+ "option_no_one": "— Nadie —",
+ "action_remove_title": "Quitar",
+ "empty": "Aún no hay nada en la lista.",
+ "claimed_via_link": "{name} (vía enlace)",
+ "unknown_assignee": "?"
+ },
+ "guest_list_editor": {
+ "placeholder_name": "Nombre",
+ "placeholder_email": "Correo electrónico (opcional)",
+ "action_add": "Añadir",
+ "action_remove_title": "Quitar",
+ "empty": "Aún no se han añadido invitados.",
+ "rsvp_pending": "Pendiente",
+ "rsvp_yes": "Sí",
+ "rsvp_maybe": "Quizás",
+ "rsvp_no": "No"
+ },
+ "public_rsvp_list": {
+ "title": "Respuestas vía enlace",
+ "action_refresh": "Recargar",
+ "err_load": "Error al cargar",
+ "empty": "Aún no hay respuestas vía enlace.",
+ "status_yes": "Sí",
+ "status_no": "No",
+ "status_maybe": "Quizás",
+ "meta_updated": "Actualizado a las {time} · Auto-refresco cada 30s",
+ "action_import_title": "A la lista de invitados"
+ },
+ "rsvp_summary": {
+ "label_yes": "Sí",
+ "label_maybe": "Quizás",
+ "label_no": "No",
+ "label_pending": "Pendiente",
+ "attending": "asisten"
+ }
+}
diff --git a/apps/mana/apps/web/src/lib/i18n/locales/events/fr.json b/apps/mana/apps/web/src/lib/i18n/locales/events/fr.json
new file mode 100644
index 000000000..efc72d5c8
--- /dev/null
+++ b/apps/mana/apps/web/src/lib/i18n/locales/events/fr.json
@@ -0,0 +1,145 @@
+{
+ "list_view": {
+ "doc_title": "Événements - Mana",
+ "tab_mine": "Mes événements",
+ "tab_discover": "Découvrir",
+ "subtitle_count": "{upcoming} à venir · {past} passés",
+ "new_event_btn": "+ Nouvel événement",
+ "cancel_btn": "Annuler",
+ "placeholder_title": "De quoi s'agit-il ? (p. ex. anniversaire d'Anna)",
+ "placeholder_location": "Lieu (optionnel)",
+ "submit_create": "Créer l'événement",
+ "section_upcoming": "À venir",
+ "section_past": "Passés",
+ "empty_upcoming": "Aucun événement à venir. C'est l'heure d'une fête ?"
+ },
+ "detail_view": {
+ "loading": "Chargement de l'événement...",
+ "back": "← Retour",
+ "action_edit": "Modifier",
+ "action_delete": "Supprimer",
+ "confirm_delete": "Vraiment supprimer l'événement « {title} » ?",
+ "placeholder_title": "Titre de l'événement",
+ "placeholder_description": "Description",
+ "placeholder_location": "Lieu — saisis une adresse...",
+ "location_pinned_title": "Coordonnées définies",
+ "label_start": "Début",
+ "label_end": "Fin",
+ "label_all_day": "Toute la journée",
+ "action_cancel": "Annuler",
+ "action_save": "Enregistrer",
+ "map_iframe_title": "Lieu de l'événement sur la carte",
+ "map_open": "Ouvrir dans OpenStreetMap →",
+ "label_visibility": "Visibilité",
+ "section_rsvps": "RSVPs",
+ "section_guests": "Invités",
+ "section_bring_list": "Liste à apporter",
+ "section_share": "Partager",
+ "action_copy_link": "Copier",
+ "action_make_private": "Rendre privé",
+ "share_hint": "Les réponses apparaissent automatiquement ci-dessous dans « Réponses via le lien » (polling toutes les 30s).",
+ "action_publish": "Publier l'événement & générer le lien"
+ },
+ "event_card": {
+ "badge_draft": "Brouillon",
+ "badge_cancelled": "Annulé",
+ "badge_published": "Partagé",
+ "all_day": "Toute la journée",
+ "yes_count": "{count} viennent",
+ "pending_count": "· {count} en attente"
+ },
+ "discovered_card": {
+ "all_day": "Toute la journée",
+ "source_fallback": "Source",
+ "saved_label": "Enregistré",
+ "action_save": "Enregistrer",
+ "action_dismiss": "Masquer"
+ },
+ "discovery_tab": {
+ "loading": "Chargement...",
+ "action_refresh": "Actualiser",
+ "action_sources": "Sources",
+ "action_sources_count": "Sources ({count})",
+ "loading_events": "Chargement des événements...",
+ "empty_title": "Aucun événement trouvé pour l'instant",
+ "empty_hint": "Ajoute des flux iCal de salles ou d'associations pour découvrir des événements.",
+ "action_manage_sources": "Gérer les sources",
+ "action_load_more": "Charger plus"
+ },
+ "discovery_setup": {
+ "title": "Configurer la découverte d'événements",
+ "step1_desc": "Quelles régions doivent être recherchées ?",
+ "action_next": "Suivant",
+ "step2_desc": "Qu'est-ce qui t'intéresse ?",
+ "placeholder_freetext": "Autres centres d'intérêt (séparés par virgule, p. ex. impro-théâtre, meetups Rust)",
+ "action_back": "Retour",
+ "action_finish": "Terminé"
+ },
+ "region_picker": {
+ "radius_unit": "{km} km",
+ "add_region": "+ Région",
+ "placeholder_search": "Rechercher une ville ou région...",
+ "radius_label": "Rayon : {km} km",
+ "searching": "Recherche...",
+ "action_cancel": "Annuler"
+ },
+ "source_manager": {
+ "section_title": "Sources",
+ "action_discover": "Trouver automatiquement",
+ "action_discovering": "Recherche...",
+ "action_add_ical": "+ Flux iCal",
+ "placeholder_name": "Nom (p. ex. Jazzhaus Freiburg)",
+ "placeholder_url": "URL iCal (.ics)",
+ "action_submit_add": "Ajouter",
+ "action_cancel": "Annuler",
+ "section_suggested": "Sources suggérées",
+ "action_activate": "Activer",
+ "action_reject": "x",
+ "empty": "Pas encore de sources. Utilise « Trouver automatiquement » ou ajoute des flux iCal manuellement.",
+ "meta_last_scan": "Dernier scan : {date}",
+ "never_scanned": "jamais",
+ "errors_count": "{count} erreurs",
+ "action_scan": "Scanner",
+ "action_scan_title": "Scanner maintenant",
+ "action_remove_title": "Retirer"
+ },
+ "bring_list_editor": {
+ "placeholder_label": "p. ex. salade, vin, enceinte",
+ "placeholder_quantity": "Quantité",
+ "action_add": "Ajouter",
+ "option_no_one": "— Personne —",
+ "action_remove_title": "Retirer",
+ "empty": "Rien sur la liste pour l'instant.",
+ "claimed_via_link": "{name} (via lien)",
+ "unknown_assignee": "?"
+ },
+ "guest_list_editor": {
+ "placeholder_name": "Nom",
+ "placeholder_email": "E-mail (optionnel)",
+ "action_add": "Ajouter",
+ "action_remove_title": "Retirer",
+ "empty": "Aucun invité ajouté pour l'instant.",
+ "rsvp_pending": "En attente",
+ "rsvp_yes": "Oui",
+ "rsvp_maybe": "Peut-être",
+ "rsvp_no": "Non"
+ },
+ "public_rsvp_list": {
+ "title": "Réponses via lien",
+ "action_refresh": "Recharger",
+ "err_load": "Erreur de chargement",
+ "empty": "Pas encore de réponses via lien.",
+ "status_yes": "Oui",
+ "status_no": "Non",
+ "status_maybe": "Peut-être",
+ "meta_updated": "Mis à jour à {time} · Auto-rafraîchissement toutes les 30s",
+ "action_import_title": "Vers la liste d'invités"
+ },
+ "rsvp_summary": {
+ "label_yes": "Oui",
+ "label_maybe": "Peut-être",
+ "label_no": "Non",
+ "label_pending": "En attente",
+ "attending": "viennent"
+ }
+}
diff --git a/apps/mana/apps/web/src/lib/i18n/locales/events/it.json b/apps/mana/apps/web/src/lib/i18n/locales/events/it.json
new file mode 100644
index 000000000..d474470f1
--- /dev/null
+++ b/apps/mana/apps/web/src/lib/i18n/locales/events/it.json
@@ -0,0 +1,145 @@
+{
+ "list_view": {
+ "doc_title": "Eventi - Mana",
+ "tab_mine": "I miei eventi",
+ "tab_discover": "Scopri",
+ "subtitle_count": "{upcoming} in arrivo · {past} passati",
+ "new_event_btn": "+ Nuovo evento",
+ "cancel_btn": "Annulla",
+ "placeholder_title": "Di cosa si tratta? (es. compleanno di Anna)",
+ "placeholder_location": "Luogo (opzionale)",
+ "submit_create": "Crea evento",
+ "section_upcoming": "In arrivo",
+ "section_past": "Passati",
+ "empty_upcoming": "Nessun evento in arrivo. Tempo di una festa?"
+ },
+ "detail_view": {
+ "loading": "Caricamento evento...",
+ "back": "← Indietro",
+ "action_edit": "Modifica",
+ "action_delete": "Elimina",
+ "confirm_delete": "Eliminare davvero l'evento \"{title}\"?",
+ "placeholder_title": "Titolo dell'evento",
+ "placeholder_description": "Descrizione",
+ "placeholder_location": "Luogo — digita un indirizzo...",
+ "location_pinned_title": "Coordinate impostate",
+ "label_start": "Inizio",
+ "label_end": "Fine",
+ "label_all_day": "Tutto il giorno",
+ "action_cancel": "Annulla",
+ "action_save": "Salva",
+ "map_iframe_title": "Luogo dell'evento sulla mappa",
+ "map_open": "Apri in OpenStreetMap →",
+ "label_visibility": "Visibilità",
+ "section_rsvps": "RSVPs",
+ "section_guests": "Ospiti",
+ "section_bring_list": "Lista da portare",
+ "section_share": "Condividi",
+ "action_copy_link": "Copia",
+ "action_make_private": "Rendi privato",
+ "share_hint": "Le risposte appaiono automaticamente sotto in «Risposte via link» (polling ogni 30s).",
+ "action_publish": "Pubblica evento & genera link"
+ },
+ "event_card": {
+ "badge_draft": "Bozza",
+ "badge_cancelled": "Annullato",
+ "badge_published": "Condiviso",
+ "all_day": "Tutto il giorno",
+ "yes_count": "{count} vengono",
+ "pending_count": "· {count} in sospeso"
+ },
+ "discovered_card": {
+ "all_day": "Tutto il giorno",
+ "source_fallback": "Fonte",
+ "saved_label": "Salvato",
+ "action_save": "Salva",
+ "action_dismiss": "Nascondi"
+ },
+ "discovery_tab": {
+ "loading": "Caricamento...",
+ "action_refresh": "Aggiorna",
+ "action_sources": "Fonti",
+ "action_sources_count": "Fonti ({count})",
+ "loading_events": "Caricamento eventi...",
+ "empty_title": "Ancora nessun evento trovato",
+ "empty_hint": "Aggiungi feed iCal di locali o associazioni per scoprire eventi.",
+ "action_manage_sources": "Gestisci fonti",
+ "action_load_more": "Carica altri"
+ },
+ "discovery_setup": {
+ "title": "Imposta scoperta eventi",
+ "step1_desc": "In quali regioni cercare eventi?",
+ "action_next": "Avanti",
+ "step2_desc": "Cosa ti interessa?",
+ "placeholder_freetext": "Altri interessi (separati da virgola, es. teatro improv, meetup Rust)",
+ "action_back": "Indietro",
+ "action_finish": "Fatto"
+ },
+ "region_picker": {
+ "radius_unit": "{km} km",
+ "add_region": "+ Regione",
+ "placeholder_search": "Cerca città o regione...",
+ "radius_label": "Raggio: {km} km",
+ "searching": "Ricerca...",
+ "action_cancel": "Annulla"
+ },
+ "source_manager": {
+ "section_title": "Fonti",
+ "action_discover": "Trova automaticamente",
+ "action_discovering": "Ricerca...",
+ "action_add_ical": "+ Feed iCal",
+ "placeholder_name": "Nome (es. Jazzhaus Freiburg)",
+ "placeholder_url": "URL iCal (.ics)",
+ "action_submit_add": "Aggiungi",
+ "action_cancel": "Annulla",
+ "section_suggested": "Fonti suggerite",
+ "action_activate": "Attiva",
+ "action_reject": "x",
+ "empty": "Ancora nessuna fonte. Usa \"Trova automaticamente\" o aggiungi feed iCal manualmente.",
+ "meta_last_scan": "Ultima scansione: {date}",
+ "never_scanned": "mai",
+ "errors_count": "{count} errori",
+ "action_scan": "Scansiona",
+ "action_scan_title": "Scansiona ora",
+ "action_remove_title": "Rimuovi"
+ },
+ "bring_list_editor": {
+ "placeholder_label": "es. insalata, vino, casse",
+ "placeholder_quantity": "Quantità",
+ "action_add": "Aggiungi",
+ "option_no_one": "— Nessuno —",
+ "action_remove_title": "Rimuovi",
+ "empty": "Ancora niente nella lista.",
+ "claimed_via_link": "{name} (via link)",
+ "unknown_assignee": "?"
+ },
+ "guest_list_editor": {
+ "placeholder_name": "Nome",
+ "placeholder_email": "E-mail (opzionale)",
+ "action_add": "Aggiungi",
+ "action_remove_title": "Rimuovi",
+ "empty": "Ancora nessun ospite aggiunto.",
+ "rsvp_pending": "In sospeso",
+ "rsvp_yes": "Sì",
+ "rsvp_maybe": "Forse",
+ "rsvp_no": "No"
+ },
+ "public_rsvp_list": {
+ "title": "Risposte via link",
+ "action_refresh": "Ricarica",
+ "err_load": "Errore di caricamento",
+ "empty": "Ancora nessuna risposta via link.",
+ "status_yes": "Sì",
+ "status_no": "No",
+ "status_maybe": "Forse",
+ "meta_updated": "Aggiornato alle {time} · Auto-refresh ogni 30s",
+ "action_import_title": "Alla lista ospiti"
+ },
+ "rsvp_summary": {
+ "label_yes": "Sì",
+ "label_maybe": "Forse",
+ "label_no": "No",
+ "label_pending": "In sospeso",
+ "attending": "vengono"
+ }
+}
diff --git a/apps/mana/apps/web/src/lib/modules/events/ListView.svelte b/apps/mana/apps/web/src/lib/modules/events/ListView.svelte
index 0eb7e1f2d..b9dc4131e 100644
--- a/apps/mana/apps/web/src/lib/modules/events/ListView.svelte
+++ b/apps/mana/apps/web/src/lib/modules/events/ListView.svelte
@@ -1,5 +1,6 @@
- {(upcoming.value ?? []).length} bevorstehend · {(past.value ?? []).length} vergangen + {$_('events.list_view.subtitle_count', { + values: { + upcoming: (upcoming.value ?? []).length, + past: (past.value ?? []).length, + }, + })}
Keine bevorstehenden Events. Zeit fur eine Party?
+{$_('events.list_view.empty_upcoming')}
{:else}Welche Regionen sollen nach Events durchsucht werden?
+{$_('events.discovery_setup.step1_desc')}
Was interessiert dich?
+{$_('events.discovery_setup.step2_desc')}