Merge branch 'main' into issue/mitgliederverwaltung-420
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/promote/production Build is passing

Integrate current main (CSV import, GDPR join-form description, dependency and
tooling bumps) into the bulk-actions-dropdown feature. Gettext catalogs were
reconciled with mix gettext.extract --merge; the CHANGELOG Unreleased entries
of both sides were combined.
This commit is contained in:
Simon 2026-06-04 16:56:27 +02:00
commit 6a6099659b
48 changed files with 3541 additions and 148 deletions

View file

@ -386,6 +386,7 @@ msgstr "Kann jederzeit geändert werden. Änderungen des Betrags betreffen nur z
#: lib/mv_web/live/custom_field_live/form_component.ex
#: lib/mv_web/live/custom_field_live/index_component.ex
#: lib/mv_web/live/group_live/show.ex
#: lib/mv_web/live/import_live/components.ex
#: lib/mv_web/live/member_field_live/form_component.ex
#: lib/mv_web/live/member_live/form.ex
#: lib/mv_web/live/member_live/show.ex
@ -1315,6 +1316,7 @@ msgstr "Feb."
msgid "Fee Type"
msgstr "Beitragsart"
#: lib/mv_web/live/import_live/components.ex
#: lib/mv_web/live/statistics_live.ex
#, elixir-autogen, elixir-format
msgid "Fee type"
@ -1474,6 +1476,7 @@ msgstr "Gruppe erfolgreich gespeichert."
#: lib/mv_web/components/layouts/sidebar.ex
#: lib/mv_web/live/components/member_filter_component.ex
#: lib/mv_web/live/group_live/index.ex
#: lib/mv_web/live/import_live/components.ex
#: lib/mv_web/live/member_live/index.html.heex
#: lib/mv_web/live/member_live/show.ex
#: lib/mv_web/translations/member_fields.ex
@ -2614,6 +2617,7 @@ msgstr "Geprüft von"
msgid "Reviewed at"
msgstr "Geprüft am"
#: lib/mv_web/live/import_live/components.ex
#: lib/mv_web/live/role_live/form.ex
#: lib/mv_web/live/user_live/form.ex
#: lib/mv_web/live/user_live/index.html.heex
@ -3274,11 +3278,6 @@ msgstr "Aufhebung der Verknüpfung geplant"
msgid "Unpaid"
msgstr "Unbezahlt"
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format, fuzzy
msgid "Use the data field name as the CSV column header in your file. Data fields must exist in Mila before importing, because unknown data field columns will be ignored. Groups and membership fees are not supported for import."
msgstr "Verwende die Namen der Datenfelder als Spaltennamen in der CSV-Datei. Datenfelder müssen in Mila bereits angelegt sein, da unbekannte Spaltennamen ignoriert werden. Gruppen und Beitragsstatus können nicht importiert werden."
#: lib/mv_web/live/user_live/form.ex
#, elixir-autogen, elixir-format
msgid "User"
@ -3939,15 +3938,140 @@ msgstr "Zeitraum"
msgid "To"
msgstr "Bis"
#: lib/mv_web/components/bulk_actions_dropdown.ex
#: lib/mv_web/live/member_live/show.ex
#, elixir-autogen, elixir-format
msgid "Export to CSV"
msgstr "Als CSV exportieren"
msgid "Join form:"
msgstr "Beitrittsformular:"
#: lib/mv_web/live/custom_field_live/form_component.ex
#, elixir-autogen, elixir-format
msgid "Description for join form"
msgstr "Beschreibung für das Beitrittsformular"
#: lib/mv_web/live/custom_field_live/form_component.ex
#, elixir-autogen, elixir-format
msgid "You can add links: full addresses (https://…) or as [link text](https://…)."
msgstr "Du kannst Links einfügen: ganze Adressen (https://…) oder als [Linktext](https://…)."
#: lib/mv/membership/import/member_csv.ex
#, elixir-autogen, elixir-format
msgid "Fee type '%{name}' not found; using the default fee type."
msgstr "Beitragsart '%{name}' nicht gefunden; Standard-Beitragsart wird verwendet."
#: lib/mv/membership/import/member_csv.ex
#, elixir-autogen, elixir-format
msgid "Group assignment failed: %{reason}"
msgstr "Gruppenzuordnung fehlgeschlagen: %{reason}"
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Confirm and Import"
msgstr "Bestätigen und importieren"
#: lib/mv_web/live/import_live.ex
#, elixir-autogen, elixir-format
msgid "No prepared import to confirm. Please upload again."
msgstr "Kein vorbereiteter Import zum Bestätigen. Bitte erneut hochladen."
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Preview import"
msgstr "Importvorschau"
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Column"
msgstr "Spalte"
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Custom field"
msgstr "Benutzerdefiniertes Feld"
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Ignored (system-computed field)"
msgstr "Ignoriert (vom System berechnetes Feld)"
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Member field"
msgstr "Mitgliedsfeld"
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Rows with an empty fee type will get the default fee type."
msgstr "Zeilen ohne Beitragsart erhalten die Standard-Beitragsart."
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "These groups will be created automatically: %{names}"
msgstr "Diese Gruppen werden automatisch erstellt: %{names}"
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Unknown (ignored)"
msgstr "Unbekannt (ignoriert)"
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Unknown fee types (members get the default): %{names}"
msgstr "Unbekannte Beitragsarten (Mitglieder erhalten den Standard): %{names}"
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Fee status columns (Membership Fee Status, Bezahlstatus, Mitgliedsbeitragsstatus) are always ignored and cannot be imported."
msgstr "Beitragsstatus-Spalten (Membership Fee Status, Bezahlstatus, Mitgliedsbeitragsstatus) werden immer ignoriert und können nicht importiert werden."
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Groups column (recognized headers): Groups, Gruppen, Gruppe. Comma-separated group names are supported and missing groups are created automatically."
msgstr "Gruppen-Spalte (erkannte Spaltennamen): Groups, Gruppen, Gruppe. Mehrere durch Komma getrennte Gruppennamen werden unterstützt; fehlende Gruppen werden automatisch erstellt."
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Use the data field name as the CSV column header in your file. Data fields must exist in Mila before importing, because unknown data field columns will be ignored."
msgstr "Verwende die Namen der Datenfelder als Spaltennamen in der CSV-Datei. Datenfelder müssen in Mila bereits angelegt sein, da unbekannte Spaltennamen ignoriert werden."
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Fee type column (recognized headers): Fee Type, fee type, fee_type, membership_fee_type, Beitragsart. Unknown fee types fall back to the default."
msgstr "Beitragsart-Spalte (erkannte Spaltennamen): Fee Type, fee type, fee_type, membership_fee_type, Beitragsart. Unbekannte Beitragsarten erhalten die Standard-Beitragsart."
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Create custom field"
msgstr "Datenfeld erstellen"
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Create fee type"
msgstr "Beitragsart erstellen"
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Row 1"
msgstr "Zeile 1"
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Row 2"
msgstr "Zeile 2"
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Row 3"
msgstr "Zeile 3"
#: lib/mv_web/components/bulk_actions_dropdown.ex
#, elixir-autogen, elixir-format
#, elixir-autogen, elixir-format, fuzzy
msgid "Export to CSV"
msgstr "Mitglieder als CSV exportieren"
#: lib/mv_web/components/bulk_actions_dropdown.ex
#, elixir-autogen, elixir-format, fuzzy
msgid "Export to PDF"
msgstr "Als PDF exportieren"
msgstr "Mitglieder als PDF exportieren"
#: lib/mv_web/components/bulk_actions_dropdown.ex
#, elixir-autogen, elixir-format
@ -3958,3 +4082,33 @@ msgstr "Zu viele Empfänger für diese Funktion. Kopiere die Adressen oder expor
#, elixir-autogen, elixir-format
msgid "filtered"
msgstr "gefiltert"
#~ #: lib/mv_web/components/export_dropdown.ex
#~ #, elixir-autogen, elixir-format
#~ msgid "CSV"
#~ msgstr "CSV"
#~ #: lib/mv_web/live/member_live/index.html.heex
#~ #, elixir-autogen, elixir-format
#~ msgid "Copy email addresses of selected members"
#~ msgstr "E-Mail-Adressen der ausgewählten Mitglieder kopieren"
#~ #: lib/mv_web/components/export_dropdown.ex
#~ #, elixir-autogen, elixir-format, fuzzy
#~ msgid "Export"
#~ msgstr "Export"
#~ #: lib/mv_web/live/member_live/index.ex
#~ #, elixir-autogen, elixir-format
#~ msgid "No members selected"
#~ msgstr "Keine Mitglieder ausgewählt"
#~ #: lib/mv_web/live/member_live/index.html.heex
#~ #, elixir-autogen, elixir-format
#~ msgid "Open email program with BCC recipients"
#~ msgstr "E-Mail-Programm mit BCC-Empfänger*innen öffnen"
#~ #: lib/mv_web/components/export_dropdown.ex
#~ #, elixir-autogen, elixir-format
#~ msgid "PDF"
#~ msgstr "PDF"

