🌐 Add multilingual translations and update UI for Meetup and Event management

This commit is contained in:
HolgerHatGarKeineNode
2025-11-21 12:55:21 +01:00
parent 122da2b2c7
commit 8afc762bfe
5 changed files with 252 additions and 174 deletions

View File

@@ -224,5 +224,31 @@
"Alle Meetups anzeigen": "", "Alle Meetups anzeigen": "",
"Kartenansicht öffnen": "", "Kartenansicht öffnen": "",
"Verbinde dich mit Bitcoinern in deiner Nähe": "", "Verbinde dich mit Bitcoinern in deiner Nähe": "",
"Finde deine lokale Community": "" "Finde deine lokale Community": "",
"Event erfolgreich aktualisiert!": "",
"Event erfolgreich erstellt!": "",
"Event erfolgreich gelöscht!": "",
"Event bearbeiten": "",
"Neues Event erstellen": "",
"Event Details": "",
"Startzeit": "",
"Wann findet das Event statt?": "",
"z.B. Café Mustermann, Hauptstr. 1": "",
"Wo findet das Event statt?": "",
"Beschreibe das Event...": "",
"Details über das Event": "",
"Link": "",
"Link zu weiteren Informationen": "",
"Bist du sicher, dass du dieses Event löschen möchtest?": "",
"Event löschen": "",
"Event aktualisieren": "",
"Event erstellen": "",
"Events": "",
"Teilnahme": "",
"Du bist nicht eingloggt und musst deshalb den Namen selbst eintippen.": "",
"Dein Name": "",
"Name eingeben": "",
"Ich komme": "",
"Absagen": "",
"Öffnen/RSVP": ""
} }

View File