View file

@ -387,6 +387,7 @@ msgstr ""
#: lib/mv_web/live/custom_field_live/form_component.ex
#: lib/mv_web/live/custom_field_live/index_component.ex
#: lib/mv_web/live/group_live/show.ex
#: lib/mv_web/live/import_live/components.ex
#: lib/mv_web/live/member_field_live/form_component.ex
#: lib/mv_web/live/member_live/form.ex
#: lib/mv_web/live/member_live/show.ex
@ -1316,6 +1317,7 @@ msgstr ""
msgid "Fee Type"
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#: lib/mv_web/live/statistics_live.ex
#, elixir-autogen, elixir-format
msgid "Fee type"
@ -1475,6 +1477,7 @@ msgstr ""
#: lib/mv_web/components/layouts/sidebar.ex
#: lib/mv_web/live/components/member_filter_component.ex
#: lib/mv_web/live/group_live/index.ex
#: lib/mv_web/live/import_live/components.ex
#: lib/mv_web/live/member_live/index.html.heex
#: lib/mv_web/live/member_live/show.ex
#: lib/mv_web/translations/member_fields.ex
@ -2615,6 +2618,7 @@ msgstr ""
msgid "Reviewed at"
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#: lib/mv_web/live/role_live/form.ex
#: lib/mv_web/live/user_live/form.ex
#: lib/mv_web/live/user_live/index.html.heex
@ -3275,11 +3279,6 @@ msgstr ""
msgid "Unpaid"
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Use the data field name as the CSV column header in your file. Data fields must exist in Mila before importing, because unknown data field columns will be ignored. Groups and membership fees are not supported for import."
msgstr ""
#: lib/mv_web/live/user_live/form.ex
#, elixir-autogen, elixir-format
msgid "User"
@ -3939,6 +3938,131 @@ msgstr ""
msgid "To"
msgstr ""
#: lib/mv_web/live/member_live/show.ex
#, elixir-autogen, elixir-format
msgid "Join form:"
msgstr ""
#: lib/mv_web/live/custom_field_live/form_component.ex
#, elixir-autogen, elixir-format
msgid "Description for join form"
msgstr ""
#: lib/mv_web/live/custom_field_live/form_component.ex
#, elixir-autogen, elixir-format
msgid "You can add links: full addresses (https://…) or as [link text](https://…)."
msgstr ""
#: lib/mv/membership/import/member_csv.ex
#, elixir-autogen, elixir-format
msgid "Fee type '%{name}' not found; using the default fee type."
msgstr ""
#: lib/mv/membership/import/member_csv.ex
#, elixir-autogen, elixir-format
msgid "Group assignment failed: %{reason}"
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Confirm and Import"
msgstr ""
#: lib/mv_web/live/import_live.ex
#, elixir-autogen, elixir-format
msgid "No prepared import to confirm. Please upload again."
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Preview import"
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Column"
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Custom field"
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Ignored (system-computed field)"
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Member field"
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Rows with an empty fee type will get the default fee type."
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "These groups will be created automatically: %{names}"
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Unknown (ignored)"
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Unknown fee types (members get the default): %{names}"
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Fee status columns (Membership Fee Status, Bezahlstatus, Mitgliedsbeitragsstatus) are always ignored and cannot be imported."
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Groups column (recognized headers): Groups, Gruppen, Gruppe. Comma-separated group names are supported and missing groups are created automatically."
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Use the data field name as the CSV column header in your file. Data fields must exist in Mila before importing, because unknown data field columns will be ignored."
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Fee type column (recognized headers): Fee Type, fee type, fee_type, membership_fee_type, Beitragsart. Unknown fee types fall back to the default."
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Create custom field"
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Create fee type"
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Row 1"
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Row 2"
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Row 3"
msgstr ""
#: lib/mv_web/components/bulk_actions_dropdown.ex
#, elixir-autogen, elixir-format
msgid "Export to CSV"