@@ -142,87 +142,113 @@
"With two-factor authentication enabled, you will be prompted for a secure, random pin during login, which you can retrieve from the TOTP-supported application on your phone.": "With two-factor authentication enabled, you will be prompted for a secure, random pin during login, which you can retrieve from the TOTP-supported application on your phone.", "With two-factor authentication enabled, you will be prompted for a secure, random pin during login, which you can retrieve from the TOTP-supported application on your phone.": "With two-factor authentication enabled, you will be prompted for a secure, random pin during login, which you can retrieve from the TOTP-supported application on your phone.",
"You are receiving this email because we received a password reset request for your account.": "You are receiving this email because we received a password reset request for your account.", "You are receiving this email because we received a password reset request for your account.": "You are receiving this email because we received a password reset request for your account.",
"Your email address is unverified.": "Your email address is unverified.", "Your email address is unverified.": "Your email address is unverified.",
"Success!": "", "Success!": "Success!",
"Copied into clipboard": "", "Copied into clipboard": "Copied into clipboard",
"App": "", "App": "App",
"Meetups": "", "Meetups": "Meetups",
"Karte": "", "Karte": "Map",
"Wallpaper": "", "Wallpaper": "Wallpaper",
"Land": "", "Land": "Country",
"Willkommen zurück": "", "Willkommen zurück": "Welcome back",
"Log in mit Nostr": "", "Log in mit Nostr": "Log in with Nostr",
"Wähle dein Land...": "", "Wähle dein Land...": "Choose your country...",
"Suche dein Land...": "", "Suche dein Land...": "Search your country...",
"Meine nächsten Meetup Termine": "", "Meine nächsten Meetup Termine": "My upcoming meetup dates",
"Keine bevorstehenden Termine": "", "Keine bevorstehenden Termine": "No upcoming dates",
"Meine Meetups": "", "Meine Meetups": "My Meetups",
"Meetup hinzufügen...": "", "Meetup hinzufügen...": "Add meetup...",
"Meetup suchen...": "", "Meetup suchen...": "Search meetup...",
"Bearbeiten": "", "Bearbeiten": "Edit",
"Meetup entfernen?": "", "Meetup entfernen?": "Remove meetup?",
"Möchtest du": "", "Möchtest du": "Do you want to",
"aus deinen Meetups entfernen?": "", "aus deinen Meetups entfernen?": "remove from your meetups?",
"Du kannst es jederzeit wieder hinzufügen.": "", "Du kannst es jederzeit wieder hinzufügen.": "You can add it again anytime.",
"Abbrechen": "", "Abbrechen": "Cancel",
"Entfernen": "", "Entfernen": "Remove",
"Keine Meetups zugeordnet": "", "Keine Meetups zugeordnet": "No meetups assigned",
"Meetup erfolgreich aktualisiert!": "", "Meetup erfolgreich aktualisiert!": "Meetup successfully updated!",
"Meetup bearbeiten": "", "Meetup bearbeiten": "Edit meetup",
"Grundlegende Informationen": "", "Grundlegende Informationen": "Basic information",
"ID": "", "ID": "ID",
"System-generierte ID (nur lesbar)": "", "System-generierte ID (nur lesbar)": "System generated ID (read-only)",
"Der Anzeigename für dieses Meetup": "", "Der Anzeigename für dieses Meetup": "The display name for this meetup",
"Stadt": "", "Stadt": "City",
"Stadt auswählen": "", "Stadt auswählen": "Select city",
"Suche passende Stadt...": "", "Suche passende Stadt...": "Search matching city...",
"Die nächstgrößte Stadt oder Ort": "", "Die nächstgrößte Stadt oder Ort": "The nearest major city or location",
"Einführung": "", "Einführung": "Introduction",
"Kurze Beschreibung des Meetups": "", "Kurze Beschreibung des Meetups": "Brief description of the meetup",
"Links & Soziale Medien": "", "Links & Soziale Medien": "Links & Social Media",
"Webseite": "", "Webseite": "Website",
"Offizielle Webseite oder Landingpage": "", "Offizielle Webseite oder Landingpage": "Official website or landing page",
"Telegram Link": "", "Telegram Link": "Telegram Link",
"Link zur Telegram-Gruppe oder zum Kanal": "", "Link zur Telegram-Gruppe oder zum Kanal": "Link to Telegram group or channel",
"Twitter Benutzername": "", "Twitter Benutzername": "Twitter username",
"Twitter-Handle ohne @ Symbol": "", "Twitter-Handle ohne @ Symbol": "Twitter handle without @ symbol",
"Matrix Gruppe": "", "Matrix Gruppe": "Matrix Group",
"Matrix-Raum Bezeichner oder Link": "", "Matrix-Raum Bezeichner oder Link": "Matrix room identifier or link",
"Nostr": "", "Nostr": "Nostr",
"Nostr öffentlicher Schlüssel oder Bezeichner": "", "Nostr öffentlicher Schlüssel oder Bezeichner": "Nostr public key or identifier",
"SimpleX": "", "SimpleX": "SimpleX",
"SimpleX Chat Kontaktinformationen": "", "SimpleX Chat Kontaktinformationen": "SimpleX Chat contact information",
"Signal": "", "Signal": "Signal",
"Signal Kontakt- oder Gruppeninformationen": "", "Signal Kontakt- oder Gruppeninformationen": "Signal contact or group information",
"Zusätzliche Informationen": "", "Zusätzliche Informationen": "Additional information",
"Gemeinschaft": "", "Gemeinschaft": "Community",
"Gemeinschafts- oder Organisationsname": "", "Gemeinschafts- oder Organisationsname": "Community or organization name",
"Systeminformationen": "", "Systeminformationen": "System information",
"Erstellt von": "", "Erstellt von": "Created by",
"Unbekannt": "", "Unbekannt": "Unknown",
"Ersteller des Meetups": "", "Ersteller des Meetups": "Creator of the meetup",
"Erstellt am": "", "Erstellt am": "Created at",
"Wann dieses Meetup erstellt wurde": "", "Wann dieses Meetup erstellt wurde": "When this meetup was created",
"Aktualisiert am": "", "Aktualisiert am": "Updated at",
"Letzte Änderungszeit": "", "Letzte Änderungszeit": "Last modification time",
"Meetup aktualisieren": "", "Meetup aktualisieren": "Update meetup",
"Suche nach Meetups...": "", "Suche nach Meetups...": "Search for meetups...",
"Nächster Termin": "", "Nächster Termin": "Next date",
"Links": "", "Links": "Links",
"Aktionen": "", "Aktionen": "Actions",
"Ort": "", "Ort": "Location",
"Beschreibung": "", "Beschreibung": "Description",
"Mehr Informationen": "", "Mehr Informationen": "More information",
"Zusagen": "", "Zusagen": "Commitments",
"Vielleicht": "", "Vielleicht": "Maybe",
"Zurück zum Meetup": "", "Zurück zum Meetup": "Back to meetup",
"Über uns": "", "Über uns": "About us",
"Kontakt & Links": "", "Kontakt & Links": "Contact & Links",
"Standort": "", "Standort": "Location",
"Zoom = STRG+Scroll": "", "Zoom = STRG+Scroll": "Zoom = CTRL+Scroll",
"Kommende Veranstaltungen": "", "Kommende Veranstaltungen": "Upcoming events",
"Bitcoin Meetups": "", "Bitcoin Meetups": "Bitcoin Meetups",
"Alle Meetups anzeigen": "", "Alle Meetups anzeigen": "Show all meetups",
"Kartenansicht öffnen": "", "Kartenansicht öffnen": "Open map view",
"Verbinde dich mit Bitcoinern in deiner Nähe": "", "Verbinde dich mit Bitcoinern in deiner Nähe": "Connect with Bitcoiners near you",
"Finde deine lokale Community": "" "Finde deine lokale Community": "Find your local community",
} "Event erfolgreich aktualisiert!": "Event successfully updated!",
"Event erfolgreich erstellt!": "Event successfully created!",
"Event erfolgreich gelöscht!": "Event successfully deleted!",
"Event bearbeiten": "Edit event",
"Neues Event erstellen": "Create new event",
"Event Details": "Event Details",
"Startzeit": "Start time",
"Wann findet das Event statt?": "When does the event take place?",
"z.B. Café Mustermann, Hauptstr. 1": "e.g. Cafe Smith, Main St 1",
"Wo findet das Event statt?": "Where does the event take place?",
"Beschreibe das Event...": "Describe the event...",
"Details über das Event": "Details about the event",
"Link": "Link",
"Link zu weiteren Informationen": "Link to further information",
"Bist du sicher, dass du dieses Event löschen möchtest?": "Are you sure you want to delete this event?",
"Event löschen": "Delete event",
"Event aktualisieren": "Update event",
"Event erstellen": "Create event",
"Events": "Events",
"Teilnahme": "Participation",
"Du bist nicht eingloggt und musst deshalb den Namen selbst eintippen.": "You are not logged in and therefore need to type your name yourself.",
"Dein Name": "Your name",
"Name eingeben": "Enter name",
"Ich komme": "I'm coming",
"Absagen": "Cancel",
"Öffnen/RSVP": "Open/RSVP"
}

View File

@@ -141,87 +141,113 @@
"With two-factor authentication enabled, you will be prompted for a secure, random pin during login, which you can retrieve from the TOTP-supported application on your phone.": "Con la autenticación de dos factores habilitada, se le solicitará un PIN aleatorio seguro durante el inicio de sesión, que puede recuperar de la aplicación compatible con TOTP en su teléfono.", "With two-factor authentication enabled, you will be prompted for a secure, random pin during login, which you can retrieve from the TOTP-supported application on your phone.": "Con la autenticación de dos factores habilitada, se le solicitará un PIN aleatorio seguro durante el inicio de sesión, que puede recuperar de la aplicación compatible con TOTP en su teléfono.",
"You are receiving this email because we received a password reset request for your account.": "Ha recibido este mensaje porque se solicitó un restablecimiento de contraseña para su cuenta.", "You are receiving this email because we received a password reset request for your account.": "Ha recibido este mensaje porque se solicitó un restablecimiento de contraseña para su cuenta.",
"Your email address is unverified.": "Su dirección de correo electrónico no está verificada.", "Your email address is unverified.": "Su dirección de correo electrónico no está verificada.",
"Success!": "", "Success!": "¡Éxito!",
"Copied into clipboard": "", "Copied into clipboard": "Copiado al portapapeles",
"App": "", "App": "Aplicación",
"Meetups": "", "Meetups": "Encuentros",
"Karte": "", "Karte": "Mapa",
"Wallpaper": "", "Wallpaper": "Fondo de pantalla",
"Land": "", "Land": "País",
"Willkommen zurück": "", "Willkommen zurück": "Bienvenido de nuevo",
"Log in mit Nostr": "", "Log in mit Nostr": "Iniciar sesión con Nostr",
"Wähle dein Land...": "", "Wähle dein Land...": "Elige tu país...",
"Suche dein Land...": "", "Suche dein Land...": "Busca tu país...",
"Meine nächsten Meetup Termine": "", "Meine nächsten Meetup Termine": "Mis próximos eventos",
"Keine bevorstehenden Termine": "", "Keine bevorstehenden Termine": "No hay eventos próximos",
"Meine Meetups": "", "Meine Meetups": "Mis encuentros",
"Meetup hinzufügen...": "", "Meetup hinzufügen...": "Añadir encuentro...",
"Meetup suchen...": "", "Meetup suchen...": "Buscar encuentro...",
"Bearbeiten": "", "Bearbeiten": "Editar",
"Meetup entfernen?": "", "Meetup entfernen?": "¿Eliminar encuentro?",
"Möchtest du": "", "Möchtest du": "¿Quieres",
"aus deinen Meetups entfernen?": "", "aus deinen Meetups entfernen?": "eliminar de tus encuentros?",
"Du kannst es jederzeit wieder hinzufügen.": "", "Du kannst es jederzeit wieder hinzufügen.": "Puedes volver a añadirlo en cualquier momento.",
"Abbrechen": "", "Abbrechen": "Cancelar",
"Entfernen": "", "Entfernen": "Eliminar",
"Keine Meetups zugeordnet": "", "Keine Meetups zugeordnet": "No hay encuentros asignados",
"Meetup erfolgreich aktualisiert!": "", "Meetup erfolgreich aktualisiert!": "¡Encuentro actualizado con éxito!",
"Meetup bearbeiten": "", "Meetup bearbeiten": "Editar encuentro",
"Grundlegende Informationen": "", "Grundlegende Informationen": "Información básica",
"ID": "", "ID": "ID",
"System-generierte ID (nur lesbar)": "", "System-generierte ID (nur lesbar)": "ID generado por el sistema (solo lectura)",
"Der Anzeigename für dieses Meetup": "", "Der Anzeigename für dieses Meetup": "El nombre para mostrar de este encuentro",
"Stadt": "", "Stadt": "Ciudad",
"Stadt auswählen": "", "Stadt auswählen": "Seleccionar ciudad",
"Suche passende Stadt...": "", "Suche passende Stadt...": "Buscar ciudad correspondiente...",
"Die nächstgrößte Stadt oder Ort": "", "Die nächstgrößte Stadt oder Ort": "La ciudad o lugar más cercano",
"Einführung": "", "Einführung": "Introducción",
"Kurze Beschreibung des Meetups": "", "Kurze Beschreibung des Meetups": "Breve descripción del encuentro",
"Links & Soziale Medien": "", "Links & Soziale Medien": "Enlaces y redes sociales",
"Webseite": "", "Webseite": "Sitio web",
"Offizielle Webseite oder Landingpage": "", "Offizielle Webseite oder Landingpage": "Sitio web oficial o página de destino",
"Telegram Link": "", "Telegram Link": "Enlace de Telegram",
"Link zur Telegram-Gruppe oder zum Kanal": "", "Link zur Telegram-Gruppe oder zum Kanal": "Enlace al grupo o canal de Telegram",
"Twitter Benutzername": "", "Twitter Benutzername": "Nombre de usuario de Twitter",
"Twitter-Handle ohne @ Symbol": "", "Twitter-Handle ohne @ Symbol": "Usuario de Twitter sin el símbolo @",
"Matrix Gruppe": "", "Matrix Gruppe": "Grupo de Matrix",
"Matrix-Raum Bezeichner oder Link": "", "Matrix-Raum Bezeichner oder Link": "Identificador o enlace de sala Matrix",
"Nostr": "", "Nostr": "Nostr",
"Nostr öffentlicher Schlüssel oder Bezeichner": "", "Nostr öffentlicher Schlüssel oder Bezeichner": "Clave pública o identificador de Nostr",
"SimpleX": "", "SimpleX": "SimpleX",
"SimpleX Chat Kontaktinformationen": "", "SimpleX Chat Kontaktinformationen": "Información de contacto de SimpleX Chat",
"Signal": "", "Signal": "Signal",
"Signal Kontakt- oder Gruppeninformationen": "", "Signal Kontakt- oder Gruppeninformationen": "Información de contacto o grupo de Signal",
"Zusätzliche Informationen": "", "Zusätzliche Informationen": "Información adicional",
"Gemeinschaft": "", "Gemeinschaft": "Comunidad",
"Gemeinschafts- oder Organisationsname": "", "Gemeinschafts- oder Organisationsname": "Nombre de la comunidad u organización",
"Systeminformationen": "", "Systeminformationen": "Información del sistema",
"Erstellt von": "", "Erstellt von": "Creado por",
"Unbekannt": "", "Unbekannt": "Desconocido",
"Ersteller des Meetups": "", "Ersteller des Meetups": "Creador del encuentro",
"Erstellt am": "", "Erstellt am": "Creado el",
"Wann dieses Meetup erstellt wurde": "", "Wann dieses Meetup erstellt wurde": "Cuando se creó este encuentro",
"Aktualisiert am": "", "Aktualisiert am": "Actualizado el",
"Letzte Änderungszeit": "", "Letzte Änderungszeit": "Última hora de modificación",
"Meetup aktualisieren": "", "Meetup aktualisieren": "Actualizar encuentro",
"Suche nach Meetups...": "", "Suche nach Meetups...": "Buscar encuentros...",
"Nächster Termin": "", "Nächster Termin": "Próxima cita",
"Links": "", "Links": "Enlaces",
"Aktionen": "", "Aktionen": "Acciones",
"Ort": "", "Ort": "Ubicación",
"Beschreibung": "", "Beschreibung": "Descripción",
"Mehr Informationen": "", "Mehr Informationen": "Más información",
"Zusagen": "", "Zusagen": "Confirmaciones",
"Vielleicht": "", "Vielleicht": "Quizás",
"Zurück zum Meetup": "", "Zurück zum Meetup": "Volver al encuentro",
"Über uns": "", "Über uns": "Sobre nosotros",
"Kontakt & Links": "", "Kontakt & Links": "Contacto y enlaces",
"Standort": "", "Standort": "Ubicación",
"Zoom = STRG+Scroll": "", "Zoom = STRG+Scroll": "Zoom = CTRL+Scroll",
"Kommende Veranstaltungen": "", "Kommende Veranstaltungen": "Próximos eventos",
"Bitcoin Meetups": "", "Bitcoin Meetups": "Encuentros Bitcoin",
"Alle Meetups anzeigen": "", "Alle Meetups anzeigen": "Mostrar todos los encuentros",
"Kartenansicht öffnen": "", "Kartenansicht öffnen": "Abrir vista de mapa",
"Verbinde dich mit Bitcoinern in deiner Nähe": "", "Verbinde dich mit Bitcoinern in deiner Nähe": "Conéctate con bitcoiners cerca de ti",
"Finde deine lokale Community": "" "Finde deine lokale Community": "Encuentra tu comunidad local",
} "Event erfolgreich aktualisiert!": "¡Evento actualizado con éxito!",
"Event erfolgreich erstellt!": "¡Evento creado con éxito!",
"Event erfolgreich gelöscht!": "¡Evento eliminado con éxito!",
"Event bearbeiten": "Editar evento",
"Neues Event erstellen": "Crear nuevo evento",
"Event Details": "Detalles del evento",
"Startzeit": "Hora de inicio",
"Wann findet das Event statt?": "¿Cuándo tendrá lugar el evento?",
"z.B. Café Mustermann, Hauptstr. 1": "p.ej. Café Ejemplo, Calle Principal 1",
"Wo findet das Event statt?": "¿Dónde tendrá lugar el evento?",
"Beschreibe das Event...": "Describe el evento...",
"Details über das Event": "Detalles sobre el evento",
"Link": "Enlace",
"Link zu weiteren Informationen": "Enlace para más información",
"Bist du sicher, dass du dieses Event löschen möchtest?": "¿Estás seguro de que quieres eliminar este evento?",
"Event löschen": "Eliminar evento",
"Event aktualisieren": "Actualizar evento",
"Event erstellen": "Crear evento",
"Events": "Eventos",
"Teilnahme": "Participación",
"Du bist nicht eingloggt und musst deshalb den Namen selbst eintippen.": "No has iniciado sesión, por lo que debes escribir el nombre tú mismo.",
"Dein Name": "Tu nombre",
"Name eingeben": "Introducir nombre",
"Ich komme": "Asistiré",
"Absagen": "Cancelar",
"Öffnen/RSVP": "Abrir/RSVP"
}