View file

@ -387,6 +387,7 @@ msgstr ""
#: lib/mv_web/live/custom_field_live/form_component.ex
#: lib/mv_web/live/custom_field_live/index_component.ex
#: lib/mv_web/live/group_live/show.ex
#: lib/mv_web/live/import_live/components.ex
#: lib/mv_web/live/member_field_live/form_component.ex
#: lib/mv_web/live/member_live/form.ex
#: lib/mv_web/live/member_live/show.ex
@ -1316,6 +1317,7 @@ msgstr ""
msgid "Fee Type"
msgstr "Fee Type"
#: lib/mv_web/live/import_live/components.ex
#: lib/mv_web/live/statistics_live.ex
#, elixir-autogen, elixir-format, fuzzy
msgid "Fee type"
@ -1475,6 +1477,7 @@ msgstr ""
#: lib/mv_web/components/layouts/sidebar.ex
#: lib/mv_web/live/components/member_filter_component.ex
#: lib/mv_web/live/group_live/index.ex
#: lib/mv_web/live/import_live/components.ex
#: lib/mv_web/live/member_live/index.html.heex
#: lib/mv_web/live/member_live/show.ex
#: lib/mv_web/translations/member_fields.ex
@ -2615,6 +2618,7 @@ msgstr "Review by"
msgid "Reviewed at"
msgstr "Review date"
#: lib/mv_web/live/import_live/components.ex
#: lib/mv_web/live/role_live/form.ex
#: lib/mv_web/live/user_live/form.ex
#: lib/mv_web/live/user_live/index.html.heex
@ -3275,11 +3279,6 @@ msgstr ""
msgid "Unpaid"
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format, fuzzy
msgid "Use the data field name as the CSV column header in your file. Data fields must exist in Mila before importing, because unknown data field columns will be ignored. Groups and membership fees are not supported for import."
msgstr ""
#: lib/mv_web/live/user_live/form.ex
#, elixir-autogen, elixir-format
msgid "User"
@ -3939,6 +3938,131 @@ msgstr ""
msgid "To"
msgstr ""
#: lib/mv_web/live/member_live/show.ex
#, elixir-autogen, elixir-format, fuzzy
msgid "Join form:"
msgstr ""
#: lib/mv_web/live/custom_field_live/form_component.ex
#, elixir-autogen, elixir-format, fuzzy
msgid "Description for join form"
msgstr ""
#: lib/mv_web/live/custom_field_live/form_component.ex
#, elixir-autogen, elixir-format
msgid "You can add links: full addresses (https://…) or as [link text](https://…)."
msgstr ""
#: lib/mv/membership/import/member_csv.ex
#, elixir-autogen, elixir-format
msgid "Fee type '%{name}' not found; using the default fee type."
msgstr ""
#: lib/mv/membership/import/member_csv.ex
#, elixir-autogen, elixir-format
msgid "Group assignment failed: %{reason}"
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Confirm and Import"
msgstr ""
#: lib/mv_web/live/import_live.ex
#, elixir-autogen, elixir-format
msgid "No prepared import to confirm. Please upload again."
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Preview import"
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Column"
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format, fuzzy
msgid "Custom field"
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Ignored (system-computed field)"
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format, fuzzy
msgid "Member field"
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Rows with an empty fee type will get the default fee type."
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "These groups will be created automatically: %{names}"
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format, fuzzy
msgid "Unknown (ignored)"
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Unknown fee types (members get the default): %{names}"
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Fee status columns (Membership Fee Status, Bezahlstatus, Mitgliedsbeitragsstatus) are always ignored and cannot be imported."
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Groups column (recognized headers): Groups, Gruppen, Gruppe. Comma-separated group names are supported and missing groups are created automatically."
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format, fuzzy
msgid "Use the data field name as the CSV column header in your file. Data fields must exist in Mila before importing, because unknown data field columns will be ignored."
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format, fuzzy
msgid "Fee type column (recognized headers): Fee Type, fee type, fee_type, membership_fee_type, Beitragsart. Unknown fee types fall back to the default."
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Create custom field"
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Create fee type"
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Row 1"
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Row 2"
msgstr ""
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Row 3"
msgstr ""
#: lib/mv_web/components/bulk_actions_dropdown.ex
#, elixir-autogen, elixir-format, fuzzy
msgid "Export to CSV"
@ -3958,3 +4082,33 @@ msgstr ""
#, elixir-autogen, elixir-format
msgid "filtered"
msgstr ""
#~ #: lib/mv_web/components/export_dropdown.ex
#~ #, elixir-autogen, elixir-format
#~ msgid "CSV"
#~ msgstr ""
#~ #: lib/mv_web/live/member_live/index.html.heex
#~ #, elixir-autogen, elixir-format
#~ msgid "Copy email addresses of selected members"
#~ msgstr ""
#~ #: lib/mv_web/components/export_dropdown.ex
#~ #, elixir-autogen, elixir-format, fuzzy
#~ msgid "Export"
#~ msgstr ""
#~ #: lib/mv_web/live/member_live/index.ex
#~ #, elixir-autogen, elixir-format, fuzzy
#~ msgid "No members selected"
#~ msgstr ""
#~ #: lib/mv_web/live/member_live/index.html.heex
#~ #, elixir-autogen, elixir-format
#~ msgid "Open email program with BCC recipients"
#~ msgstr ""
#~ #: lib/mv_web/components/export_dropdown.ex
#~ #, elixir-autogen, elixir-format
#~ msgid "PDF"
#~ msgstr ""