View File

@@ -135,7 +135,7 @@ new class extends Component {
{{ __('Bearbeiten') }} {{ __('Bearbeiten') }}
</flux:button> </flux:button>
<flux:modal.trigger :name="'remove-meetup-' . $meetup->id"> <flux:modal.trigger :name="'remove-meetup-' . $meetup->id">
<flux:button size="xs" variant="danger" icon="trash"></flux:button> <flux:button class="cursor-pointer" size="xs" variant="danger" icon="trash"></flux:button>
</flux:modal.trigger> </flux:modal.trigger>
</div> </div>
@@ -154,10 +154,10 @@ new class extends Component {
<flux:spacer /> <flux:spacer />
<flux:modal.close> <flux:modal.close>
<flux:button variant="ghost">{{ __('Abbrechen') }}</flux:button> <flux:button class="cursor-pointer" variant="ghost">{{ __('Abbrechen') }}</flux:button>
</flux:modal.close> </flux:modal.close>
<flux:button wire:click="removeMeetup({{ $meetup->id }})" variant="danger">{{ __('Entfernen') }}</flux:button> <flux:button class="cursor-pointer" wire:click="removeMeetup({{ $meetup->id }})" variant="danger">{{ __('Entfernen') }}</flux:button>
</div> </div>
</div> </div>
</flux:modal> </flux:modal>

View File

@@ -152,8 +152,8 @@ new class extends Component {
variant="filled" icon="pencil"> variant="filled" icon="pencil">
{{ __('Bearbeiten') }} {{ __('Bearbeiten') }}
</flux:button> </flux:button>
<flux:button :href="route_with_country('meetups.events.create', ['meetup' => $meetup])" size="xs" variant="ghost" icon="calendar"> <flux:button :href="route_with_country('meetups.events.create', ['meetup' => $meetup])" size="xs" variant="filled" icon="calendar">
{{ __('Events') }} {{ __('Neues Event erstellen') }}
</flux:button> </flux:button>
</flux:table.cell> </flux:table.cell>
</flux:table.row> </flux:table.row>