From ed961f7585984d4f891d11bf4595e79a7322c5e3 Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 3 Dec 2025 13:34:44 +0100 Subject: [PATCH 1/2] Redesign member view/edit UI with improved accessibility - Group fields into Personal Data, Custom Fields, and Payment Data sections - Fix WCAG AA contrast issues and semantic HTML (dt/dd in dl) - Format mailto links with member name in href attribute --- lib/mv_web/live/member_live/form.ex | 284 ++++++++--- lib/mv_web/live/member_live/show.ex | 347 ++++++++++--- priv/gettext/de/LC_MESSAGES/default.po | 673 ++++++------------------- priv/gettext/default.pot | 617 +++++------------------ priv/gettext/en/LC_MESSAGES/default.po | 643 +++++------------------ 5 files changed, 922 insertions(+), 1642 deletions(-) diff --git a/lib/mv_web/live/member_live/form.ex b/lib/mv_web/live/member_live/form.ex index 5370154..4781cd5 100644 --- a/lib/mv_web/live/member_live/form.ex +++ b/lib/mv_web/live/member_live/form.ex @@ -5,80 +5,212 @@ defmodule MvWeb.MemberLive.Form do ## Features - Create new members with personal information - Edit existing member details - - Manage custom properties (dynamic fields) + - Grouped sections for better organization + - Tab navigation (Payments tab disabled, coming soon) + - Manage custom properties (dynamic fields, displayed sorted by name) - Real-time validation with visual feedback - - Link/unlink user accounts - ## Form Fields - **Required:** - - first_name, last_name, email - - **Optional:** - - phone_number, address fields (city, street, house_number, postal_code) - - join_date, exit_date - - paid status - - notes - - ## Custom Field Values - Members can have dynamic custom field values defined by CustomFields. - The form dynamically renders inputs based on available CustomFields. + ## Form Sections + - Personal Data: Name, address, contact information, membership dates, notes + - Custom Fields: Dynamic fields in uniform grid layout (displayed sorted by name) + - Payment Data: Mockup section (not editable) ## Events - `validate` - Real-time form validation - `save` - Submit form (create or update member) - - Custom field value management events for adding/removing custom fields """ use MvWeb, :live_view @impl true def render(assigns) do + # Sort custom fields by name for display only + sorted_custom_fields = Enum.sort_by(assigns.custom_fields, & &1.name) + assigns = assign(assigns, :sorted_custom_fields, sorted_custom_fields) + ~H""" - <.header> - {@page_title} - <:subtitle> - {gettext("Fields marked with an asterisk (*) cannot be empty.")} - - - <.form for={@form} id="member-form" phx-change="validate" phx-submit="save"> - <.input field={@form[:first_name]} label={gettext("First Name")} required /> - <.input field={@form[:last_name]} label={gettext("Last Name")} required /> - <.input field={@form[:email]} label={gettext("Email")} required type="email" /> - <.input field={@form[:paid]} label={gettext("Paid")} type="checkbox" /> - <.input field={@form[:phone_number]} label={gettext("Phone Number")} /> - <.input field={@form[:join_date]} label={gettext("Join Date")} type="date" /> - <.input field={@form[:exit_date]} label={gettext("Exit Date")} type="date" /> - <.input field={@form[:notes]} label={gettext("Notes")} /> - <.input field={@form[:city]} label={gettext("City")} /> - <.input field={@form[:street]} label={gettext("Street")} /> - <.input field={@form[:house_number]} label={gettext("House Number")} /> - <.input field={@form[:postal_code]} label={gettext("Postal Code")} /> + <%!-- Header with Back button, Name display, and Save button --%> +
+ <.button navigate={return_path(@return_to, @member)} type="button"> + <.icon name="hero-arrow-left" class="size-4" /> + {gettext("Back")} + -

{gettext("Custom Field Values")}

- <.inputs_for :let={f_custom_field_value} field={@form[:custom_field_values]}> - <% type = - Enum.find(@custom_fields, &(&1.id == f_custom_field_value[:custom_field_id].value)) %> - <.inputs_for :let={value_form} field={f_custom_field_value[:value]}> - <% input_type = - cond do - type && type.value_type == :boolean -> "checkbox" - type && type.value_type == :date -> :date - true -> :text - end %> - <.input field={value_form[:value]} label={type && type.name} type={input_type} /> - - - +

+ <%= if @member do %> + {@member.first_name} {@member.last_name} + <% else %> + {gettext("New Member")} + <% end %> +

- <.button phx-disable-with={gettext("Saving...")} variant="primary"> - {gettext("Save Member")} - - <.button navigate={return_path(@return_to, @member)}>{gettext("Cancel")} + <.button phx-disable-with={gettext("Saving...")} variant="primary" type="submit"> + {gettext("Save")} + +
+ + <%!-- Tab Navigation --%> +
+ + +
+ + <%!-- Personal Data and Custom Fields Row --%> +
+ <%!-- Personal Data Section --%> +
+ <.form_section title={gettext("Personal Data")}> +
+ <%!-- Name Row --%> +
+
+ <.input field={@form[:first_name]} label={gettext("First Name")} required /> +
+
+ <.input field={@form[:last_name]} label={gettext("Last Name")} required /> +
+
+ + <%!-- Address Row --%> +
+
+ <.input field={@form[:street]} label={gettext("Street")} /> +
+
+ <.input field={@form[:house_number]} label={gettext("Nr.")} /> +
+
+ <.input field={@form[:postal_code]} label={gettext("Postal Code")} /> +
+
+ <.input field={@form[:city]} label={gettext("City")} /> +
+
+ + <%!-- Email --%> +
+ <.input field={@form[:email]} label={gettext("Email")} required type="email" /> +
+ + <%!-- Phone --%> +
+ <.input field={@form[:phone_number]} label={gettext("Phone")} type="tel" /> +
+ + <%!-- Membership Dates Row --%> +
+
+ <.input field={@form[:join_date]} label={gettext("Join Date")} type="date" /> +
+
+ <.input field={@form[:exit_date]} label={gettext("Exit Date")} type="date" /> +
+
+ + <%!-- Notes --%> +
+ <.input field={@form[:notes]} label={gettext("Notes")} type="textarea" /> +
+
+ +
+ + <%!-- Custom Fields Section --%> + <%= if Enum.any?(@custom_fields) do %> +
+ <.form_section title={gettext("Custom Fields")}> +
+ <%!-- Render in sorted order by finding the form for each sorted custom field --%> + <%= for cf <- @sorted_custom_fields do %> + <.inputs_for :let={f_cfv} field={@form[:custom_field_values]}> + <%= if f_cfv[:custom_field_id].value == cf.id do %> +
+ <.inputs_for :let={value_form} field={f_cfv[:value]}> + <.input + field={value_form[:value]} + label={cf.name} + type={custom_field_input_type(cf.value_type)} + /> + + +
+ <% end %> + + <% end %> +
+ +
+ <% end %> +
+ + <%!-- Payment Data Section (Mockup) --%> +
+ <.form_section title={gettext("Payment Data")}> + + +
+
+ + +
+
+ +
+ + +
+
+
+ <.input field={@form[:paid]} label={gettext("Paid")} type="checkbox" /> +
+
+ +
+ + <%!-- Bottom Action Buttons --%> +
+ <.button navigate={return_path(@return_to, @member)} type="button"> + {gettext("Cancel")} + + <.button phx-disable-with={gettext("Saving...")} variant="primary" type="submit"> + {gettext("Save Member")} + +
""" @@ -106,8 +238,8 @@ defmodule MvWeb.MemberLive.Form do id -> Ash.get!(Mv.Membership.Member, id) end - action = if is_nil(member), do: "New", else: "Edit" - page_title = action <> " " <> "Member" + action = if is_nil(member), do: gettext("New"), else: gettext("Edit") + page_title = "#{action} #{gettext("Member")}" {:ok, socket @@ -213,5 +345,37 @@ defmodule MvWeb.MemberLive.Form do end defp return_path("index", _member), do: ~p"/members" + defp return_path("show", nil), do: ~p"/members" defp return_path("show", member), do: ~p"/members/#{member.id}" + + # ----------------------------------------------------------------- + # Helper Components + # ----------------------------------------------------------------- + + # Renders a form section box with border and title. + attr :title, :string, required: true + slot :inner_block, required: true + + defp form_section(assigns) do + ~H""" +
+

{@title}

+
+ {render_slot(@inner_block)} +
+
+ """ + end + + # ----------------------------------------------------------------- + # Helper Functions for Custom Fields + # ----------------------------------------------------------------- + + # Returns input type for custom field based on value type + defp custom_field_input_type(:string), do: "text" + defp custom_field_input_type(:integer), do: "number" + defp custom_field_input_type(:boolean), do: "checkbox" + defp custom_field_input_type(:date), do: "date" + defp custom_field_input_type(:email), do: "email" + defp custom_field_input_type(_), do: "text" end diff --git a/lib/mv_web/live/member_live/show.ex b/lib/mv_web/live/member_live/show.ex index 7601f46..55d8991 100644 --- a/lib/mv_web/live/member_live/show.ex +++ b/lib/mv_web/live/member_live/show.ex @@ -3,19 +3,16 @@ defmodule MvWeb.MemberLive.Show do LiveView for displaying a single member's details. ## Features - - Display all member information (personal, contact, address) - - Show linked user account (if exists) - - Display custom field values + - Display all member information in grouped sections + - Tab navigation for future features (Payments) + - Show custom field values with type-based formatting - Navigate to edit form - Return to member list - ## Displayed Information - - Basic: name, email, dates (join, exit) - - Contact: phone number - - Address: street, house number, postal code, city - - Status: paid flag - - Relationships: linked user account - - Custom: dynamic custom field values from CustomFields + ## Sections + - Personal Data: Name, address, contact information, membership dates, notes + - Custom Fields: Dynamic fields in uniform grid layout (sorted by name) + - Payment Data: Mockup section with placeholder data ## Navigation - Back to member list @@ -23,69 +20,155 @@ defmodule MvWeb.MemberLive.Show do """ use MvWeb, :live_view import Ash.Query - alias MvWeb.Helpers.DateFormatter @impl true def render(assigns) do ~H""" - <.header> - {@member.first_name} {@member.last_name} - <:subtitle>{gettext("This is a member record from your database.")} + <%!-- Header with Back button, Name, and Edit button --%> +
+ <.button navigate={~p"/members"} aria-label={gettext("Back to members list")}> + <.icon name="hero-arrow-left" class="size-4" /> + {gettext("Back")} + - <:actions> - <.button navigate={~p"/members"} aria-label={gettext("Back to members list")}> - <.icon name="hero-arrow-left" /> - {gettext("Back to members list")} - - <.button variant="primary" navigate={~p"/members/#{@member}/edit?return_to=show"}> - <.icon name="hero-pencil-square" /> {gettext("Edit Member")} - - - +

+ {@member.first_name} {@member.last_name} +

- <.list> - <:item title={gettext("Id")}>{@member.id} - <:item title={gettext("First Name")}>{@member.first_name} - <:item title={gettext("Last Name")}>{@member.last_name} - <:item title={gettext("Email")}>{@member.email} - <:item title={gettext("Paid")}> - {if @member.paid, do: gettext("Yes"), else: gettext("No")} - - <:item title={gettext("Phone Number")}>{@member.phone_number} - <:item title={gettext("Join Date")}>{DateFormatter.format_date(@member.join_date)} - <:item title={gettext("Exit Date")}>{DateFormatter.format_date(@member.exit_date)} - <:item title={gettext("Notes")}>{@member.notes} - <:item title={gettext("City")}>{@member.city} - <:item title={gettext("Street")}>{@member.street} - <:item title={gettext("House Number")}>{@member.house_number} - <:item title={gettext("Postal Code")}>{@member.postal_code} - <:item title={gettext("Linked User")}> - <%= if @member.user do %> - <.link - navigate={~p"/users/#{@member.user}"} - class="text-blue-600 hover:text-blue-800 underline" - > - <.icon name="hero-user" class="h-4 w-4 inline mr-1" /> - {@member.user.email} - - <% else %> - {gettext("No user linked")} - <% end %> - - + <.button variant="primary" navigate={~p"/members/#{@member}/edit?return_to=show"}> + {gettext("Edit Member")} + +
-

{gettext("Custom Field Values")}

- <.generic_list items={ - Enum.map(@member.custom_field_values, fn cfv -> - { - # name - cfv.custom_field && cfv.custom_field.name, - # value - format_custom_field_value(cfv) - } - end) - } /> + <%!-- Tab Navigation --%> +
+ + +
+ + <%!-- Personal Data and Custom Fields Row --%> +
+ <%!-- Personal Data Section --%> +
+ <.section_box title={gettext("Personal Data")}> +
+ <%!-- Name Row --%> +
+ <.data_field label={gettext("First Name")} value={@member.first_name} class="w-48" /> + <.data_field label={gettext("Last Name")} value={@member.last_name} class="w-48" /> +
+ + <%!-- Address --%> +
+ <.data_field label={gettext("Address")} value={format_address(@member)} /> +
+ + <%!-- Email --%> +
+ <.data_field label={gettext("Email")}> + + {@member.email} + + +
+ + <%!-- Phone --%> +
+ <.data_field label={gettext("Phone")} value={@member.phone_number} /> +
+ + <%!-- Membership Dates Row --%> +
+ <.data_field + label={gettext("Join Date")} + value={format_date(@member.join_date)} + class="w-28" + /> + <.data_field + label={gettext("Exit Date")} + value={format_date(@member.exit_date)} + class="w-28" + /> +
+ + <%!-- Linked User --%> +
+ <.data_field label={gettext("Linked User")}> + <%= if @member.user do %> + <.link + navigate={~p"/users/#{@member.user}"} + class="text-blue-700 hover:text-blue-800 underline inline-flex items-center gap-1" + > + <.icon name="hero-user" class="size-4" /> + {@member.user.email} + + <% else %> + {gettext("No user linked")} + <% end %> + +
+ + <%!-- Notes --%> + <%= if @member.notes && String.trim(@member.notes) != "" do %> +
+ <.data_field label={gettext("Notes")}> +

{@member.notes}

+ +
+ <% end %> +
+ +
+ + <%!-- Custom Fields Section --%> + <%= if Enum.any?(@member.custom_field_values) do %> +
+ <.section_box title={gettext("Custom Fields")}> +
+ <%= for cfv <- sort_custom_field_values(@member.custom_field_values) do %> + <% custom_field = cfv.custom_field %> + <% value_type = custom_field && custom_field.value_type %> + <.data_field label={custom_field && custom_field.name}> + {format_custom_field_value(cfv.value, value_type)} + + <% end %> +
+ +
+ <% end %> +
+ + <%!-- Payment Data Section (Mockup) --%> +
+ <.section_box title={gettext("Payment Data")}> + + +
+ <.data_field label={gettext("Contribution")} value="72 €" class="w-24" /> + <.data_field label={gettext("Payment Cycle")} value={gettext("monthly")} class="w-28" /> + <.data_field label={gettext("Paid")} class="w-24"> + <%= if @member.paid do %> + {gettext("Paid")} + <% else %> + {gettext("Pending")} + <% end %> + +
+ +
""" end @@ -113,16 +196,132 @@ defmodule MvWeb.MemberLive.Show do defp page_title(:show), do: gettext("Show Member") defp page_title(:edit), do: gettext("Edit Member") - defp format_custom_field_value(cfv) do - value = - case cfv.value do - %{value: v} -> v - v -> v - end + # ----------------------------------------------------------------- + # Helper Components + # ----------------------------------------------------------------- - case value do - %Date{} = date -> DateFormatter.format_date(date) - other -> other + # Renders a section box with border and title. + attr :title, :string, required: true + slot :inner_block, required: true + + defp section_box(assigns) do + ~H""" +
+

{@title}

+
+ {render_slot(@inner_block)} +
+
+ """ + end + + # Renders a labeled data field. + attr :label, :string, required: true + attr :value, :string, default: nil + attr :class, :string, default: "" + slot :inner_block + + defp data_field(assigns) do + ~H""" +
+
{@label}
+
+ <%= if @inner_block != [] do %> + {render_slot(@inner_block)} + <% else %> + {display_value(@value)} + <% end %> +
+
+ """ + end + + # ----------------------------------------------------------------- + # Helper Functions + # ----------------------------------------------------------------- + + defp display_value(nil), do: "—" + defp display_value(""), do: "—" + defp display_value(value), do: value + + defp format_email_mailto(first_name, last_name, email) do + name = + [first_name, last_name] + |> Enum.filter(&(&1 && &1 != "")) + |> Enum.join(" ") + + if name != "" do + "#{name} <#{email}>" + else + email end end + + defp format_address(member) do + street_part = + [member.street, member.house_number] + |> Enum.filter(&(&1 && &1 != "")) + |> Enum.join(" ") + + city_part = + [member.postal_code, member.city] + |> Enum.filter(&(&1 && &1 != "")) + |> Enum.join(" ") + + [street_part, city_part] + |> Enum.filter(&(&1 != "")) + |> Enum.join(", ") + |> case do + "" -> nil + address -> address + end + end + + defp format_date(nil), do: nil + + defp format_date(%Date{} = date) do + Calendar.strftime(date, "%d.%m.%Y") + end + + defp format_date(date), do: to_string(date) + + # Sorts custom field values by custom field name + defp sort_custom_field_values(custom_field_values) do + Enum.sort_by(custom_field_values, fn cfv -> + (cfv.custom_field && cfv.custom_field.name) || "" + end) + end + + # Formats custom field value based on type + defp format_custom_field_value(%Ash.Union{value: value, type: type}, _expected_type) do + format_custom_field_value(value, type) + end + + defp format_custom_field_value(nil, _type), do: "—" + + defp format_custom_field_value(value, :boolean) when is_boolean(value) do + if value, do: gettext("Yes"), else: gettext("No") + end + + defp format_custom_field_value(%Date{} = date, :date) do + Calendar.strftime(date, "%d.%m.%Y") + end + + defp format_custom_field_value(value, :email) when is_binary(value) do + assigns = %{email: value} + + ~H""" + {@email} + """ + end + + defp format_custom_field_value(value, :integer) when is_integer(value) do + Integer.to_string(value) + end + + defp format_custom_field_value(value, _type) when is_binary(value) do + if String.trim(value) == "", do: "—", else: value + end + + defp format_custom_field_value(value, _type), do: to_string(value) end diff --git a/priv/gettext/de/LC_MESSAGES/default.po b/priv/gettext/de/LC_MESSAGES/default.po index 607ad9e..c6f2028 100644 --- a/priv/gettext/de/LC_MESSAGES/default.po +++ b/priv/gettext/de/LC_MESSAGES/default.po @@ -10,14 +10,13 @@ msgid "" msgstr "" "Language: en\n" -#: lib/mv_web/components/core_components.ex:387 -#: lib/mv_web/live/contribution_period_live/show.ex:141 +#: lib/mv_web/components/core_components.ex:386 #, elixir-autogen, elixir-format msgid "Actions" msgstr "Aktionen" #: lib/mv_web/live/member_live/index.html.heex:248 -#: lib/mv_web/live/user_live/index.html.heex:71 +#: lib/mv_web/live/user_live/index.html.heex:72 #, elixir-autogen, elixir-format msgid "Are you sure?" msgstr "Bist du sicher?" @@ -28,71 +27,69 @@ msgstr "Bist du sicher?" msgid "Attempting to reconnect" msgstr "Verbindung wird wiederhergestellt" -#: lib/mv_web/live/member_live/form.ex:53 +#: lib/mv_web/live/member_live/form.ex:100 #: lib/mv_web/live/member_live/index.html.heex:184 -#: lib/mv_web/live/member_live/show.ex:59 #, elixir-autogen, elixir-format msgid "City" msgstr "Stadt" -#: lib/mv_web/live/contribution_type_live/index.ex:78 #: lib/mv_web/live/member_live/index.html.heex:250 -#: lib/mv_web/live/user_live/index.html.heex:73 +#: lib/mv_web/live/user_live/index.html.heex:74 #, elixir-autogen, elixir-format msgid "Delete" msgstr "Löschen" -#: lib/mv_web/live/contribution_type_live/index.ex:66 +#: lib/mv_web/live/member_live/form.ex:241 #: lib/mv_web/live/member_live/index.html.heex:242 -#: lib/mv_web/live/user_live/form.ex:267 -#: lib/mv_web/live/user_live/index.html.heex:65 +#: lib/mv_web/live/user_live/form.ex:265 +#: lib/mv_web/live/user_live/index.html.heex:66 #, elixir-autogen, elixir-format msgid "Edit" -msgstr "Bearbeiten" +msgstr "Bearbeite" -#: lib/mv_web/live/member_live/show.ex:42 -#: lib/mv_web/live/member_live/show.ex:114 +#: lib/mv_web/live/member_live/show.ex:40 +#: lib/mv_web/live/member_live/show.ex:197 #, elixir-autogen, elixir-format msgid "Edit Member" msgstr "Mitglied bearbeiten" -#: lib/mv_web/live/contribution_period_live/show.ex:58 -#: lib/mv_web/live/member_live/form.ex:47 +#: lib/mv_web/live/member_live/form.ex:106 #: lib/mv_web/live/member_live/index.html.heex:112 -#: lib/mv_web/live/member_live/show.ex:51 +#: lib/mv_web/live/member_live/show.ex:75 #: lib/mv_web/live/user_live/form.ex:46 #: lib/mv_web/live/user_live/index.html.heex:44 -#: lib/mv_web/live/user_live/show.ex:49 +#: lib/mv_web/live/user_live/show.ex:50 #, elixir-autogen, elixir-format msgid "Email" msgstr "E-Mail" -#: lib/mv_web/live/member_live/form.ex:45 -#: lib/mv_web/live/member_live/show.ex:49 +#: lib/mv_web/live/member_live/form.ex:81 +#: lib/mv_web/live/member_live/show.ex:64 #, elixir-autogen, elixir-format msgid "First Name" msgstr "Vorname" -#: lib/mv_web/live/member_live/form.ex:50 +#: lib/mv_web/live/member_live/form.ex:117 #: lib/mv_web/live/member_live/index.html.heex:220 -#: lib/mv_web/live/member_live/show.ex:56 +#: lib/mv_web/live/member_live/show.ex:93 #, elixir-autogen, elixir-format msgid "Join Date" msgstr "Beitrittsdatum" -#: lib/mv_web/live/member_live/form.ex:46 -#: lib/mv_web/live/member_live/show.ex:50 +#: lib/mv_web/live/member_live/form.ex:84 +#: lib/mv_web/live/member_live/show.ex:65 #, elixir-autogen, elixir-format msgid "Last Name" msgstr "Nachname" +#: lib/mv_web/live/member_live/form.ex:44 #: lib/mv_web/live/member_live/index.html.heex:29 #, elixir-autogen, elixir-format msgid "New Member" msgstr "Neues Mitglied" #: lib/mv_web/live/member_live/index.html.heex:239 -#: lib/mv_web/live/user_live/index.html.heex:62 +#: lib/mv_web/live/user_live/index.html.heex:63 #, elixir-autogen, elixir-format msgid "Show" msgstr "Anzeigen" @@ -112,52 +109,45 @@ msgstr "Keine Internetverbindung gefunden" msgid "close" msgstr "schließen" -#: lib/mv_web/live/member_live/form.ex:51 -#: lib/mv_web/live/member_live/show.ex:57 +#: lib/mv_web/live/member_live/form.ex:120 +#: lib/mv_web/live/member_live/show.ex:98 #, elixir-autogen, elixir-format msgid "Exit Date" msgstr "Austrittsdatum" -#: lib/mv_web/live/member_live/form.ex:55 #: lib/mv_web/live/member_live/index.html.heex:148 -#: lib/mv_web/live/member_live/show.ex:61 #, elixir-autogen, elixir-format msgid "House Number" msgstr "Hausnummer" -#: lib/mv_web/live/contribution_period_live/show.ex:140 -#: lib/mv_web/live/member_live/form.ex:52 -#: lib/mv_web/live/member_live/show.ex:58 +#: lib/mv_web/live/member_live/form.ex:126 +#: lib/mv_web/live/member_live/show.ex:124 #, elixir-autogen, elixir-format msgid "Notes" msgstr "Notizen" #: lib/mv_web/live/components/payment_filter_component.ex:94 #: lib/mv_web/live/components/payment_filter_component.ex:144 -#: lib/mv_web/live/contribution_period_live/show.ex:186 -#: lib/mv_web/live/contribution_period_live/show.ex:241 -#: lib/mv_web/live/member_live/form.ex:48 +#: lib/mv_web/live/member_live/form.ex:199 #: lib/mv_web/live/member_live/index.html.heex:229 -#: lib/mv_web/live/member_live/show.ex:52 +#: lib/mv_web/live/member_live/show.ex:162 +#: lib/mv_web/live/member_live/show.ex:164 #, elixir-autogen, elixir-format msgid "Paid" msgstr "Bezahlt" -#: lib/mv_web/live/member_live/form.ex:49 #: lib/mv_web/live/member_live/index.html.heex:202 -#: lib/mv_web/live/member_live/show.ex:55 #, elixir-autogen, elixir-format msgid "Phone Number" msgstr "Telefonnummer" -#: lib/mv_web/live/member_live/form.ex:56 +#: lib/mv_web/live/member_live/form.ex:97 #: lib/mv_web/live/member_live/index.html.heex:166 -#: lib/mv_web/live/member_live/show.ex:62 #, elixir-autogen, elixir-format msgid "Postal Code" msgstr "Postleitzahl" -#: lib/mv_web/live/member_live/form.ex:79 +#: lib/mv_web/live/member_live/form.ex:211 #, elixir-autogen, elixir-format msgid "Save Member" msgstr "Mitglied speichern" @@ -165,58 +155,48 @@ msgstr "Mitglied speichern" #: lib/mv_web/live/custom_field_live/form.ex:66 #: lib/mv_web/live/custom_field_value_live/form.ex:74 #: lib/mv_web/live/global_settings_live.ex:55 -#: lib/mv_web/live/member_live/form.ex:78 -#: lib/mv_web/live/user_live/form.ex:249 +#: lib/mv_web/live/member_live/form.ex:48 +#: lib/mv_web/live/member_live/form.ex:210 +#: lib/mv_web/live/user_live/form.ex:248 #, elixir-autogen, elixir-format msgid "Saving..." msgstr "Speichern..." -#: lib/mv_web/live/member_live/form.ex:54 +#: lib/mv_web/live/member_live/form.ex:91 #: lib/mv_web/live/member_live/index.html.heex:130 -#: lib/mv_web/live/member_live/show.ex:60 #, elixir-autogen, elixir-format msgid "Street" msgstr "Straße" -#: lib/mv_web/live/member_live/show.ex:48 -#, elixir-autogen, elixir-format -msgid "Id" -msgstr "ID" - #: lib/mv_web/live/member_live/index.html.heex:234 -#: lib/mv_web/live/member_live/index/formatter.ex:62 -#: lib/mv_web/live/member_live/show.ex:53 +#: lib/mv_web/live/member_live/index/formatter.ex:61 +#: lib/mv_web/live/member_live/show.ex:303 #, elixir-autogen, elixir-format msgid "No" msgstr "Nein" -#: lib/mv_web/live/member_live/show.ex:113 +#: lib/mv_web/live/member_live/show.ex:196 #, elixir-autogen, elixir-format, fuzzy msgid "Show Member" msgstr "Mitglied anzeigen" -#: lib/mv_web/live/member_live/show.ex:34 -#, elixir-autogen, elixir-format -msgid "This is a member record from your database." -msgstr "Dies ist ein Mitglied aus deiner Datenbank." - #: lib/mv_web/live/member_live/index.html.heex:234 -#: lib/mv_web/live/member_live/index/formatter.ex:61 -#: lib/mv_web/live/member_live/show.ex:53 +#: lib/mv_web/live/member_live/index/formatter.ex:60 +#: lib/mv_web/live/member_live/show.ex:303 #, elixir-autogen, elixir-format msgid "Yes" msgstr "Ja" #: lib/mv_web/live/custom_field_live/form.ex:110 #: lib/mv_web/live/custom_field_value_live/form.ex:233 -#: lib/mv_web/live/member_live/form.ex:137 +#: lib/mv_web/live/member_live/form.ex:269 #, elixir-autogen, elixir-format msgid "create" msgstr "erstellt" #: lib/mv_web/live/custom_field_live/form.ex:111 #: lib/mv_web/live/custom_field_value_live/form.ex:234 -#: lib/mv_web/live/member_live/form.ex:138 +#: lib/mv_web/live/member_live/form.ex:270 #, elixir-autogen, elixir-format msgid "update" msgstr "aktualisiert" @@ -226,7 +206,7 @@ msgstr "aktualisiert" msgid "Incorrect email or password" msgstr "Falsche E-Mail oder Passwort" -#: lib/mv_web/live/member_live/form.ex:144 +#: lib/mv_web/live/member_live/form.ex:276 #, elixir-autogen, elixir-format msgid "Member %{action} successfully" msgstr "Mitglied %{action} erfolgreich" @@ -259,8 +239,8 @@ msgstr "Ihr Passwort wurde erfolgreich zurückgesetzt" #: lib/mv_web/live/custom_field_live/form.ex:69 #: lib/mv_web/live/custom_field_live/index.ex:120 #: lib/mv_web/live/custom_field_value_live/form.ex:77 -#: lib/mv_web/live/member_live/form.ex:81 -#: lib/mv_web/live/user_live/form.ex:252 +#: lib/mv_web/live/member_live/form.ex:208 +#: lib/mv_web/live/user_live/form.ex:251 #, elixir-autogen, elixir-format msgid "Cancel" msgstr "Abbrechen" @@ -280,17 +260,22 @@ msgstr "Beschreibung" msgid "Edit User" msgstr "Benutzer*in bearbeiten" -#: lib/mv_web/live/user_live/show.ex:51 +#: lib/mv_web/live/user_live/show.ex:53 #, elixir-autogen, elixir-format msgid "Enabled" msgstr "Aktiviert" +#: lib/mv_web/live/user_live/show.ex:49 +#, elixir-autogen, elixir-format +msgid "ID" +msgstr "ID" + #: lib/mv_web/live/custom_field_live/form.ex:62 #, elixir-autogen, elixir-format msgid "Immutable" msgstr "Unveränderlich" -#: lib/mv_web/components/layouts/navbar.ex:113 +#: lib/mv_web/components/layouts/navbar.ex:102 #, elixir-autogen, elixir-format msgid "Logout" msgstr "Abmelden" @@ -302,19 +287,18 @@ msgid "Listing Users" msgstr "Benutzer*innen auflisten" #: lib/mv_web/live/custom_field_value_live/form.ex:60 +#: lib/mv_web/live/member_live/form.ex:242 #, elixir-autogen, elixir-format msgid "Member" msgstr "Mitglied" #: lib/mv_web/components/layouts/navbar.ex:25 -#: lib/mv_web/live/contribution_type_live/index.ex:61 -#: lib/mv_web/live/member_live/index.ex:74 +#: lib/mv_web/live/member_live/index.ex:73 #: lib/mv_web/live/member_live/index.html.heex:3 #, elixir-autogen, elixir-format msgid "Members" msgstr "Mitglieder" -#: lib/mv_web/live/contribution_type_live/index.ex:48 #: lib/mv_web/live/custom_field_live/form.ex:51 #, elixir-autogen, elixir-format msgid "Name" @@ -325,12 +309,16 @@ msgstr "Name" msgid "New User" msgstr "Neue*r Benutzer*in" -#: lib/mv_web/live/user_live/show.ex:51 +#: lib/mv_web/live/user_live/show.ex:53 #, elixir-autogen, elixir-format msgid "Not enabled" msgstr "Nicht aktiviert" -#: lib/mv_web/live/contribution_period_live/show.ex:207 +#: lib/mv_web/live/user_live/show.ex:51 +#, elixir-autogen, elixir-format +msgid "Not set" +msgstr "Nicht gesetzt" + #: lib/mv_web/live/user_live/form.ex:107 #: lib/mv_web/live/user_live/form.ex:115 #: lib/mv_web/live/user_live/form.ex:224 @@ -338,12 +326,18 @@ msgstr "Nicht aktiviert" msgid "Note" msgstr "Hinweis" -#: lib/mv_web/live/user_live/show.ex:50 +#: lib/mv_web/live/user_live/index.html.heex:52 +#: lib/mv_web/live/user_live/show.ex:51 +#, elixir-autogen, elixir-format +msgid "OIDC ID" +msgstr "OIDC ID" + +#: lib/mv_web/live/user_live/show.ex:52 #, elixir-autogen, elixir-format msgid "Password Authentication" msgstr "Passwort-Authentifizierung" -#: lib/mv_web/components/layouts/navbar.ex:106 +#: lib/mv_web/components/layouts/navbar.ex:95 #, elixir-autogen, elixir-format msgid "Profil" msgstr "Profil" @@ -363,17 +357,17 @@ msgstr "Alle Mitglieder auswählen" msgid "Select member" msgstr "Mitglied auswählen" -#: lib/mv_web/components/layouts/navbar.ex:110 +#: lib/mv_web/components/layouts/navbar.ex:99 #, elixir-autogen, elixir-format msgid "Settings" msgstr "Einstellungen" -#: lib/mv_web/live/user_live/form.ex:250 +#: lib/mv_web/live/user_live/form.ex:249 #, elixir-autogen, elixir-format msgid "Save User" msgstr "Benutzer*in speichern" -#: lib/mv_web/live/user_live/show.ex:77 +#: lib/mv_web/live/user_live/show.ex:79 #, elixir-autogen, elixir-format msgid "Show User" msgstr "Benutzer*in anzeigen" @@ -393,7 +387,7 @@ msgstr "Nicht unterstützter Wertetyp: %{type}" msgid "Use this form to manage user records in your database." msgstr "Verwenden Sie dieses Formular, um Benutzer*innen-Datensätze zu verwalten." -#: lib/mv_web/live/user_live/form.ex:268 +#: lib/mv_web/live/user_live/form.ex:266 #: lib/mv_web/live/user_live/show.ex:34 #, elixir-autogen, elixir-format msgid "User" @@ -421,7 +415,8 @@ msgstr "aufsteigend" msgid "descending" msgstr "absteigend" -#: lib/mv_web/live/user_live/form.ex:267 +#: lib/mv_web/live/member_live/form.ex:241 +#: lib/mv_web/live/user_live/form.ex:265 #, elixir-autogen, elixir-format msgid "New" msgstr "Neue*r" @@ -497,30 +492,29 @@ msgid "User will be created without a password. Check 'Set Password' to add one. msgstr "Benutzer*in wird ohne Passwort erstellt. Aktivieren Sie 'Passwort setzen', um eines hinzuzufügen." #: lib/mv_web/live/user_live/form.ex:126 -#: lib/mv_web/live/user_live/index.html.heex:52 -#: lib/mv_web/live/user_live/show.ex:53 +#: lib/mv_web/live/user_live/index.html.heex:53 +#: lib/mv_web/live/user_live/show.ex:55 #, elixir-autogen, elixir-format msgid "Linked Member" msgstr "Verknüpftes Mitglied" -#: lib/mv_web/live/member_live/show.ex:63 +#: lib/mv_web/live/member_live/show.ex:106 #, elixir-autogen, elixir-format msgid "Linked User" msgstr "Verknüpfte*r Benutzer*in" -#: lib/mv_web/live/user_live/index.html.heex:56 -#: lib/mv_web/live/user_live/show.ex:63 +#: lib/mv_web/live/user_live/index.html.heex:57 +#: lib/mv_web/live/user_live/show.ex:65 #, elixir-autogen, elixir-format msgid "No member linked" msgstr "Kein Mitglied verknüpft" -#: lib/mv_web/live/member_live/show.ex:73 +#: lib/mv_web/live/member_live/show.ex:116 #, elixir-autogen, elixir-format msgid "No user linked" msgstr "Keine*r Benutzer*in verknüpft" -#: lib/mv_web/live/member_live/show.ex:37 -#: lib/mv_web/live/member_live/show.ex:39 +#: lib/mv_web/live/member_live/show.ex:30 #, elixir-autogen, elixir-format msgid "Back to members list" msgstr "Zurück zur Mitgliederliste" @@ -531,14 +525,14 @@ msgstr "Zurück zur Mitgliederliste" msgid "Back to users list" msgstr "Zurück zur Benutzer*innen-Liste" -#: lib/mv_web/components/layouts/navbar.ex:44 -#: lib/mv_web/components/layouts/navbar.ex:50 +#: lib/mv_web/components/layouts/navbar.ex:33 +#: lib/mv_web/components/layouts/navbar.ex:39 #, elixir-autogen, elixir-format msgid "Select language" msgstr "Sprache auswählen" -#: lib/mv_web/components/layouts/navbar.ex:57 -#: lib/mv_web/components/layouts/navbar.ex:77 +#: lib/mv_web/components/layouts/navbar.ex:46 +#: lib/mv_web/components/layouts/navbar.ex:66 #, elixir-autogen, elixir-format msgid "Toggle dark mode" msgstr "Dunklen Modus umschalten" @@ -601,12 +595,6 @@ msgstr "Diese E-Mail-Adresse ist bereits mit einem anderen OIDC-Konto verknüpft msgid "Choose a custom field" msgstr "Wähle ein Benutzerdefiniertes Feld" -#: lib/mv_web/live/member_live/form.ex:58 -#: lib/mv_web/live/member_live/show.ex:78 -#, elixir-autogen, elixir-format -msgid "Custom Field Values" -msgstr "Benutzerdefinierte Feldwerte" - #: lib/mv_web/live/custom_field_value_live/form.ex:51 #, elixir-autogen, elixir-format msgid "Custom field" @@ -643,6 +631,8 @@ msgid "Use this form to manage custom_field records in your database." msgstr "Verwende dieses Formular, um Benutzerdefinierte Felder in deiner Datenbank zu verwalten." #: lib/mv_web/components/layouts/navbar.ex:26 +#: lib/mv_web/live/member_live/form.ex:135 +#: lib/mv_web/live/member_live/show.ex:136 #, elixir-autogen, elixir-format msgid "Custom Fields" msgstr "Benutzerdefinierte Felder" @@ -710,7 +700,6 @@ msgstr "Vereinsdaten" msgid "Manage global settings for the association." msgstr "Passe übergreifende Einstellungen für den Verein an." -#: lib/mv_web/live/contribution_settings_live.ex:102 #: lib/mv_web/live/global_settings_live.ex:56 #, elixir-autogen, elixir-format, fuzzy msgid "Save Settings" @@ -731,7 +720,7 @@ msgstr "Ein Mitglied mit dieser E-Mail-Adresse existiert bereits. Um mit einem a msgid "Available members" msgstr "Verfügbare Mitglieder" -#: lib/mv_web/live/user_live/form.ex:359 +#: lib/mv_web/live/user_live/form.ex:357 #, elixir-autogen, elixir-format msgid "Failed to link member: %{error}" msgstr "Fehler beim Verlinken des Mitglieds: %{error}" @@ -771,7 +760,7 @@ msgstr "Mitglied entverknüpfen" msgid "Unlinking scheduled" msgstr "Entverknüpfung geplant" -#: lib/mv_web/live/member_live/index.ex:160 +#: lib/mv_web/live/member_live/index.ex:159 #, elixir-autogen, elixir-format msgid "Copied %{count} email address to clipboard" msgid_plural "Copied %{count} email addresses to clipboard" @@ -788,12 +777,12 @@ msgstr "E-Mail-Adressen der ausgewählten Mitglieder kopieren" msgid "Copy emails" msgstr "E-Mails kopieren" -#: lib/mv_web/live/member_live/index.ex:149 +#: lib/mv_web/live/member_live/index.ex:148 #, elixir-autogen, elixir-format msgid "No email addresses found" msgstr "Keine E-Mail-Adressen gefunden" -#: lib/mv_web/live/member_live/index.ex:146 +#: lib/mv_web/live/member_live/index.ex:145 #, elixir-autogen, elixir-format msgid "No members selected" msgstr "Keine Mitglieder ausgewählt" @@ -808,16 +797,11 @@ msgstr "E-Mail-Programm mit BCC-Empfänger*innen öffnen" msgid "Open in email program" msgstr "Im E-Mail-Programm öffnen" -#: lib/mv_web/live/member_live/index.ex:169 +#: lib/mv_web/live/member_live/index.ex:168 #, elixir-autogen, elixir-format msgid "Tip: Paste email addresses into the BCC field for privacy compliance" msgstr "Tipp: E-Mail-Adressen ins BCC-Feld einfügen für Datenschutzkonformität" -#: lib/mv_web/live/member_live/form.ex:40 -#, elixir-autogen, elixir-format -msgid "Fields marked with an asterisk (*) cannot be empty." -msgstr "Felder, die mit einem Sternchen (*) markiert sind, dürfen nicht leer bleiben." - #: lib/mv_web/components/core_components.ex:206 #: lib/mv_web/components/core_components.ex:223 #: lib/mv_web/components/core_components.ex:250 @@ -848,450 +832,103 @@ msgstr "Nicht bezahlt" msgid "Payment filter" msgstr "Zahlungsfilter" -#: lib/mv_web/live/contribution_period_live/show.ex:107 +#: lib/mv_web/live/member_live/show.ex:70 #, elixir-autogen, elixir-format -msgid "%{count} period selected" -msgid_plural "%{count} periods selected" -msgstr[0] "%{count} Beiträge ausgewählt" -msgstr[1] "%{count} Beiträge ausgewählt" +msgid "Address" +msgstr "Adresse" -#: lib/mv_web/live/contribution_type_live/index.ex:113 +#: lib/mv_web/live/member_live/form.ex:37 +#: lib/mv_web/live/member_live/show.ex:32 #, elixir-autogen, elixir-format -msgid "About Contribution Types" -msgstr "Über Beitragsarten" +msgid "Back" +msgstr "Zurück" -#: lib/mv_web/live/contribution_period_live/show.ex:138 -#: lib/mv_web/live/contribution_type_live/index.ex:53 +#: lib/mv_web/live/member_live/form.ex:65 +#: lib/mv_web/live/member_live/show.ex:50 #, elixir-autogen, elixir-format -msgid "Amount" -msgstr "Betrag" +msgid "Coming soon" +msgstr "Demnächst verfügbar" -#: lib/mv_web/live/contribution_period_live/show.ex:48 +#: lib/mv_web/live/member_live/form.ex:57 +#: lib/mv_web/live/member_live/show.ex:48 #, elixir-autogen, elixir-format -msgid "Back to Settings" -msgstr "Zurück zu Einstellungen" +msgid "Contact Data" +msgstr "Kontaktdaten" -#: lib/mv_web/live/contribution_type_live/index.ex:124 +#: lib/mv_web/live/member_live/form.ex:175 +#: lib/mv_web/live/member_live/show.ex:160 #, elixir-autogen, elixir-format -msgid "Can be changed at any time. Amount changes affect future periods only." -msgstr "Kann jederzeit geändert werden. Betragsänderungen wirken sich nur auf zukünftige Beiträge aus." +msgid "Contribution" +msgstr "Beitrag" -#: lib/mv_web/live/contribution_type_live/index.ex:77 +#: lib/mv_web/live/member_live/form.ex:94 #, elixir-autogen, elixir-format -msgid "Cannot delete - members assigned" -msgstr "Löschen nicht möglich - Mitglieder zugewiesen" +msgid "Nr." +msgstr "Nr." -#: lib/mv_web/live/contribution_period_live/show.ex:83 +#: lib/mv_web/live/member_live/form.ex:186 +#: lib/mv_web/live/member_live/show.ex:161 #, elixir-autogen, elixir-format -msgid "Change Contribution Type" -msgstr "Beitragsart ändern" +msgid "Payment Cycle" +msgstr "Zahlungszyklus" -#: lib/mv_web/live/contribution_settings_live.ex:42 +#: lib/mv_web/live/member_live/form.ex:166 +#: lib/mv_web/live/member_live/show.ex:153 #, elixir-autogen, elixir-format -msgid "Configure global settings for membership contributions." -msgstr "Globale Einstellungen für Mitgliedsbeiträge konfigurieren." +msgid "Payment Data" +msgstr "Beitragsdaten" -#: lib/mv_web/components/layouts/navbar.ex:34 -#: lib/mv_web/live/contribution_settings_live.ex:27 -#: lib/mv_web/live/contribution_settings_live.ex:40 +#: lib/mv_web/live/member_live/form.ex:68 +#: lib/mv_web/live/member_live/show.ex:52 #, elixir-autogen, elixir-format -msgid "Contribution Settings" -msgstr "Beitragseinstellungen" +msgid "Payments" +msgstr "Zahlungen" -#: lib/mv_web/live/contribution_period_live/show.ex:62 +#: lib/mv_web/live/member_live/show.ex:166 #, elixir-autogen, elixir-format -msgid "Contribution Start" -msgstr "Beitragsbeginn" +msgid "Pending" +msgstr "Ausstehend" -#: lib/mv_web/components/layouts/navbar.ex:32 -#: lib/mv_web/live/contribution_type_live/index.ex:25 -#: lib/mv_web/live/contribution_type_live/index.ex:36 +#: lib/mv_web/live/member_live/form.ex:76 +#: lib/mv_web/live/member_live/show.ex:60 #, elixir-autogen, elixir-format -msgid "Contribution Types" -msgstr "Beitragsarten" +msgid "Personal Data" +msgstr "Persönliche Daten" -#: lib/mv_web/live/contribution_settings_live.ex:224 +#: lib/mv_web/live/member_live/form.ex:111 +#: lib/mv_web/live/member_live/show.ex:87 #, elixir-autogen, elixir-format -msgid "Contribution start" -msgstr "Beitragsbeginn" +msgid "Phone" +msgstr "Telefon" -#: lib/mv_web/live/contribution_period_live/show.ex:41 +#: lib/mv_web/live/member_live/form.ex:49 #, elixir-autogen, elixir-format -msgid "Contribution type" -msgstr "Beitragsart" +msgid "Save" +msgstr "Speichern" -#: lib/mv_web/live/contribution_type_live/index.ex:117 +#: lib/mv_web/live/member_live/form.ex:169 +#: lib/mv_web/live/member_live/show.ex:156 #, elixir-autogen, elixir-format -msgid "Contribution types define different membership fee structures. Each type has a fixed interval (monthly, quarterly, half-yearly, yearly) that cannot be changed after creation." -msgstr "Beitragsarten definieren verschiedene Mitgliedsbeitragsstrukturen. Jede Art hat ein festes Intervall (monatlich, quartalsweise, halbjährlich, jährlich), das nach der Erstellung nicht mehr geändert werden kann." +msgid "This data is for demonstration purposes only (mockup)." +msgstr "Diese Daten dienen nur zu Demonstrationszwecken (Mockup)." -#: lib/mv_web/components/layouts/navbar.ex:30 +#: lib/mv_web/live/member_live/form.ex:190 +#: lib/mv_web/live/member_live/show.ex:161 #, elixir-autogen, elixir-format -msgid "Contributions" -msgstr "Beiträge" +msgid "monthly" +msgstr "monatlich" -#: lib/mv_web/live/contribution_period_live/show.ex:39 +#: lib/mv_web/live/member_live/form.ex:194 #, elixir-autogen, elixir-format -msgid "Contributions for %{name}" -msgstr "Beiträge für %{name}" +msgid "yearly" +msgstr "jährlich" -#: lib/mv_web/live/contribution_period_live/show.ex:159 -#, elixir-autogen, elixir-format -msgid "Current" -msgstr "Aktuell" - -#: lib/mv_web/live/contribution_settings_live.ex:60 -#, elixir-autogen, elixir-format -msgid "Default Contribution Type" -msgstr "Standard-Beitragsart" - -#: lib/mv_web/live/contribution_type_live/index.ex:133 -#, elixir-autogen, elixir-format -msgid "Deletion" -msgstr "Löschung" - -#: lib/mv_web/live/contribution_settings_live.ex:173 -#, elixir-autogen, elixir-format -msgid "Example: Member Contribution View" -msgstr "Beispiel: Mitglieder-Beitragsansicht" - -#: lib/mv_web/live/contribution_settings_live.ex:113 -#, elixir-autogen, elixir-format -msgid "Examples" -msgstr "Beispiele" - -#: lib/mv_web/live/contribution_settings_live.ex:262 -#: lib/mv_web/live/contribution_type_live/index.ex:172 -#, elixir-autogen, elixir-format -msgid "Family" -msgstr "Familie" - -#: lib/mv_web/live/contribution_type_live/index.ex:128 -#, elixir-autogen, elixir-format -msgid "Fixed after creation. Members can only switch between types with the same interval." -msgstr "Nach der Erstellung unveränderlich. Mitglieder können nur zwischen Arten mit demselben Intervall wechseln." - -#: lib/mv_web/live/contribution_settings_live.ex:228 -#, elixir-autogen, elixir-format -msgid "Generated periods" -msgstr "Generierte Beiträge" - -#: lib/mv_web/live/contribution_settings_live.ex:52 -#, elixir-autogen, elixir-format -msgid "Global Settings" -msgstr "Globale Einstellungen" - -#: lib/mv_web/live/contribution_period_live/show.ex:343 -#: lib/mv_web/live/contribution_settings_live.ex:275 -#: lib/mv_web/live/contribution_type_live/index.ex:203 -#, elixir-autogen, elixir-format -msgid "Half-yearly" -msgstr "Halbjährlich" - -#: lib/mv_web/live/contribution_type_live/index.ex:181 -#, elixir-autogen, elixir-format -msgid "Half-yearly contribution for supporting members" -msgstr "Halbjährlicher Beitrag für Fördermitglieder" - -#: lib/mv_web/live/contribution_period_live/show.ex:87 -#: lib/mv_web/live/contribution_type_live/index.ex:188 -#, elixir-autogen, elixir-format -msgid "Honorary" -msgstr "Ehrenmitglied" - -#: lib/mv_web/live/contribution_settings_live.ex:85 -#, elixir-autogen, elixir-format -msgid "Include joining period" -msgstr "Zahlt ab Zeitpunkt des Eintritts" - -#: lib/mv_web/live/contribution_period_live/show.ex:137 -#: lib/mv_web/live/contribution_type_live/index.ex:57 -#: lib/mv_web/live/contribution_type_live/index.ex:127 -#, elixir-autogen, elixir-format -msgid "Interval" -msgstr "Intervall" - -#: lib/mv_web/live/contribution_settings_live.ex:220 -#, elixir-autogen, elixir-format -msgid "Joining date" -msgstr "Eintrittsdatum" - -#: lib/mv_web/live/contribution_period_live/show.ex:331 -#, elixir-autogen, elixir-format -msgid "Joining year - reduced to 0" -msgstr "Eintrittsjahr - auf 0 reduziert" - -#: lib/mv_web/live/contribution_type_live/index.ex:38 -#, elixir-autogen, elixir-format -msgid "Manage contribution types for membership fees." -msgstr "Beitragsarten für Mitgliedsbeiträge verwalten." - -#: lib/mv_web/live/contribution_period_live/show.ex:116 -#, elixir-autogen, elixir-format -msgid "Mark as Paid" -msgstr "Als bezahlt markieren" - -#: lib/mv_web/live/contribution_period_live/show.ex:120 -#, elixir-autogen, elixir-format -msgid "Mark as Suspended" -msgstr "Als ausgesetzt markieren" - -#: lib/mv_web/live/contribution_period_live/show.ex:124 -#, elixir-autogen, elixir-format -msgid "Mark as Unpaid" -msgstr "Als unbezahlt markieren" - -#: lib/mv_web/live/contribution_period_live/show.ex:26 -#, elixir-autogen, elixir-format -msgid "Member Contributions" -msgstr "Mitgliedsbeiträge" - -#: lib/mv_web/live/contribution_settings_live.ex:122 -#, elixir-autogen, elixir-format -msgid "Member pays for the year they joined" -msgstr "Mitglied zahlt für das Eintrittsjahr" - -#: lib/mv_web/live/contribution_settings_live.ex:155 -#, elixir-autogen, elixir-format -msgid "Member pays from the joining month" -msgstr "Mitglied zahlt ab dem Eintrittsmonat" - -#: lib/mv_web/live/contribution_settings_live.ex:144 -#, elixir-autogen, elixir-format -msgid "Member pays from the next full quarter" -msgstr "Mitglied zahlt ab dem nächsten vollen Quartal" - -#: lib/mv_web/live/contribution_settings_live.ex:133 -#, elixir-autogen, elixir-format -msgid "Member pays from the next full year" -msgstr "Mitglied zahlt ab dem nächsten vollen Jahr" - -#: lib/mv_web/live/contribution_period_live/show.ex:43 -#, elixir-autogen, elixir-format -msgid "Member since" -msgstr "Mitglied seit" - -#: lib/mv_web/live/contribution_period_live/show.ex:92 -#, elixir-autogen, elixir-format -msgid "Members can only switch between contribution types with the same payment interval (e.g., yearly to yearly). This prevents complex period overlaps." -msgstr "Mitglieder können nur zwischen Beitragsarten mit demselben Zahlungsintervall wechseln (z.B. jährlich zu jährlich). Dies verhindert komplexe Periodenüberschneidungen." - -#: lib/mv_web/live/contribution_period_live/show.ex:341 -#: lib/mv_web/live/contribution_settings_live.ex:273 -#: lib/mv_web/live/contribution_type_live/index.ex:201 -#, elixir-autogen, elixir-format -msgid "Monthly" -msgstr "Monatlich" - -#: lib/mv_web/live/contribution_settings_live.ex:150 -#, elixir-autogen, elixir-format -msgid "Monthly Interval - Joining Period Included" -msgstr "Monatliches Intervall - Eintrittsperiode eingeschlossen" - -#: lib/mv_web/live/contribution_type_live/index.ex:165 -#, elixir-autogen, elixir-format -msgid "Monthly fee for students and trainees" -msgstr "Monatlicher Beitrag für Studierende und Auszubildende" - -#: lib/mv_web/live/contribution_type_live/index.ex:123 -#, elixir-autogen, elixir-format -msgid "Name & Amount" -msgstr "Name & Betrag" - -#: lib/mv_web/live/contribution_type_live/index.ex:42 -#, elixir-autogen, elixir-format -msgid "New Contribution Type" -msgstr "Neue Beitragsart" - -#: lib/mv_web/live/contribution_type_live/index.ex:189 -#, elixir-autogen, elixir-format -msgid "No fee for honorary members" -msgstr "Kein Beitrag für Ehrenmitglieder" - -#: lib/mv_web/live/contribution_type_live/index.ex:134 -#, elixir-autogen, elixir-format -msgid "Only possible if no members are assigned to this type." -msgstr "Nur möglich, wenn keine Mitglieder dieser Art zugewiesen sind." - -#: lib/mv_web/live/contribution_period_live/show.ex:70 -#, elixir-autogen, elixir-format -msgid "Open Contributions" -msgstr "Offene Beiträge" - -#: lib/mv_web/live/contribution_period_live/show.ex:301 -#, elixir-autogen, elixir-format -msgid "Paid via bank transfer" -msgstr "Per Überweisung bezahlt" - -#: lib/mv_web/live/contribution_period_live/show.ex:225 -#: lib/mv_web/live/contribution_settings_live.ex:197 -#: lib/mv_web/live/contribution_type_live/index.ex:97 -#, elixir-autogen, elixir-format -msgid "Preview Mockup" -msgstr "Vorschau" - -#: lib/mv_web/live/contribution_period_live/show.ex:342 -#: lib/mv_web/live/contribution_settings_live.ex:274 -#: lib/mv_web/live/contribution_type_live/index.ex:202 -#, elixir-autogen, elixir-format -msgid "Quarterly" -msgstr "Quartalsweise" - -#: lib/mv_web/live/contribution_settings_live.ex:139 -#, elixir-autogen, elixir-format -msgid "Quarterly Interval - Joining Period Excluded" -msgstr "Quartalsintervall - Eintrittsperiode ausgeschlossen" - -#: lib/mv_web/live/contribution_type_live/index.ex:173 -#, elixir-autogen, elixir-format -msgid "Quarterly fee for family memberships" -msgstr "Quartalsbeitrag für Familienmitgliedschaften" - -#: lib/mv_web/live/contribution_period_live/show.ex:86 -#: lib/mv_web/live/contribution_settings_live.ex:250 -#: lib/mv_web/live/contribution_type_live/index.ex:156 -#, elixir-autogen, elixir-format -msgid "Reduced" -msgstr "Ermäßigt" - -#: lib/mv_web/live/contribution_type_live/index.ex:157 -#, elixir-autogen, elixir-format -msgid "Reduced fee for unemployed, pensioners, or low income" -msgstr "Ermäßigter Beitrag für Arbeitslose, Rentner*innen oder Geringverdienende" - -#: lib/mv_web/live/contribution_period_live/show.ex:275 -#: lib/mv_web/live/contribution_settings_live.ex:244 -#: lib/mv_web/live/contribution_type_live/index.ex:148 -#, elixir-autogen, elixir-format -msgid "Regular" -msgstr "Regulär" - -#: lib/mv_web/live/contribution_period_live/show.ex:204 -#, elixir-autogen, elixir-format -msgid "Reopen" -msgstr "Wieder öffnen" - -#: lib/mv_web/live/contribution_settings_live.ex:176 -#, elixir-autogen, elixir-format -msgid "See how the contribution periods will be displayed for an individual member. This example shows Maria Weber with multiple contribution periods." -msgstr "Sehen Sie, wie die Beitragsperioden für ein einzelnes Mitglied angezeigt werden. Dieses Beispiel zeigt Maria Weber mit mehreren Beitragsperioden." - -#: lib/mv_web/live/contribution_type_live/index.ex:149 -#, elixir-autogen, elixir-format -msgid "Standard membership fee for regular members" -msgstr "Standard-Mitgliedsbeitrag für reguläre Mitglieder" - -#: lib/mv_web/live/contribution_period_live/show.ex:139 -#, elixir-autogen, elixir-format -msgid "Status" -msgstr "Status" - -#: lib/mv_web/live/contribution_settings_live.ex:256 -#: lib/mv_web/live/contribution_type_live/index.ex:164 -#, elixir-autogen, elixir-format -msgid "Student" -msgstr "Student*in" - -#: lib/mv_web/live/contribution_type_live/index.ex:180 -#, elixir-autogen, elixir-format -msgid "Supporting Member" -msgstr "Fördermitglied" - -#: lib/mv_web/live/contribution_period_live/show.ex:195 -#, elixir-autogen, elixir-format -msgid "Suspend" -msgstr "Aussetzen" - -#: lib/mv_web/live/contribution_period_live/show.ex:259 -#, elixir-autogen, elixir-format -msgid "Suspended" -msgstr "Ausgesetzt" - -#: lib/mv_web/live/contribution_settings_live.ex:69 -#, elixir-autogen, elixir-format -msgid "This contribution type is automatically assigned to all new members. Can be changed individually per member." -msgstr "Diese Beitragsart wird automatisch allen neuen Mitgliedern zugewiesen. Kann pro Mitglied individuell geändert werden." - -#: lib/mv_web/live/contribution_period_live/show.ex:227 -#: lib/mv_web/live/contribution_settings_live.ex:199 -#: lib/mv_web/live/contribution_type_live/index.ex:99 -#, elixir-autogen, elixir-format -msgid "This page is not functional and only displays the planned features." -msgstr "Diese Seite ist nicht funktional und zeigt nur die geplanten Funktionen." - -#: lib/mv_web/live/contribution_period_live/show.ex:136 -#, elixir-autogen, elixir-format -msgid "Time Period" -msgstr "Zeitraum" - -#: lib/mv_web/live/contribution_period_live/show.ex:66 -#, elixir-autogen, elixir-format -msgid "Total Contributions" -msgstr "Beiträge gesamt" - -#: lib/mv_web/live/contribution_period_live/show.ex:250 -#, elixir-autogen, elixir-format -msgid "Unpaid" -msgstr "Unbezahlt" - -#: lib/mv_web/live/contribution_settings_live.ex:183 -#, elixir-autogen, elixir-format -msgid "View Example Member" -msgstr "Beispielmitglied ansehen" - -#: lib/mv_web/live/contribution_settings_live.ex:90 -#, elixir-autogen, elixir-format -msgid "When active: Members pay from the period of their joining." -msgstr "Wenn aktiv: Mitglieder zahlen ab der Periode ihres Eintritts." - -#: lib/mv_web/live/contribution_settings_live.ex:93 -#, elixir-autogen, elixir-format -msgid "When inactive: Members pay from the next full period after joining." -msgstr "Wenn inaktiv: Mitglieder zahlen ab der nächsten vollen Periode nach dem Eintritt." - -#: lib/mv_web/live/contribution_period_live/show.ex:98 -#, elixir-autogen, elixir-format -msgid "Why are not all contribution types shown?" -msgstr "Warum werden nicht alle Beitragsarten angezeigt?" - -#: lib/mv_web/live/contribution_period_live/show.ex:85 -#: lib/mv_web/live/contribution_period_live/show.ex:86 -#: lib/mv_web/live/contribution_period_live/show.ex:87 -#: lib/mv_web/live/contribution_period_live/show.ex:344 -#: lib/mv_web/live/contribution_settings_live.ex:276 -#: lib/mv_web/live/contribution_type_live/index.ex:204 -#, elixir-autogen, elixir-format -msgid "Yearly" -msgstr "Jährlich" - -#: lib/mv_web/live/contribution_settings_live.ex:128 -#, elixir-autogen, elixir-format -msgid "Yearly Interval - Joining Period Excluded" -msgstr "Jährliches Intervall - Eintrittsperiode ausgeschlossen" - -#: lib/mv_web/live/contribution_settings_live.ex:117 -#, elixir-autogen, elixir-format -msgid "Yearly Interval - Joining Period Included" -msgstr "Jährliches Intervall - Eintrittsperiode eingeschlossen" - -#~ #: lib/mv_web/live/member_live/form.ex:48 -#~ #: lib/mv_web/live/member_live/show.ex:51 +#~ #: lib/mv_web/live/member_live/show.ex:47 #~ #, elixir-autogen, elixir-format -#~ msgid "Birth Date" -#~ msgstr "Geburtsdatum" - -#~ #: lib/mv_web/live/user_live/show.ex:49 -#~ #, elixir-autogen, elixir-format -#~ msgid "ID" +#~ msgid "Id" #~ msgstr "ID" -#~ #: lib/mv_web/live/user_live/show.ex:51 +#~ #: lib/mv_web/live/member_live/show.ex:33 #~ #, elixir-autogen, elixir-format -#~ msgid "Not set" -#~ msgstr "Nicht gesetzt" - -#~ #: lib/mv_web/live/user_live/index.html.heex:52 -#~ #: lib/mv_web/live/user_live/show.ex:51 -#~ #, elixir-autogen, elixir-format -#~ msgid "OIDC ID" -#~ msgstr "OIDC ID" +#~ msgid "This is a member record from your database." +#~ msgstr "Dies ist ein Mitglied aus deiner Datenbank." diff --git a/priv/gettext/default.pot b/priv/gettext/default.pot index b66c5ed..9f0d0aa 100644 --- a/priv/gettext/default.pot +++ b/priv/gettext/default.pot @@ -11,14 +11,13 @@ msgid "" msgstr "" -#: lib/mv_web/components/core_components.ex:387 -#: lib/mv_web/live/contribution_period_live/show.ex:141 +#: lib/mv_web/components/core_components.ex:386 #, elixir-autogen, elixir-format msgid "Actions" msgstr "" #: lib/mv_web/live/member_live/index.html.heex:248 -#: lib/mv_web/live/user_live/index.html.heex:71 +#: lib/mv_web/live/user_live/index.html.heex:72 #, elixir-autogen, elixir-format msgid "Are you sure?" msgstr "" @@ -29,71 +28,69 @@ msgstr "" msgid "Attempting to reconnect" msgstr "" -#: lib/mv_web/live/member_live/form.ex:53 +#: lib/mv_web/live/member_live/form.ex:100 #: lib/mv_web/live/member_live/index.html.heex:184 -#: lib/mv_web/live/member_live/show.ex:59 #, elixir-autogen, elixir-format msgid "City" msgstr "" -#: lib/mv_web/live/contribution_type_live/index.ex:78 #: lib/mv_web/live/member_live/index.html.heex:250 -#: lib/mv_web/live/user_live/index.html.heex:73 +#: lib/mv_web/live/user_live/index.html.heex:74 #, elixir-autogen, elixir-format msgid "Delete" msgstr "" -#: lib/mv_web/live/contribution_type_live/index.ex:66 +#: lib/mv_web/live/member_live/form.ex:241 #: lib/mv_web/live/member_live/index.html.heex:242 -#: lib/mv_web/live/user_live/form.ex:267 -#: lib/mv_web/live/user_live/index.html.heex:65 +#: lib/mv_web/live/user_live/form.ex:265 +#: lib/mv_web/live/user_live/index.html.heex:66 #, elixir-autogen, elixir-format msgid "Edit" msgstr "" -#: lib/mv_web/live/member_live/show.ex:42 -#: lib/mv_web/live/member_live/show.ex:114 +#: lib/mv_web/live/member_live/show.ex:40 +#: lib/mv_web/live/member_live/show.ex:197 #, elixir-autogen, elixir-format msgid "Edit Member" msgstr "" -#: lib/mv_web/live/contribution_period_live/show.ex:58 -#: lib/mv_web/live/member_live/form.ex:47 +#: lib/mv_web/live/member_live/form.ex:106 #: lib/mv_web/live/member_live/index.html.heex:112 -#: lib/mv_web/live/member_live/show.ex:51 +#: lib/mv_web/live/member_live/show.ex:75 #: lib/mv_web/live/user_live/form.ex:46 #: lib/mv_web/live/user_live/index.html.heex:44 -#: lib/mv_web/live/user_live/show.ex:49 +#: lib/mv_web/live/user_live/show.ex:50 #, elixir-autogen, elixir-format msgid "Email" msgstr "" -#: lib/mv_web/live/member_live/form.ex:45 -#: lib/mv_web/live/member_live/show.ex:49 +#: lib/mv_web/live/member_live/form.ex:81 +#: lib/mv_web/live/member_live/show.ex:64 #, elixir-autogen, elixir-format msgid "First Name" msgstr "" -#: lib/mv_web/live/member_live/form.ex:50 +#: lib/mv_web/live/member_live/form.ex:117 #: lib/mv_web/live/member_live/index.html.heex:220 -#: lib/mv_web/live/member_live/show.ex:56 +#: lib/mv_web/live/member_live/show.ex:93 #, elixir-autogen, elixir-format msgid "Join Date" msgstr "" -#: lib/mv_web/live/member_live/form.ex:46 -#: lib/mv_web/live/member_live/show.ex:50 +#: lib/mv_web/live/member_live/form.ex:84 +#: lib/mv_web/live/member_live/show.ex:65 #, elixir-autogen, elixir-format msgid "Last Name" msgstr "" +#: lib/mv_web/live/member_live/form.ex:44 #: lib/mv_web/live/member_live/index.html.heex:29 #, elixir-autogen, elixir-format msgid "New Member" msgstr "" #: lib/mv_web/live/member_live/index.html.heex:239 -#: lib/mv_web/live/user_live/index.html.heex:62 +#: lib/mv_web/live/user_live/index.html.heex:63 #, elixir-autogen, elixir-format msgid "Show" msgstr "" @@ -113,52 +110,45 @@ msgstr "" msgid "close" msgstr "" -#: lib/mv_web/live/member_live/form.ex:51 -#: lib/mv_web/live/member_live/show.ex:57 +#: lib/mv_web/live/member_live/form.ex:120 +#: lib/mv_web/live/member_live/show.ex:98 #, elixir-autogen, elixir-format msgid "Exit Date" msgstr "" -#: lib/mv_web/live/member_live/form.ex:55 #: lib/mv_web/live/member_live/index.html.heex:148 -#: lib/mv_web/live/member_live/show.ex:61 #, elixir-autogen, elixir-format msgid "House Number" msgstr "" -#: lib/mv_web/live/contribution_period_live/show.ex:140 -#: lib/mv_web/live/member_live/form.ex:52 -#: lib/mv_web/live/member_live/show.ex:58 +#: lib/mv_web/live/member_live/form.ex:126 +#: lib/mv_web/live/member_live/show.ex:124 #, elixir-autogen, elixir-format msgid "Notes" msgstr "" #: lib/mv_web/live/components/payment_filter_component.ex:94 #: lib/mv_web/live/components/payment_filter_component.ex:144 -#: lib/mv_web/live/contribution_period_live/show.ex:186 -#: lib/mv_web/live/contribution_period_live/show.ex:241 -#: lib/mv_web/live/member_live/form.ex:48 +#: lib/mv_web/live/member_live/form.ex:199 #: lib/mv_web/live/member_live/index.html.heex:229 -#: lib/mv_web/live/member_live/show.ex:52 +#: lib/mv_web/live/member_live/show.ex:162 +#: lib/mv_web/live/member_live/show.ex:164 #, elixir-autogen, elixir-format msgid "Paid" msgstr "" -#: lib/mv_web/live/member_live/form.ex:49 #: lib/mv_web/live/member_live/index.html.heex:202 -#: lib/mv_web/live/member_live/show.ex:55 #, elixir-autogen, elixir-format msgid "Phone Number" msgstr "" -#: lib/mv_web/live/member_live/form.ex:56 +#: lib/mv_web/live/member_live/form.ex:97 #: lib/mv_web/live/member_live/index.html.heex:166 -#: lib/mv_web/live/member_live/show.ex:62 #, elixir-autogen, elixir-format msgid "Postal Code" msgstr "" -#: lib/mv_web/live/member_live/form.ex:79 +#: lib/mv_web/live/member_live/form.ex:211 #, elixir-autogen, elixir-format msgid "Save Member" msgstr "" @@ -166,58 +156,48 @@ msgstr "" #: lib/mv_web/live/custom_field_live/form.ex:66 #: lib/mv_web/live/custom_field_value_live/form.ex:74 #: lib/mv_web/live/global_settings_live.ex:55 -#: lib/mv_web/live/member_live/form.ex:78 -#: lib/mv_web/live/user_live/form.ex:249 +#: lib/mv_web/live/member_live/form.ex:48 +#: lib/mv_web/live/member_live/form.ex:210 +#: lib/mv_web/live/user_live/form.ex:248 #, elixir-autogen, elixir-format msgid "Saving..." msgstr "" -#: lib/mv_web/live/member_live/form.ex:54 +#: lib/mv_web/live/member_live/form.ex:91 #: lib/mv_web/live/member_live/index.html.heex:130 -#: lib/mv_web/live/member_live/show.ex:60 #, elixir-autogen, elixir-format msgid "Street" msgstr "" -#: lib/mv_web/live/member_live/show.ex:48 -#, elixir-autogen, elixir-format -msgid "Id" -msgstr "" - #: lib/mv_web/live/member_live/index.html.heex:234 -#: lib/mv_web/live/member_live/index/formatter.ex:62 -#: lib/mv_web/live/member_live/show.ex:53 +#: lib/mv_web/live/member_live/index/formatter.ex:61 +#: lib/mv_web/live/member_live/show.ex:303 #, elixir-autogen, elixir-format msgid "No" msgstr "" -#: lib/mv_web/live/member_live/show.ex:113 +#: lib/mv_web/live/member_live/show.ex:196 #, elixir-autogen, elixir-format msgid "Show Member" msgstr "" -#: lib/mv_web/live/member_live/show.ex:34 -#, elixir-autogen, elixir-format -msgid "This is a member record from your database." -msgstr "" - #: lib/mv_web/live/member_live/index.html.heex:234 -#: lib/mv_web/live/member_live/index/formatter.ex:61 -#: lib/mv_web/live/member_live/show.ex:53 +#: lib/mv_web/live/member_live/index/formatter.ex:60 +#: lib/mv_web/live/member_live/show.ex:303 #, elixir-autogen, elixir-format msgid "Yes" msgstr "" #: lib/mv_web/live/custom_field_live/form.ex:110 #: lib/mv_web/live/custom_field_value_live/form.ex:233 -#: lib/mv_web/live/member_live/form.ex:137 +#: lib/mv_web/live/member_live/form.ex:269 #, elixir-autogen, elixir-format msgid "create" msgstr "" #: lib/mv_web/live/custom_field_live/form.ex:111 #: lib/mv_web/live/custom_field_value_live/form.ex:234 -#: lib/mv_web/live/member_live/form.ex:138 +#: lib/mv_web/live/member_live/form.ex:270 #, elixir-autogen, elixir-format msgid "update" msgstr "" @@ -227,7 +207,7 @@ msgstr "" msgid "Incorrect email or password" msgstr "" -#: lib/mv_web/live/member_live/form.ex:144 +#: lib/mv_web/live/member_live/form.ex:276 #, elixir-autogen, elixir-format msgid "Member %{action} successfully" msgstr "" @@ -260,8 +240,8 @@ msgstr "" #: lib/mv_web/live/custom_field_live/form.ex:69 #: lib/mv_web/live/custom_field_live/index.ex:120 #: lib/mv_web/live/custom_field_value_live/form.ex:77 -#: lib/mv_web/live/member_live/form.ex:81 -#: lib/mv_web/live/user_live/form.ex:252 +#: lib/mv_web/live/member_live/form.ex:208 +#: lib/mv_web/live/user_live/form.ex:251 #, elixir-autogen, elixir-format msgid "Cancel" msgstr "" @@ -281,17 +261,22 @@ msgstr "" msgid "Edit User" msgstr "" -#: lib/mv_web/live/user_live/show.ex:51 +#: lib/mv_web/live/user_live/show.ex:53 #, elixir-autogen, elixir-format msgid "Enabled" msgstr "" +#: lib/mv_web/live/user_live/show.ex:49 +#, elixir-autogen, elixir-format +msgid "ID" +msgstr "" + #: lib/mv_web/live/custom_field_live/form.ex:62 #, elixir-autogen, elixir-format msgid "Immutable" msgstr "" -#: lib/mv_web/components/layouts/navbar.ex:113 +#: lib/mv_web/components/layouts/navbar.ex:102 #, elixir-autogen, elixir-format msgid "Logout" msgstr "" @@ -303,19 +288,18 @@ msgid "Listing Users" msgstr "" #: lib/mv_web/live/custom_field_value_live/form.ex:60 +#: lib/mv_web/live/member_live/form.ex:242 #, elixir-autogen, elixir-format msgid "Member" msgstr "" #: lib/mv_web/components/layouts/navbar.ex:25 -#: lib/mv_web/live/contribution_type_live/index.ex:61 -#: lib/mv_web/live/member_live/index.ex:74 +#: lib/mv_web/live/member_live/index.ex:73 #: lib/mv_web/live/member_live/index.html.heex:3 #, elixir-autogen, elixir-format msgid "Members" msgstr "" -#: lib/mv_web/live/contribution_type_live/index.ex:48 #: lib/mv_web/live/custom_field_live/form.ex:51 #, elixir-autogen, elixir-format msgid "Name" @@ -326,12 +310,16 @@ msgstr "" msgid "New User" msgstr "" -#: lib/mv_web/live/user_live/show.ex:51 +#: lib/mv_web/live/user_live/show.ex:53 #, elixir-autogen, elixir-format msgid "Not enabled" msgstr "" -#: lib/mv_web/live/contribution_period_live/show.ex:207 +#: lib/mv_web/live/user_live/show.ex:51 +#, elixir-autogen, elixir-format +msgid "Not set" +msgstr "" + #: lib/mv_web/live/user_live/form.ex:107 #: lib/mv_web/live/user_live/form.ex:115 #: lib/mv_web/live/user_live/form.ex:224 @@ -339,12 +327,18 @@ msgstr "" msgid "Note" msgstr "" -#: lib/mv_web/live/user_live/show.ex:50 +#: lib/mv_web/live/user_live/index.html.heex:52 +#: lib/mv_web/live/user_live/show.ex:51 +#, elixir-autogen, elixir-format +msgid "OIDC ID" +msgstr "" + +#: lib/mv_web/live/user_live/show.ex:52 #, elixir-autogen, elixir-format msgid "Password Authentication" msgstr "" -#: lib/mv_web/components/layouts/navbar.ex:106 +#: lib/mv_web/components/layouts/navbar.ex:95 #, elixir-autogen, elixir-format msgid "Profil" msgstr "" @@ -364,17 +358,17 @@ msgstr "" msgid "Select member" msgstr "" -#: lib/mv_web/components/layouts/navbar.ex:110 +#: lib/mv_web/components/layouts/navbar.ex:99 #, elixir-autogen, elixir-format msgid "Settings" msgstr "" -#: lib/mv_web/live/user_live/form.ex:250 +#: lib/mv_web/live/user_live/form.ex:249 #, elixir-autogen, elixir-format msgid "Save User" msgstr "" -#: lib/mv_web/live/user_live/show.ex:77 +#: lib/mv_web/live/user_live/show.ex:79 #, elixir-autogen, elixir-format msgid "Show User" msgstr "" @@ -394,7 +388,7 @@ msgstr "" msgid "Use this form to manage user records in your database." msgstr "" -#: lib/mv_web/live/user_live/form.ex:268 +#: lib/mv_web/live/user_live/form.ex:266 #: lib/mv_web/live/user_live/show.ex:34 #, elixir-autogen, elixir-format msgid "User" @@ -422,7 +416,8 @@ msgstr "" msgid "descending" msgstr "" -#: lib/mv_web/live/user_live/form.ex:267 +#: lib/mv_web/live/member_live/form.ex:241 +#: lib/mv_web/live/user_live/form.ex:265 #, elixir-autogen, elixir-format msgid "New" msgstr "" @@ -498,30 +493,29 @@ msgid "User will be created without a password. Check 'Set Password' to add one. msgstr "" #: lib/mv_web/live/user_live/form.ex:126 -#: lib/mv_web/live/user_live/index.html.heex:52 -#: lib/mv_web/live/user_live/show.ex:53 +#: lib/mv_web/live/user_live/index.html.heex:53 +#: lib/mv_web/live/user_live/show.ex:55 #, elixir-autogen, elixir-format msgid "Linked Member" msgstr "" -#: lib/mv_web/live/member_live/show.ex:63 +#: lib/mv_web/live/member_live/show.ex:106 #, elixir-autogen, elixir-format msgid "Linked User" msgstr "" -#: lib/mv_web/live/user_live/index.html.heex:56 -#: lib/mv_web/live/user_live/show.ex:63 +#: lib/mv_web/live/user_live/index.html.heex:57 +#: lib/mv_web/live/user_live/show.ex:65 #, elixir-autogen, elixir-format msgid "No member linked" msgstr "" -#: lib/mv_web/live/member_live/show.ex:73 +#: lib/mv_web/live/member_live/show.ex:116 #, elixir-autogen, elixir-format msgid "No user linked" msgstr "" -#: lib/mv_web/live/member_live/show.ex:37 -#: lib/mv_web/live/member_live/show.ex:39 +#: lib/mv_web/live/member_live/show.ex:30 #, elixir-autogen, elixir-format msgid "Back to members list" msgstr "" @@ -532,14 +526,14 @@ msgstr "" msgid "Back to users list" msgstr "" -#: lib/mv_web/components/layouts/navbar.ex:44 -#: lib/mv_web/components/layouts/navbar.ex:50 +#: lib/mv_web/components/layouts/navbar.ex:33 +#: lib/mv_web/components/layouts/navbar.ex:39 #, elixir-autogen, elixir-format msgid "Select language" msgstr "" -#: lib/mv_web/components/layouts/navbar.ex:57 -#: lib/mv_web/components/layouts/navbar.ex:77 +#: lib/mv_web/components/layouts/navbar.ex:46 +#: lib/mv_web/components/layouts/navbar.ex:66 #, elixir-autogen, elixir-format msgid "Toggle dark mode" msgstr "" @@ -602,12 +596,6 @@ msgstr "" msgid "Choose a custom field" msgstr "" -#: lib/mv_web/live/member_live/form.ex:58 -#: lib/mv_web/live/member_live/show.ex:78 -#, elixir-autogen, elixir-format -msgid "Custom Field Values" -msgstr "" - #: lib/mv_web/live/custom_field_value_live/form.ex:51 #, elixir-autogen, elixir-format msgid "Custom field" @@ -644,6 +632,8 @@ msgid "Use this form to manage custom_field records in your database." msgstr "" #: lib/mv_web/components/layouts/navbar.ex:26 +#: lib/mv_web/live/member_live/form.ex:135 +#: lib/mv_web/live/member_live/show.ex:136 #, elixir-autogen, elixir-format msgid "Custom Fields" msgstr "" @@ -711,7 +701,6 @@ msgstr "" msgid "Manage global settings for the association." msgstr "" -#: lib/mv_web/live/contribution_settings_live.ex:102 #: lib/mv_web/live/global_settings_live.ex:56 #, elixir-autogen, elixir-format msgid "Save Settings" @@ -732,7 +721,7 @@ msgstr "" msgid "Available members" msgstr "" -#: lib/mv_web/live/user_live/form.ex:359 +#: lib/mv_web/live/user_live/form.ex:357 #, elixir-autogen, elixir-format msgid "Failed to link member: %{error}" msgstr "" @@ -772,7 +761,7 @@ msgstr "" msgid "Unlinking scheduled" msgstr "" -#: lib/mv_web/live/member_live/index.ex:160 +#: lib/mv_web/live/member_live/index.ex:159 #, elixir-autogen, elixir-format msgid "Copied %{count} email address to clipboard" msgid_plural "Copied %{count} email addresses to clipboard" @@ -789,12 +778,12 @@ msgstr "" msgid "Copy emails" msgstr "" -#: lib/mv_web/live/member_live/index.ex:149 +#: lib/mv_web/live/member_live/index.ex:148 #, elixir-autogen, elixir-format msgid "No email addresses found" msgstr "" -#: lib/mv_web/live/member_live/index.ex:146 +#: lib/mv_web/live/member_live/index.ex:145 #, elixir-autogen, elixir-format msgid "No members selected" msgstr "" @@ -809,16 +798,11 @@ msgstr "" msgid "Open in email program" msgstr "" -#: lib/mv_web/live/member_live/index.ex:169 +#: lib/mv_web/live/member_live/index.ex:168 #, elixir-autogen, elixir-format msgid "Tip: Paste email addresses into the BCC field for privacy compliance" msgstr "" -#: lib/mv_web/live/member_live/form.ex:40 -#, elixir-autogen, elixir-format -msgid "Fields marked with an asterisk (*) cannot be empty." -msgstr "" - #: lib/mv_web/components/core_components.ex:206 #: lib/mv_web/components/core_components.ex:223 #: lib/mv_web/components/core_components.ex:250 @@ -849,428 +833,93 @@ msgstr "" msgid "Payment filter" msgstr "" -#: lib/mv_web/live/contribution_period_live/show.ex:107 +#: lib/mv_web/live/member_live/show.ex:70 #, elixir-autogen, elixir-format -msgid "%{count} period selected" -msgid_plural "%{count} periods selected" -msgstr[0] "" -msgstr[1] "" - -#: lib/mv_web/live/contribution_type_live/index.ex:113 -#, elixir-autogen, elixir-format -msgid "About Contribution Types" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:138 -#: lib/mv_web/live/contribution_type_live/index.ex:53 -#, elixir-autogen, elixir-format -msgid "Amount" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:48 -#, elixir-autogen, elixir-format -msgid "Back to Settings" -msgstr "" - -#: lib/mv_web/live/contribution_type_live/index.ex:124 -#, elixir-autogen, elixir-format -msgid "Can be changed at any time. Amount changes affect future periods only." -msgstr "" - -#: lib/mv_web/live/contribution_type_live/index.ex:77 -#, elixir-autogen, elixir-format -msgid "Cannot delete - members assigned" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:83 -#, elixir-autogen, elixir-format -msgid "Change Contribution Type" -msgstr "" - -#: lib/mv_web/live/contribution_settings_live.ex:42 -#, elixir-autogen, elixir-format -msgid "Configure global settings for membership contributions." -msgstr "" - -#: lib/mv_web/components/layouts/navbar.ex:34 -#: lib/mv_web/live/contribution_settings_live.ex:27 -#: lib/mv_web/live/contribution_settings_live.ex:40 -#, elixir-autogen, elixir-format -msgid "Contribution Settings" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:62 -#, elixir-autogen, elixir-format -msgid "Contribution Start" -msgstr "" - -#: lib/mv_web/components/layouts/navbar.ex:32 -#: lib/mv_web/live/contribution_type_live/index.ex:25 -#: lib/mv_web/live/contribution_type_live/index.ex:36 -#, elixir-autogen, elixir-format -msgid "Contribution Types" -msgstr "" - -#: lib/mv_web/live/contribution_settings_live.ex:224 -#, elixir-autogen, elixir-format -msgid "Contribution start" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:41 -#, elixir-autogen, elixir-format -msgid "Contribution type" -msgstr "" - -#: lib/mv_web/live/contribution_type_live/index.ex:117 -#, elixir-autogen, elixir-format -msgid "Contribution types define different membership fee structures. Each type has a fixed interval (monthly, quarterly, half-yearly, yearly) that cannot be changed after creation." -msgstr "" - -#: lib/mv_web/components/layouts/navbar.ex:30 -#, elixir-autogen, elixir-format -msgid "Contributions" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:39 -#, elixir-autogen, elixir-format -msgid "Contributions for %{name}" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:159 -#, elixir-autogen, elixir-format -msgid "Current" -msgstr "" - -#: lib/mv_web/live/contribution_settings_live.ex:60 -#, elixir-autogen, elixir-format -msgid "Default Contribution Type" -msgstr "" - -#: lib/mv_web/live/contribution_type_live/index.ex:133 -#, elixir-autogen, elixir-format -msgid "Deletion" -msgstr "" - -#: lib/mv_web/live/contribution_settings_live.ex:173 -#, elixir-autogen, elixir-format -msgid "Example: Member Contribution View" -msgstr "" - -#: lib/mv_web/live/contribution_settings_live.ex:113 -#, elixir-autogen, elixir-format -msgid "Examples" -msgstr "" - -#: lib/mv_web/live/contribution_settings_live.ex:262 -#: lib/mv_web/live/contribution_type_live/index.ex:172 -#, elixir-autogen, elixir-format -msgid "Family" -msgstr "" - -#: lib/mv_web/live/contribution_type_live/index.ex:128 -#, elixir-autogen, elixir-format -msgid "Fixed after creation. Members can only switch between types with the same interval." -msgstr "" - -#: lib/mv_web/live/contribution_settings_live.ex:228 -#, elixir-autogen, elixir-format -msgid "Generated periods" -msgstr "" - -#: lib/mv_web/live/contribution_settings_live.ex:52 -#, elixir-autogen, elixir-format -msgid "Global Settings" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:343 -#: lib/mv_web/live/contribution_settings_live.ex:275 -#: lib/mv_web/live/contribution_type_live/index.ex:203 -#, elixir-autogen, elixir-format -msgid "Half-yearly" -msgstr "" - -#: lib/mv_web/live/contribution_type_live/index.ex:181 -#, elixir-autogen, elixir-format -msgid "Half-yearly contribution for supporting members" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:87 -#: lib/mv_web/live/contribution_type_live/index.ex:188 -#, elixir-autogen, elixir-format -msgid "Honorary" -msgstr "" - -#: lib/mv_web/live/contribution_settings_live.ex:85 -#, elixir-autogen, elixir-format -msgid "Include joining period" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:137 -#: lib/mv_web/live/contribution_type_live/index.ex:57 -#: lib/mv_web/live/contribution_type_live/index.ex:127 -#, elixir-autogen, elixir-format -msgid "Interval" -msgstr "" - -#: lib/mv_web/live/contribution_settings_live.ex:220 -#, elixir-autogen, elixir-format -msgid "Joining date" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:331 -#, elixir-autogen, elixir-format -msgid "Joining year - reduced to 0" -msgstr "" - -#: lib/mv_web/live/contribution_type_live/index.ex:38 -#, elixir-autogen, elixir-format -msgid "Manage contribution types for membership fees." -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:116 -#, elixir-autogen, elixir-format -msgid "Mark as Paid" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:120 -#, elixir-autogen, elixir-format -msgid "Mark as Suspended" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:124 -#, elixir-autogen, elixir-format -msgid "Mark as Unpaid" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:26 -#, elixir-autogen, elixir-format -msgid "Member Contributions" -msgstr "" - -#: lib/mv_web/live/contribution_settings_live.ex:122 -#, elixir-autogen, elixir-format -msgid "Member pays for the year they joined" -msgstr "" - -#: lib/mv_web/live/contribution_settings_live.ex:155 -#, elixir-autogen, elixir-format -msgid "Member pays from the joining month" -msgstr "" - -#: lib/mv_web/live/contribution_settings_live.ex:144 -#, elixir-autogen, elixir-format -msgid "Member pays from the next full quarter" -msgstr "" - -#: lib/mv_web/live/contribution_settings_live.ex:133 -#, elixir-autogen, elixir-format -msgid "Member pays from the next full year" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:43 -#, elixir-autogen, elixir-format -msgid "Member since" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:92 -#, elixir-autogen, elixir-format -msgid "Members can only switch between contribution types with the same payment interval (e.g., yearly to yearly). This prevents complex period overlaps." -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:341 -#: lib/mv_web/live/contribution_settings_live.ex:273 -#: lib/mv_web/live/contribution_type_live/index.ex:201 -#, elixir-autogen, elixir-format -msgid "Monthly" -msgstr "" - -#: lib/mv_web/live/contribution_settings_live.ex:150 -#, elixir-autogen, elixir-format -msgid "Monthly Interval - Joining Period Included" -msgstr "" - -#: lib/mv_web/live/contribution_type_live/index.ex:165 -#, elixir-autogen, elixir-format -msgid "Monthly fee for students and trainees" -msgstr "" - -#: lib/mv_web/live/contribution_type_live/index.ex:123 -#, elixir-autogen, elixir-format -msgid "Name & Amount" -msgstr "" - -#: lib/mv_web/live/contribution_type_live/index.ex:42 -#, elixir-autogen, elixir-format -msgid "New Contribution Type" -msgstr "" - -#: lib/mv_web/live/contribution_type_live/index.ex:189 -#, elixir-autogen, elixir-format -msgid "No fee for honorary members" -msgstr "" - -#: lib/mv_web/live/contribution_type_live/index.ex:134 -#, elixir-autogen, elixir-format -msgid "Only possible if no members are assigned to this type." -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:70 -#, elixir-autogen, elixir-format -msgid "Open Contributions" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:301 -#, elixir-autogen, elixir-format -msgid "Paid via bank transfer" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:225 -#: lib/mv_web/live/contribution_settings_live.ex:197 -#: lib/mv_web/live/contribution_type_live/index.ex:97 -#, elixir-autogen, elixir-format -msgid "Preview Mockup" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:342 -#: lib/mv_web/live/contribution_settings_live.ex:274 -#: lib/mv_web/live/contribution_type_live/index.ex:202 -#, elixir-autogen, elixir-format -msgid "Quarterly" -msgstr "" - -#: lib/mv_web/live/contribution_settings_live.ex:139 -#, elixir-autogen, elixir-format -msgid "Quarterly Interval - Joining Period Excluded" -msgstr "" - -#: lib/mv_web/live/contribution_type_live/index.ex:173 -#, elixir-autogen, elixir-format -msgid "Quarterly fee for family memberships" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:86 -#: lib/mv_web/live/contribution_settings_live.ex:250 -#: lib/mv_web/live/contribution_type_live/index.ex:156 -#, elixir-autogen, elixir-format -msgid "Reduced" -msgstr "" - -#: lib/mv_web/live/contribution_type_live/index.ex:157 -#, elixir-autogen, elixir-format -msgid "Reduced fee for unemployed, pensioners, or low income" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:275 -#: lib/mv_web/live/contribution_settings_live.ex:244 -#: lib/mv_web/live/contribution_type_live/index.ex:148 -#, elixir-autogen, elixir-format -msgid "Regular" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:204 -#, elixir-autogen, elixir-format -msgid "Reopen" -msgstr "" - -#: lib/mv_web/live/contribution_settings_live.ex:176 -#, elixir-autogen, elixir-format -msgid "See how the contribution periods will be displayed for an individual member. This example shows Maria Weber with multiple contribution periods." -msgstr "" - -#: lib/mv_web/live/contribution_type_live/index.ex:149 -#, elixir-autogen, elixir-format -msgid "Standard membership fee for regular members" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:139 -#, elixir-autogen, elixir-format -msgid "Status" -msgstr "" - -#: lib/mv_web/live/contribution_settings_live.ex:256 -#: lib/mv_web/live/contribution_type_live/index.ex:164 -#, elixir-autogen, elixir-format -msgid "Student" +msgid "Address" msgstr "" -#: lib/mv_web/live/contribution_type_live/index.ex:180 +#: lib/mv_web/live/member_live/form.ex:37 +#: lib/mv_web/live/member_live/show.ex:32 #, elixir-autogen, elixir-format -msgid "Supporting Member" +msgid "Back" msgstr "" -#: lib/mv_web/live/contribution_period_live/show.ex:195 +#: lib/mv_web/live/member_live/form.ex:65 +#: lib/mv_web/live/member_live/show.ex:50 #, elixir-autogen, elixir-format -msgid "Suspend" +msgid "Coming soon" msgstr "" -#: lib/mv_web/live/contribution_period_live/show.ex:259 +#: lib/mv_web/live/member_live/form.ex:57 +#: lib/mv_web/live/member_live/show.ex:48 #, elixir-autogen, elixir-format -msgid "Suspended" +msgid "Contact Data" msgstr "" -#: lib/mv_web/live/contribution_settings_live.ex:69 +#: lib/mv_web/live/member_live/form.ex:175 +#: lib/mv_web/live/member_live/show.ex:160 #, elixir-autogen, elixir-format -msgid "This contribution type is automatically assigned to all new members. Can be changed individually per member." +msgid "Contribution" msgstr "" -#: lib/mv_web/live/contribution_period_live/show.ex:227 -#: lib/mv_web/live/contribution_settings_live.ex:199 -#: lib/mv_web/live/contribution_type_live/index.ex:99 +#: lib/mv_web/live/member_live/form.ex:94 #, elixir-autogen, elixir-format -msgid "This page is not functional and only displays the planned features." +msgid "Nr." msgstr "" -#: lib/mv_web/live/contribution_period_live/show.ex:136 +#: lib/mv_web/live/member_live/form.ex:186 +#: lib/mv_web/live/member_live/show.ex:161 #, elixir-autogen, elixir-format -msgid "Time Period" +msgid "Payment Cycle" msgstr "" -#: lib/mv_web/live/contribution_period_live/show.ex:66 +#: lib/mv_web/live/member_live/form.ex:166 +#: lib/mv_web/live/member_live/show.ex:153 #, elixir-autogen, elixir-format -msgid "Total Contributions" +msgid "Payment Data" msgstr "" -#: lib/mv_web/live/contribution_period_live/show.ex:250 +#: lib/mv_web/live/member_live/form.ex:68 +#: lib/mv_web/live/member_live/show.ex:52 #, elixir-autogen, elixir-format -msgid "Unpaid" +msgid "Payments" msgstr "" -#: lib/mv_web/live/contribution_settings_live.ex:183 +#: lib/mv_web/live/member_live/show.ex:166 #, elixir-autogen, elixir-format -msgid "View Example Member" +msgid "Pending" msgstr "" -#: lib/mv_web/live/contribution_settings_live.ex:90 +#: lib/mv_web/live/member_live/form.ex:76 +#: lib/mv_web/live/member_live/show.ex:60 #, elixir-autogen, elixir-format -msgid "When active: Members pay from the period of their joining." +msgid "Personal Data" msgstr "" -#: lib/mv_web/live/contribution_settings_live.ex:93 +#: lib/mv_web/live/member_live/form.ex:111 +#: lib/mv_web/live/member_live/show.ex:87 #, elixir-autogen, elixir-format -msgid "When inactive: Members pay from the next full period after joining." +msgid "Phone" msgstr "" -#: lib/mv_web/live/contribution_period_live/show.ex:98 +#: lib/mv_web/live/member_live/form.ex:49 #, elixir-autogen, elixir-format -msgid "Why are not all contribution types shown?" +msgid "Save" msgstr "" -#: lib/mv_web/live/contribution_period_live/show.ex:85 -#: lib/mv_web/live/contribution_period_live/show.ex:86 -#: lib/mv_web/live/contribution_period_live/show.ex:87 -#: lib/mv_web/live/contribution_period_live/show.ex:344 -#: lib/mv_web/live/contribution_settings_live.ex:276 -#: lib/mv_web/live/contribution_type_live/index.ex:204 +#: lib/mv_web/live/member_live/form.ex:169 +#: lib/mv_web/live/member_live/show.ex:156 #, elixir-autogen, elixir-format -msgid "Yearly" +msgid "This data is for demonstration purposes only (mockup)." msgstr "" -#: lib/mv_web/live/contribution_settings_live.ex:128 +#: lib/mv_web/live/member_live/form.ex:190 +#: lib/mv_web/live/member_live/show.ex:161 #, elixir-autogen, elixir-format -msgid "Yearly Interval - Joining Period Excluded" +msgid "monthly" msgstr "" -#: lib/mv_web/live/contribution_settings_live.ex:117 +#: lib/mv_web/live/member_live/form.ex:194 #, elixir-autogen, elixir-format -msgid "Yearly Interval - Joining Period Included" +msgid "yearly" msgstr "" diff --git a/priv/gettext/en/LC_MESSAGES/default.po b/priv/gettext/en/LC_MESSAGES/default.po index ceee74a..9cb10a3 100644 --- a/priv/gettext/en/LC_MESSAGES/default.po +++ b/priv/gettext/en/LC_MESSAGES/default.po @@ -11,14 +11,13 @@ msgstr "" "Language: en\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: lib/mv_web/components/core_components.ex:387 -#: lib/mv_web/live/contribution_period_live/show.ex:141 +#: lib/mv_web/components/core_components.ex:386 #, elixir-autogen, elixir-format msgid "Actions" msgstr "" #: lib/mv_web/live/member_live/index.html.heex:248 -#: lib/mv_web/live/user_live/index.html.heex:71 +#: lib/mv_web/live/user_live/index.html.heex:72 #, elixir-autogen, elixir-format msgid "Are you sure?" msgstr "" @@ -29,71 +28,69 @@ msgstr "" msgid "Attempting to reconnect" msgstr "" -#: lib/mv_web/live/member_live/form.ex:53 +#: lib/mv_web/live/member_live/form.ex:100 #: lib/mv_web/live/member_live/index.html.heex:184 -#: lib/mv_web/live/member_live/show.ex:59 #, elixir-autogen, elixir-format msgid "City" msgstr "" -#: lib/mv_web/live/contribution_type_live/index.ex:78 #: lib/mv_web/live/member_live/index.html.heex:250 -#: lib/mv_web/live/user_live/index.html.heex:73 +#: lib/mv_web/live/user_live/index.html.heex:74 #, elixir-autogen, elixir-format msgid "Delete" msgstr "" -#: lib/mv_web/live/contribution_type_live/index.ex:66 +#: lib/mv_web/live/member_live/form.ex:241 #: lib/mv_web/live/member_live/index.html.heex:242 -#: lib/mv_web/live/user_live/form.ex:267 -#: lib/mv_web/live/user_live/index.html.heex:65 +#: lib/mv_web/live/user_live/form.ex:265 +#: lib/mv_web/live/user_live/index.html.heex:66 #, elixir-autogen, elixir-format msgid "Edit" msgstr "" -#: lib/mv_web/live/member_live/show.ex:42 -#: lib/mv_web/live/member_live/show.ex:114 +#: lib/mv_web/live/member_live/show.ex:40 +#: lib/mv_web/live/member_live/show.ex:197 #, elixir-autogen, elixir-format msgid "Edit Member" msgstr "" -#: lib/mv_web/live/contribution_period_live/show.ex:58 -#: lib/mv_web/live/member_live/form.ex:47 +#: lib/mv_web/live/member_live/form.ex:106 #: lib/mv_web/live/member_live/index.html.heex:112 -#: lib/mv_web/live/member_live/show.ex:51 +#: lib/mv_web/live/member_live/show.ex:75 #: lib/mv_web/live/user_live/form.ex:46 #: lib/mv_web/live/user_live/index.html.heex:44 -#: lib/mv_web/live/user_live/show.ex:49 +#: lib/mv_web/live/user_live/show.ex:50 #, elixir-autogen, elixir-format msgid "Email" msgstr "" -#: lib/mv_web/live/member_live/form.ex:45 -#: lib/mv_web/live/member_live/show.ex:49 +#: lib/mv_web/live/member_live/form.ex:81 +#: lib/mv_web/live/member_live/show.ex:64 #, elixir-autogen, elixir-format msgid "First Name" msgstr "" -#: lib/mv_web/live/member_live/form.ex:50 +#: lib/mv_web/live/member_live/form.ex:117 #: lib/mv_web/live/member_live/index.html.heex:220 -#: lib/mv_web/live/member_live/show.ex:56 +#: lib/mv_web/live/member_live/show.ex:93 #, elixir-autogen, elixir-format msgid "Join Date" msgstr "" -#: lib/mv_web/live/member_live/form.ex:46 -#: lib/mv_web/live/member_live/show.ex:50 +#: lib/mv_web/live/member_live/form.ex:84 +#: lib/mv_web/live/member_live/show.ex:65 #, elixir-autogen, elixir-format msgid "Last Name" msgstr "" +#: lib/mv_web/live/member_live/form.ex:44 #: lib/mv_web/live/member_live/index.html.heex:29 #, elixir-autogen, elixir-format msgid "New Member" msgstr "" #: lib/mv_web/live/member_live/index.html.heex:239 -#: lib/mv_web/live/user_live/index.html.heex:62 +#: lib/mv_web/live/user_live/index.html.heex:63 #, elixir-autogen, elixir-format msgid "Show" msgstr "" @@ -113,52 +110,45 @@ msgstr "" msgid "close" msgstr "" -#: lib/mv_web/live/member_live/form.ex:51 -#: lib/mv_web/live/member_live/show.ex:57 +#: lib/mv_web/live/member_live/form.ex:120 +#: lib/mv_web/live/member_live/show.ex:98 #, elixir-autogen, elixir-format msgid "Exit Date" msgstr "" -#: lib/mv_web/live/member_live/form.ex:55 #: lib/mv_web/live/member_live/index.html.heex:148 -#: lib/mv_web/live/member_live/show.ex:61 #, elixir-autogen, elixir-format msgid "House Number" msgstr "" -#: lib/mv_web/live/contribution_period_live/show.ex:140 -#: lib/mv_web/live/member_live/form.ex:52 -#: lib/mv_web/live/member_live/show.ex:58 +#: lib/mv_web/live/member_live/form.ex:126 +#: lib/mv_web/live/member_live/show.ex:124 #, elixir-autogen, elixir-format msgid "Notes" msgstr "" #: lib/mv_web/live/components/payment_filter_component.ex:94 #: lib/mv_web/live/components/payment_filter_component.ex:144 -#: lib/mv_web/live/contribution_period_live/show.ex:186 -#: lib/mv_web/live/contribution_period_live/show.ex:241 -#: lib/mv_web/live/member_live/form.ex:48 +#: lib/mv_web/live/member_live/form.ex:199 #: lib/mv_web/live/member_live/index.html.heex:229 -#: lib/mv_web/live/member_live/show.ex:52 +#: lib/mv_web/live/member_live/show.ex:162 +#: lib/mv_web/live/member_live/show.ex:164 #, elixir-autogen, elixir-format msgid "Paid" msgstr "" -#: lib/mv_web/live/member_live/form.ex:49 #: lib/mv_web/live/member_live/index.html.heex:202 -#: lib/mv_web/live/member_live/show.ex:55 #, elixir-autogen, elixir-format msgid "Phone Number" msgstr "" -#: lib/mv_web/live/member_live/form.ex:56 +#: lib/mv_web/live/member_live/form.ex:97 #: lib/mv_web/live/member_live/index.html.heex:166 -#: lib/mv_web/live/member_live/show.ex:62 #, elixir-autogen, elixir-format msgid "Postal Code" msgstr "" -#: lib/mv_web/live/member_live/form.ex:79 +#: lib/mv_web/live/member_live/form.ex:211 #, elixir-autogen, elixir-format, fuzzy msgid "Save Member" msgstr "" @@ -166,58 +156,48 @@ msgstr "" #: lib/mv_web/live/custom_field_live/form.ex:66 #: lib/mv_web/live/custom_field_value_live/form.ex:74 #: lib/mv_web/live/global_settings_live.ex:55 -#: lib/mv_web/live/member_live/form.ex:78 -#: lib/mv_web/live/user_live/form.ex:249 +#: lib/mv_web/live/member_live/form.ex:48 +#: lib/mv_web/live/member_live/form.ex:210 +#: lib/mv_web/live/user_live/form.ex:248 #, elixir-autogen, elixir-format msgid "Saving..." msgstr "" -#: lib/mv_web/live/member_live/form.ex:54 +#: lib/mv_web/live/member_live/form.ex:91 #: lib/mv_web/live/member_live/index.html.heex:130 -#: lib/mv_web/live/member_live/show.ex:60 #, elixir-autogen, elixir-format msgid "Street" msgstr "" -#: lib/mv_web/live/member_live/show.ex:48 -#, elixir-autogen, elixir-format -msgid "Id" -msgstr "" - #: lib/mv_web/live/member_live/index.html.heex:234 -#: lib/mv_web/live/member_live/index/formatter.ex:62 -#: lib/mv_web/live/member_live/show.ex:53 +#: lib/mv_web/live/member_live/index/formatter.ex:61 +#: lib/mv_web/live/member_live/show.ex:303 #, elixir-autogen, elixir-format msgid "No" msgstr "" -#: lib/mv_web/live/member_live/show.ex:113 +#: lib/mv_web/live/member_live/show.ex:196 #, elixir-autogen, elixir-format, fuzzy msgid "Show Member" msgstr "" -#: lib/mv_web/live/member_live/show.ex:34 -#, elixir-autogen, elixir-format -msgid "This is a member record from your database." -msgstr "" - #: lib/mv_web/live/member_live/index.html.heex:234 -#: lib/mv_web/live/member_live/index/formatter.ex:61 -#: lib/mv_web/live/member_live/show.ex:53 +#: lib/mv_web/live/member_live/index/formatter.ex:60 +#: lib/mv_web/live/member_live/show.ex:303 #, elixir-autogen, elixir-format msgid "Yes" msgstr "" #: lib/mv_web/live/custom_field_live/form.ex:110 #: lib/mv_web/live/custom_field_value_live/form.ex:233 -#: lib/mv_web/live/member_live/form.ex:137 +#: lib/mv_web/live/member_live/form.ex:269 #, elixir-autogen, elixir-format msgid "create" msgstr "" #: lib/mv_web/live/custom_field_live/form.ex:111 #: lib/mv_web/live/custom_field_value_live/form.ex:234 -#: lib/mv_web/live/member_live/form.ex:138 +#: lib/mv_web/live/member_live/form.ex:270 #, elixir-autogen, elixir-format msgid "update" msgstr "" @@ -227,7 +207,7 @@ msgstr "" msgid "Incorrect email or password" msgstr "" -#: lib/mv_web/live/member_live/form.ex:144 +#: lib/mv_web/live/member_live/form.ex:276 #, elixir-autogen, elixir-format msgid "Member %{action} successfully" msgstr "" @@ -260,8 +240,8 @@ msgstr "" #: lib/mv_web/live/custom_field_live/form.ex:69 #: lib/mv_web/live/custom_field_live/index.ex:120 #: lib/mv_web/live/custom_field_value_live/form.ex:77 -#: lib/mv_web/live/member_live/form.ex:81 -#: lib/mv_web/live/user_live/form.ex:252 +#: lib/mv_web/live/member_live/form.ex:208 +#: lib/mv_web/live/user_live/form.ex:251 #, elixir-autogen, elixir-format msgid "Cancel" msgstr "" @@ -281,17 +261,22 @@ msgstr "" msgid "Edit User" msgstr "" -#: lib/mv_web/live/user_live/show.ex:51 +#: lib/mv_web/live/user_live/show.ex:53 #, elixir-autogen, elixir-format msgid "Enabled" msgstr "" +#: lib/mv_web/live/user_live/show.ex:49 +#, elixir-autogen, elixir-format +msgid "ID" +msgstr "" + #: lib/mv_web/live/custom_field_live/form.ex:62 #, elixir-autogen, elixir-format msgid "Immutable" msgstr "" -#: lib/mv_web/components/layouts/navbar.ex:113 +#: lib/mv_web/components/layouts/navbar.ex:102 #, elixir-autogen, elixir-format msgid "Logout" msgstr "" @@ -303,19 +288,18 @@ msgid "Listing Users" msgstr "" #: lib/mv_web/live/custom_field_value_live/form.ex:60 +#: lib/mv_web/live/member_live/form.ex:242 #, elixir-autogen, elixir-format msgid "Member" msgstr "" #: lib/mv_web/components/layouts/navbar.ex:25 -#: lib/mv_web/live/contribution_type_live/index.ex:61 -#: lib/mv_web/live/member_live/index.ex:74 +#: lib/mv_web/live/member_live/index.ex:73 #: lib/mv_web/live/member_live/index.html.heex:3 #, elixir-autogen, elixir-format msgid "Members" msgstr "" -#: lib/mv_web/live/contribution_type_live/index.ex:48 #: lib/mv_web/live/custom_field_live/form.ex:51 #, elixir-autogen, elixir-format msgid "Name" @@ -326,12 +310,16 @@ msgstr "" msgid "New User" msgstr "" -#: lib/mv_web/live/user_live/show.ex:51 +#: lib/mv_web/live/user_live/show.ex:53 #, elixir-autogen, elixir-format msgid "Not enabled" msgstr "" -#: lib/mv_web/live/contribution_period_live/show.ex:207 +#: lib/mv_web/live/user_live/show.ex:51 +#, elixir-autogen, elixir-format, fuzzy +msgid "Not set" +msgstr "" + #: lib/mv_web/live/user_live/form.ex:107 #: lib/mv_web/live/user_live/form.ex:115 #: lib/mv_web/live/user_live/form.ex:224 @@ -339,12 +327,18 @@ msgstr "" msgid "Note" msgstr "" -#: lib/mv_web/live/user_live/show.ex:50 +#: lib/mv_web/live/user_live/index.html.heex:52 +#: lib/mv_web/live/user_live/show.ex:51 +#, elixir-autogen, elixir-format +msgid "OIDC ID" +msgstr "" + +#: lib/mv_web/live/user_live/show.ex:52 #, elixir-autogen, elixir-format msgid "Password Authentication" msgstr "" -#: lib/mv_web/components/layouts/navbar.ex:106 +#: lib/mv_web/components/layouts/navbar.ex:95 #, elixir-autogen, elixir-format msgid "Profil" msgstr "" @@ -364,17 +358,17 @@ msgstr "" msgid "Select member" msgstr "" -#: lib/mv_web/components/layouts/navbar.ex:110 +#: lib/mv_web/components/layouts/navbar.ex:99 #, elixir-autogen, elixir-format msgid "Settings" msgstr "" -#: lib/mv_web/live/user_live/form.ex:250 +#: lib/mv_web/live/user_live/form.ex:249 #, elixir-autogen, elixir-format, fuzzy msgid "Save User" msgstr "" -#: lib/mv_web/live/user_live/show.ex:77 +#: lib/mv_web/live/user_live/show.ex:79 #, elixir-autogen, elixir-format, fuzzy msgid "Show User" msgstr "" @@ -394,7 +388,7 @@ msgstr "" msgid "Use this form to manage user records in your database." msgstr "" -#: lib/mv_web/live/user_live/form.ex:268 +#: lib/mv_web/live/user_live/form.ex:266 #: lib/mv_web/live/user_live/show.ex:34 #, elixir-autogen, elixir-format msgid "User" @@ -422,7 +416,8 @@ msgstr "" msgid "descending" msgstr "" -#: lib/mv_web/live/user_live/form.ex:267 +#: lib/mv_web/live/member_live/form.ex:241 +#: lib/mv_web/live/user_live/form.ex:265 #, elixir-autogen, elixir-format msgid "New" msgstr "" @@ -498,30 +493,29 @@ msgid "User will be created without a password. Check 'Set Password' to add one. msgstr "User will be created without a password. Check 'Set Password' to add one." #: lib/mv_web/live/user_live/form.ex:126 -#: lib/mv_web/live/user_live/index.html.heex:52 -#: lib/mv_web/live/user_live/show.ex:53 +#: lib/mv_web/live/user_live/index.html.heex:53 +#: lib/mv_web/live/user_live/show.ex:55 #, elixir-autogen, elixir-format, fuzzy msgid "Linked Member" msgstr "" -#: lib/mv_web/live/member_live/show.ex:63 +#: lib/mv_web/live/member_live/show.ex:106 #, elixir-autogen, elixir-format msgid "Linked User" msgstr "" -#: lib/mv_web/live/user_live/index.html.heex:56 -#: lib/mv_web/live/user_live/show.ex:63 +#: lib/mv_web/live/user_live/index.html.heex:57 +#: lib/mv_web/live/user_live/show.ex:65 #, elixir-autogen, elixir-format msgid "No member linked" msgstr "" -#: lib/mv_web/live/member_live/show.ex:73 +#: lib/mv_web/live/member_live/show.ex:116 #, elixir-autogen, elixir-format msgid "No user linked" msgstr "" -#: lib/mv_web/live/member_live/show.ex:37 -#: lib/mv_web/live/member_live/show.ex:39 +#: lib/mv_web/live/member_live/show.ex:30 #, elixir-autogen, elixir-format msgid "Back to members list" msgstr "" @@ -532,14 +526,14 @@ msgstr "" msgid "Back to users list" msgstr "" -#: lib/mv_web/components/layouts/navbar.ex:44 -#: lib/mv_web/components/layouts/navbar.ex:50 +#: lib/mv_web/components/layouts/navbar.ex:33 +#: lib/mv_web/components/layouts/navbar.ex:39 #, elixir-autogen, elixir-format, fuzzy msgid "Select language" msgstr "" -#: lib/mv_web/components/layouts/navbar.ex:57 -#: lib/mv_web/components/layouts/navbar.ex:77 +#: lib/mv_web/components/layouts/navbar.ex:46 +#: lib/mv_web/components/layouts/navbar.ex:66 #, elixir-autogen, elixir-format msgid "Toggle dark mode" msgstr "" @@ -602,12 +596,6 @@ msgstr "" msgid "Choose a custom field" msgstr "" -#: lib/mv_web/live/member_live/form.ex:58 -#: lib/mv_web/live/member_live/show.ex:78 -#, elixir-autogen, elixir-format -msgid "Custom Field Values" -msgstr "" - #: lib/mv_web/live/custom_field_value_live/form.ex:51 #, elixir-autogen, elixir-format msgid "Custom field" @@ -644,6 +632,8 @@ msgid "Use this form to manage custom_field records in your database." msgstr "" #: lib/mv_web/components/layouts/navbar.ex:26 +#: lib/mv_web/live/member_live/form.ex:135 +#: lib/mv_web/live/member_live/show.ex:136 #, elixir-autogen, elixir-format, fuzzy msgid "Custom Fields" msgstr "" @@ -711,7 +701,6 @@ msgstr "" msgid "Manage global settings for the association." msgstr "" -#: lib/mv_web/live/contribution_settings_live.ex:102 #: lib/mv_web/live/global_settings_live.ex:56 #, elixir-autogen, elixir-format, fuzzy msgid "Save Settings" @@ -732,7 +721,7 @@ msgstr "" msgid "Available members" msgstr "" -#: lib/mv_web/live/user_live/form.ex:359 +#: lib/mv_web/live/user_live/form.ex:357 #, elixir-autogen, elixir-format msgid "Failed to link member: %{error}" msgstr "" @@ -772,7 +761,7 @@ msgstr "" msgid "Unlinking scheduled" msgstr "" -#: lib/mv_web/live/member_live/index.ex:160 +#: lib/mv_web/live/member_live/index.ex:159 #, elixir-autogen, elixir-format msgid "Copied %{count} email address to clipboard" msgid_plural "Copied %{count} email addresses to clipboard" @@ -789,12 +778,12 @@ msgstr "" msgid "Copy emails" msgstr "" -#: lib/mv_web/live/member_live/index.ex:149 +#: lib/mv_web/live/member_live/index.ex:148 #, elixir-autogen, elixir-format msgid "No email addresses found" msgstr "" -#: lib/mv_web/live/member_live/index.ex:146 +#: lib/mv_web/live/member_live/index.ex:145 #, elixir-autogen, elixir-format, fuzzy msgid "No members selected" msgstr "" @@ -809,16 +798,11 @@ msgstr "" msgid "Open in email program" msgstr "" -#: lib/mv_web/live/member_live/index.ex:169 +#: lib/mv_web/live/member_live/index.ex:168 #, elixir-autogen, elixir-format msgid "Tip: Paste email addresses into the BCC field for privacy compliance" msgstr "" -#: lib/mv_web/live/member_live/form.ex:40 -#, elixir-autogen, elixir-format -msgid "Fields marked with an asterisk (*) cannot be empty." -msgstr "" - #: lib/mv_web/components/core_components.ex:206 #: lib/mv_web/components/core_components.ex:223 #: lib/mv_web/components/core_components.ex:250 @@ -849,456 +833,103 @@ msgstr "" msgid "Payment filter" msgstr "" -#: lib/mv_web/live/contribution_period_live/show.ex:107 +#: lib/mv_web/live/member_live/show.ex:70 #, elixir-autogen, elixir-format -msgid "%{count} period selected" -msgid_plural "%{count} periods selected" -msgstr[0] "" -msgstr[1] "" - -#: lib/mv_web/live/contribution_type_live/index.ex:113 -#, elixir-autogen, elixir-format -msgid "About Contribution Types" +msgid "Address" msgstr "" -#: lib/mv_web/live/contribution_period_live/show.ex:138 -#: lib/mv_web/live/contribution_type_live/index.ex:53 +#: lib/mv_web/live/member_live/form.ex:37 +#: lib/mv_web/live/member_live/show.ex:32 #, elixir-autogen, elixir-format -msgid "Amount" +msgid "Back" msgstr "" -#: lib/mv_web/live/contribution_period_live/show.ex:48 +#: lib/mv_web/live/member_live/form.ex:65 +#: lib/mv_web/live/member_live/show.ex:50 #, elixir-autogen, elixir-format -msgid "Back to Settings" +msgid "Coming soon" msgstr "" -#: lib/mv_web/live/contribution_type_live/index.ex:124 +#: lib/mv_web/live/member_live/form.ex:57 +#: lib/mv_web/live/member_live/show.ex:48 #, elixir-autogen, elixir-format -msgid "Can be changed at any time. Amount changes affect future periods only." +msgid "Contact Data" msgstr "" -#: lib/mv_web/live/contribution_type_live/index.ex:77 +#: lib/mv_web/live/member_live/form.ex:175 +#: lib/mv_web/live/member_live/show.ex:160 #, elixir-autogen, elixir-format -msgid "Cannot delete - members assigned" +msgid "Contribution" msgstr "" -#: lib/mv_web/live/contribution_period_live/show.ex:83 +#: lib/mv_web/live/member_live/form.ex:94 #, elixir-autogen, elixir-format -msgid "Change Contribution Type" +msgid "Nr." msgstr "" -#: lib/mv_web/live/contribution_settings_live.ex:42 -#, elixir-autogen, elixir-format -msgid "Configure global settings for membership contributions." -msgstr "" - -#: lib/mv_web/components/layouts/navbar.ex:34 -#: lib/mv_web/live/contribution_settings_live.ex:27 -#: lib/mv_web/live/contribution_settings_live.ex:40 -#, elixir-autogen, elixir-format -msgid "Contribution Settings" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:62 -#, elixir-autogen, elixir-format -msgid "Contribution Start" -msgstr "" - -#: lib/mv_web/components/layouts/navbar.ex:32 -#: lib/mv_web/live/contribution_type_live/index.ex:25 -#: lib/mv_web/live/contribution_type_live/index.ex:36 -#, elixir-autogen, elixir-format -msgid "Contribution Types" -msgstr "" - -#: lib/mv_web/live/contribution_settings_live.ex:224 -#, elixir-autogen, elixir-format -msgid "Contribution start" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:41 -#, elixir-autogen, elixir-format -msgid "Contribution type" -msgstr "" - -#: lib/mv_web/live/contribution_type_live/index.ex:117 -#, elixir-autogen, elixir-format -msgid "Contribution types define different membership fee structures. Each type has a fixed interval (monthly, quarterly, half-yearly, yearly) that cannot be changed after creation." -msgstr "" - -#: lib/mv_web/components/layouts/navbar.ex:30 -#, elixir-autogen, elixir-format -msgid "Contributions" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:39 -#, elixir-autogen, elixir-format -msgid "Contributions for %{name}" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:159 -#, elixir-autogen, elixir-format -msgid "Current" -msgstr "" - -#: lib/mv_web/live/contribution_settings_live.ex:60 -#, elixir-autogen, elixir-format -msgid "Default Contribution Type" -msgstr "" - -#: lib/mv_web/live/contribution_type_live/index.ex:133 +#: lib/mv_web/live/member_live/form.ex:186 +#: lib/mv_web/live/member_live/show.ex:161 #, elixir-autogen, elixir-format, fuzzy -msgid "Deletion" +msgid "Payment Cycle" msgstr "" -#: lib/mv_web/live/contribution_settings_live.ex:173 +#: lib/mv_web/live/member_live/form.ex:166 +#: lib/mv_web/live/member_live/show.ex:153 #, elixir-autogen, elixir-format -msgid "Example: Member Contribution View" +msgid "Payment Data" msgstr "" -#: lib/mv_web/live/contribution_settings_live.ex:113 +#: lib/mv_web/live/member_live/form.ex:68 +#: lib/mv_web/live/member_live/show.ex:52 #, elixir-autogen, elixir-format -msgid "Examples" +msgid "Payments" msgstr "" -#: lib/mv_web/live/contribution_settings_live.ex:262 -#: lib/mv_web/live/contribution_type_live/index.ex:172 -#, elixir-autogen, elixir-format -msgid "Family" -msgstr "" - -#: lib/mv_web/live/contribution_type_live/index.ex:128 -#, elixir-autogen, elixir-format -msgid "Fixed after creation. Members can only switch between types with the same interval." -msgstr "" - -#: lib/mv_web/live/contribution_settings_live.ex:228 -#, elixir-autogen, elixir-format -msgid "Generated periods" -msgstr "" - -#: lib/mv_web/live/contribution_settings_live.ex:52 +#: lib/mv_web/live/member_live/show.ex:166 #, elixir-autogen, elixir-format, fuzzy -msgid "Global Settings" +msgid "Pending" msgstr "" -#: lib/mv_web/live/contribution_period_live/show.ex:343 -#: lib/mv_web/live/contribution_settings_live.ex:275 -#: lib/mv_web/live/contribution_type_live/index.ex:203 +#: lib/mv_web/live/member_live/form.ex:76 +#: lib/mv_web/live/member_live/show.ex:60 #, elixir-autogen, elixir-format -msgid "Half-yearly" +msgid "Personal Data" msgstr "" -#: lib/mv_web/live/contribution_type_live/index.ex:181 -#, elixir-autogen, elixir-format -msgid "Half-yearly contribution for supporting members" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:87 -#: lib/mv_web/live/contribution_type_live/index.ex:188 -#, elixir-autogen, elixir-format -msgid "Honorary" -msgstr "" - -#: lib/mv_web/live/contribution_settings_live.ex:85 -#, elixir-autogen, elixir-format -msgid "Include joining period" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:137 -#: lib/mv_web/live/contribution_type_live/index.ex:57 -#: lib/mv_web/live/contribution_type_live/index.ex:127 -#, elixir-autogen, elixir-format -msgid "Interval" -msgstr "" - -#: lib/mv_web/live/contribution_settings_live.ex:220 +#: lib/mv_web/live/member_live/form.ex:111 +#: lib/mv_web/live/member_live/show.ex:87 #, elixir-autogen, elixir-format, fuzzy -msgid "Joining date" +msgid "Phone" msgstr "" -#: lib/mv_web/live/contribution_period_live/show.ex:331 -#, elixir-autogen, elixir-format -msgid "Joining year - reduced to 0" -msgstr "" - -#: lib/mv_web/live/contribution_type_live/index.ex:38 -#, elixir-autogen, elixir-format -msgid "Manage contribution types for membership fees." -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:116 -#, elixir-autogen, elixir-format -msgid "Mark as Paid" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:120 -#, elixir-autogen, elixir-format -msgid "Mark as Suspended" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:124 -#, elixir-autogen, elixir-format -msgid "Mark as Unpaid" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:26 -#, elixir-autogen, elixir-format -msgid "Member Contributions" -msgstr "" - -#: lib/mv_web/live/contribution_settings_live.ex:122 -#, elixir-autogen, elixir-format -msgid "Member pays for the year they joined" -msgstr "" - -#: lib/mv_web/live/contribution_settings_live.ex:155 -#, elixir-autogen, elixir-format -msgid "Member pays from the joining month" -msgstr "" - -#: lib/mv_web/live/contribution_settings_live.ex:144 -#, elixir-autogen, elixir-format -msgid "Member pays from the next full quarter" -msgstr "" - -#: lib/mv_web/live/contribution_settings_live.ex:133 -#, elixir-autogen, elixir-format -msgid "Member pays from the next full year" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:43 +#: lib/mv_web/live/member_live/form.ex:49 #, elixir-autogen, elixir-format, fuzzy -msgid "Member since" +msgid "Save" msgstr "" -#: lib/mv_web/live/contribution_period_live/show.ex:92 +#: lib/mv_web/live/member_live/form.ex:169 +#: lib/mv_web/live/member_live/show.ex:156 #, elixir-autogen, elixir-format -msgid "Members can only switch between contribution types with the same payment interval (e.g., yearly to yearly). This prevents complex period overlaps." +msgid "This data is for demonstration purposes only (mockup)." msgstr "" -#: lib/mv_web/live/contribution_period_live/show.ex:341 -#: lib/mv_web/live/contribution_settings_live.ex:273 -#: lib/mv_web/live/contribution_type_live/index.ex:201 +#: lib/mv_web/live/member_live/form.ex:190 +#: lib/mv_web/live/member_live/show.ex:161 #, elixir-autogen, elixir-format -msgid "Monthly" +msgid "monthly" msgstr "" -#: lib/mv_web/live/contribution_settings_live.ex:150 +#: lib/mv_web/live/member_live/form.ex:194 #, elixir-autogen, elixir-format -msgid "Monthly Interval - Joining Period Included" +msgid "yearly" msgstr "" -#: lib/mv_web/live/contribution_type_live/index.ex:165 -#, elixir-autogen, elixir-format -msgid "Monthly fee for students and trainees" -msgstr "" - -#: lib/mv_web/live/contribution_type_live/index.ex:123 -#, elixir-autogen, elixir-format -msgid "Name & Amount" -msgstr "" - -#: lib/mv_web/live/contribution_type_live/index.ex:42 -#, elixir-autogen, elixir-format -msgid "New Contribution Type" -msgstr "" - -#: lib/mv_web/live/contribution_type_live/index.ex:189 -#, elixir-autogen, elixir-format -msgid "No fee for honorary members" -msgstr "" - -#: lib/mv_web/live/contribution_type_live/index.ex:134 -#, elixir-autogen, elixir-format -msgid "Only possible if no members are assigned to this type." -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:70 -#, elixir-autogen, elixir-format -msgid "Open Contributions" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:301 -#, elixir-autogen, elixir-format -msgid "Paid via bank transfer" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:225 -#: lib/mv_web/live/contribution_settings_live.ex:197 -#: lib/mv_web/live/contribution_type_live/index.ex:97 -#, elixir-autogen, elixir-format -msgid "Preview Mockup" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:342 -#: lib/mv_web/live/contribution_settings_live.ex:274 -#: lib/mv_web/live/contribution_type_live/index.ex:202 -#, elixir-autogen, elixir-format -msgid "Quarterly" -msgstr "" - -#: lib/mv_web/live/contribution_settings_live.ex:139 -#, elixir-autogen, elixir-format -msgid "Quarterly Interval - Joining Period Excluded" -msgstr "" - -#: lib/mv_web/live/contribution_type_live/index.ex:173 -#, elixir-autogen, elixir-format -msgid "Quarterly fee for family memberships" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:86 -#: lib/mv_web/live/contribution_settings_live.ex:250 -#: lib/mv_web/live/contribution_type_live/index.ex:156 -#, elixir-autogen, elixir-format -msgid "Reduced" -msgstr "" - -#: lib/mv_web/live/contribution_type_live/index.ex:157 -#, elixir-autogen, elixir-format -msgid "Reduced fee for unemployed, pensioners, or low income" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:275 -#: lib/mv_web/live/contribution_settings_live.ex:244 -#: lib/mv_web/live/contribution_type_live/index.ex:148 -#, elixir-autogen, elixir-format -msgid "Regular" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:204 -#, elixir-autogen, elixir-format -msgid "Reopen" -msgstr "" - -#: lib/mv_web/live/contribution_settings_live.ex:176 -#, elixir-autogen, elixir-format -msgid "See how the contribution periods will be displayed for an individual member. This example shows Maria Weber with multiple contribution periods." -msgstr "" - -#: lib/mv_web/live/contribution_type_live/index.ex:149 -#, elixir-autogen, elixir-format -msgid "Standard membership fee for regular members" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:139 -#, elixir-autogen, elixir-format -msgid "Status" -msgstr "" - -#: lib/mv_web/live/contribution_settings_live.ex:256 -#: lib/mv_web/live/contribution_type_live/index.ex:164 -#, elixir-autogen, elixir-format -msgid "Student" -msgstr "" - -#: lib/mv_web/live/contribution_type_live/index.ex:180 -#, elixir-autogen, elixir-format -msgid "Supporting Member" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:195 -#, elixir-autogen, elixir-format -msgid "Suspend" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:259 -#, elixir-autogen, elixir-format -msgid "Suspended" -msgstr "" - -#: lib/mv_web/live/contribution_settings_live.ex:69 -#, elixir-autogen, elixir-format -msgid "This contribution type is automatically assigned to all new members. Can be changed individually per member." -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:227 -#: lib/mv_web/live/contribution_settings_live.ex:199 -#: lib/mv_web/live/contribution_type_live/index.ex:99 -#, elixir-autogen, elixir-format -msgid "This page is not functional and only displays the planned features." -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:136 -#, elixir-autogen, elixir-format -msgid "Time Period" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:66 -#, elixir-autogen, elixir-format -msgid "Total Contributions" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:250 -#, elixir-autogen, elixir-format -msgid "Unpaid" -msgstr "" - -#: lib/mv_web/live/contribution_settings_live.ex:183 -#, elixir-autogen, elixir-format -msgid "View Example Member" -msgstr "" - -#: lib/mv_web/live/contribution_settings_live.ex:90 -#, elixir-autogen, elixir-format -msgid "When active: Members pay from the period of their joining." -msgstr "" - -#: lib/mv_web/live/contribution_settings_live.ex:93 -#, elixir-autogen, elixir-format -msgid "When inactive: Members pay from the next full period after joining." -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:98 -#, elixir-autogen, elixir-format -msgid "Why are not all contribution types shown?" -msgstr "" - -#: lib/mv_web/live/contribution_period_live/show.ex:85 -#: lib/mv_web/live/contribution_period_live/show.ex:86 -#: lib/mv_web/live/contribution_period_live/show.ex:87 -#: lib/mv_web/live/contribution_period_live/show.ex:344 -#: lib/mv_web/live/contribution_settings_live.ex:276 -#: lib/mv_web/live/contribution_type_live/index.ex:204 -#, elixir-autogen, elixir-format -msgid "Yearly" -msgstr "" - -#: lib/mv_web/live/contribution_settings_live.ex:128 -#, elixir-autogen, elixir-format -msgid "Yearly Interval - Joining Period Excluded" -msgstr "" - -#: lib/mv_web/live/contribution_settings_live.ex:117 -#, elixir-autogen, elixir-format -msgid "Yearly Interval - Joining Period Included" -msgstr "" - -#~ #: lib/mv_web/live/member_live/form.ex:48 -#~ #: lib/mv_web/live/member_live/show.ex:51 +#~ #: lib/mv_web/live/member_live/show.ex:47 #~ #, elixir-autogen, elixir-format -#~ msgid "Birth Date" +#~ msgid "Id" #~ msgstr "" -#~ #: lib/mv_web/live/user_live/show.ex:49 +#~ #: lib/mv_web/live/member_live/show.ex:33 #~ #, elixir-autogen, elixir-format -#~ msgid "ID" -#~ msgstr "" - -#~ #: lib/mv_web/live/user_live/show.ex:51 -#~ #, elixir-autogen, elixir-format, fuzzy -#~ msgid "Not set" -#~ msgstr "" - -#~ #: lib/mv_web/live/user_live/index.html.heex:52 -#~ #: lib/mv_web/live/user_live/show.ex:51 -#~ #, elixir-autogen, elixir-format -#~ msgid "OIDC ID" -#~ msgstr "" - -#~ #: lib/mv_web/live/contribution_period_live/show.ex:273 -#~ #: lib/mv_web/live/contribution_settings_live.ex:248 -#~ #, elixir-autogen, elixir-format -#~ msgid "Related Pages" +#~ msgid "This is a member record from your database." #~ msgstr "" From 2542bcf9e44649462dfca70033cde8f6ed5611d2 Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 3 Dec 2025 15:22:49 +0100 Subject: [PATCH 2/2] fix: improve gettext translations and deduplicate email formatting in member views --- lib/mv_web/live/member_live/form.ex | 4 +- lib/mv_web/live/member_live/show.ex | 19 +- priv/gettext/de/LC_MESSAGES/default.po | 552 ++++++++++++++++++++++--- priv/gettext/default.pot | 536 +++++++++++++++++++++--- priv/gettext/en/LC_MESSAGES/default.po | 552 ++++++++++++++++++++++--- 5 files changed, 1477 insertions(+), 186 deletions(-) diff --git a/lib/mv_web/live/member_live/form.ex b/lib/mv_web/live/member_live/form.ex index 4781cd5..5380d0f 100644 --- a/lib/mv_web/live/member_live/form.ex +++ b/lib/mv_web/live/member_live/form.ex @@ -238,8 +238,8 @@ defmodule MvWeb.MemberLive.Form do id -> Ash.get!(Mv.Membership.Member, id) end - action = if is_nil(member), do: gettext("New"), else: gettext("Edit") - page_title = "#{action} #{gettext("Member")}" + page_title = + if is_nil(member), do: gettext("Create Member"), else: gettext("Edit Member") {:ok, socket diff --git a/lib/mv_web/live/member_live/show.ex b/lib/mv_web/live/member_live/show.ex index 55d8991..d84fca4 100644 --- a/lib/mv_web/live/member_live/show.ex +++ b/lib/mv_web/live/member_live/show.ex @@ -74,7 +74,7 @@ defmodule MvWeb.MemberLive.Show do
<.data_field label={gettext("Email")}> {@member.email} @@ -240,23 +240,10 @@ defmodule MvWeb.MemberLive.Show do # Helper Functions # ----------------------------------------------------------------- - defp display_value(nil), do: "—" - defp display_value(""), do: "—" + defp display_value(nil), do: "" + defp display_value(""), do: "" defp display_value(value), do: value - defp format_email_mailto(first_name, last_name, email) do - name = - [first_name, last_name] - |> Enum.filter(&(&1 && &1 != "")) - |> Enum.join(" ") - - if name != "" do - "#{name} <#{email}>" - else - email - end - end - defp format_address(member) do street_part = [member.street, member.house_number] diff --git a/priv/gettext/de/LC_MESSAGES/default.po b/priv/gettext/de/LC_MESSAGES/default.po index c6f2028..ac40975 100644 --- a/priv/gettext/de/LC_MESSAGES/default.po +++ b/priv/gettext/de/LC_MESSAGES/default.po @@ -10,13 +10,14 @@ msgid "" msgstr "" "Language: en\n" -#: lib/mv_web/components/core_components.ex:386 +#: lib/mv_web/components/core_components.ex:387 +#: lib/mv_web/live/contribution_period_live/show.ex:141 #, elixir-autogen, elixir-format msgid "Actions" msgstr "Aktionen" #: lib/mv_web/live/member_live/index.html.heex:248 -#: lib/mv_web/live/user_live/index.html.heex:72 +#: lib/mv_web/live/user_live/index.html.heex:71 #, elixir-autogen, elixir-format msgid "Are you sure?" msgstr "Bist du sicher?" @@ -33,32 +34,35 @@ msgstr "Verbindung wird wiederhergestellt" msgid "City" msgstr "Stadt" +#: lib/mv_web/live/contribution_type_live/index.ex:78 #: lib/mv_web/live/member_live/index.html.heex:250 -#: lib/mv_web/live/user_live/index.html.heex:74 +#: lib/mv_web/live/user_live/index.html.heex:73 #, elixir-autogen, elixir-format msgid "Delete" msgstr "Löschen" -#: lib/mv_web/live/member_live/form.ex:241 +#: lib/mv_web/live/contribution_type_live/index.ex:66 #: lib/mv_web/live/member_live/index.html.heex:242 -#: lib/mv_web/live/user_live/form.ex:265 -#: lib/mv_web/live/user_live/index.html.heex:66 +#: lib/mv_web/live/user_live/form.ex:267 +#: lib/mv_web/live/user_live/index.html.heex:65 #, elixir-autogen, elixir-format msgid "Edit" msgstr "Bearbeite" +#: lib/mv_web/live/member_live/form.ex:242 #: lib/mv_web/live/member_live/show.ex:40 #: lib/mv_web/live/member_live/show.ex:197 #, elixir-autogen, elixir-format msgid "Edit Member" msgstr "Mitglied bearbeiten" +#: lib/mv_web/live/contribution_period_live/show.ex:58 #: lib/mv_web/live/member_live/form.ex:106 #: lib/mv_web/live/member_live/index.html.heex:112 #: lib/mv_web/live/member_live/show.ex:75 #: lib/mv_web/live/user_live/form.ex:46 #: lib/mv_web/live/user_live/index.html.heex:44 -#: lib/mv_web/live/user_live/show.ex:50 +#: lib/mv_web/live/user_live/show.ex:49 #, elixir-autogen, elixir-format msgid "Email" msgstr "E-Mail" @@ -89,7 +93,7 @@ msgid "New Member" msgstr "Neues Mitglied" #: lib/mv_web/live/member_live/index.html.heex:239 -#: lib/mv_web/live/user_live/index.html.heex:63 +#: lib/mv_web/live/user_live/index.html.heex:62 #, elixir-autogen, elixir-format msgid "Show" msgstr "Anzeigen" @@ -120,6 +124,7 @@ msgstr "Austrittsdatum" msgid "House Number" msgstr "Hausnummer" +#: lib/mv_web/live/contribution_period_live/show.ex:140 #: lib/mv_web/live/member_live/form.ex:126 #: lib/mv_web/live/member_live/show.ex:124 #, elixir-autogen, elixir-format @@ -128,6 +133,8 @@ msgstr "Notizen" #: lib/mv_web/live/components/payment_filter_component.ex:94 #: lib/mv_web/live/components/payment_filter_component.ex:144 +#: lib/mv_web/live/contribution_period_live/show.ex:186 +#: lib/mv_web/live/contribution_period_live/show.ex:241 #: lib/mv_web/live/member_live/form.ex:199 #: lib/mv_web/live/member_live/index.html.heex:229 #: lib/mv_web/live/member_live/show.ex:162 @@ -157,7 +164,7 @@ msgstr "Mitglied speichern" #: lib/mv_web/live/global_settings_live.ex:55 #: lib/mv_web/live/member_live/form.ex:48 #: lib/mv_web/live/member_live/form.ex:210 -#: lib/mv_web/live/user_live/form.ex:248 +#: lib/mv_web/live/user_live/form.ex:249 #, elixir-autogen, elixir-format msgid "Saving..." msgstr "Speichern..." @@ -169,8 +176,8 @@ msgid "Street" msgstr "Straße" #: lib/mv_web/live/member_live/index.html.heex:234 -#: lib/mv_web/live/member_live/index/formatter.ex:61 -#: lib/mv_web/live/member_live/show.ex:303 +#: lib/mv_web/live/member_live/index/formatter.ex:62 +#: lib/mv_web/live/member_live/show.ex:290 #, elixir-autogen, elixir-format msgid "No" msgstr "Nein" @@ -181,8 +188,8 @@ msgid "Show Member" msgstr "Mitglied anzeigen" #: lib/mv_web/live/member_live/index.html.heex:234 -#: lib/mv_web/live/member_live/index/formatter.ex:60 -#: lib/mv_web/live/member_live/show.ex:303 +#: lib/mv_web/live/member_live/index/formatter.ex:61 +#: lib/mv_web/live/member_live/show.ex:290 #, elixir-autogen, elixir-format msgid "Yes" msgstr "Ja" @@ -240,7 +247,7 @@ msgstr "Ihr Passwort wurde erfolgreich zurückgesetzt" #: lib/mv_web/live/custom_field_live/index.ex:120 #: lib/mv_web/live/custom_field_value_live/form.ex:77 #: lib/mv_web/live/member_live/form.ex:208 -#: lib/mv_web/live/user_live/form.ex:251 +#: lib/mv_web/live/user_live/form.ex:252 #, elixir-autogen, elixir-format msgid "Cancel" msgstr "Abbrechen" @@ -260,22 +267,17 @@ msgstr "Beschreibung" msgid "Edit User" msgstr "Benutzer*in bearbeiten" -#: lib/mv_web/live/user_live/show.ex:53 +#: lib/mv_web/live/user_live/show.ex:51 #, elixir-autogen, elixir-format msgid "Enabled" msgstr "Aktiviert" -#: lib/mv_web/live/user_live/show.ex:49 -#, elixir-autogen, elixir-format -msgid "ID" -msgstr "ID" - #: lib/mv_web/live/custom_field_live/form.ex:62 #, elixir-autogen, elixir-format msgid "Immutable" msgstr "Unveränderlich" -#: lib/mv_web/components/layouts/navbar.ex:102 +#: lib/mv_web/components/layouts/navbar.ex:113 #, elixir-autogen, elixir-format msgid "Logout" msgstr "Abmelden" @@ -287,18 +289,19 @@ msgid "Listing Users" msgstr "Benutzer*innen auflisten" #: lib/mv_web/live/custom_field_value_live/form.ex:60 -#: lib/mv_web/live/member_live/form.ex:242 #, elixir-autogen, elixir-format msgid "Member" msgstr "Mitglied" #: lib/mv_web/components/layouts/navbar.ex:25 -#: lib/mv_web/live/member_live/index.ex:73 +#: lib/mv_web/live/contribution_type_live/index.ex:61 +#: lib/mv_web/live/member_live/index.ex:74 #: lib/mv_web/live/member_live/index.html.heex:3 #, elixir-autogen, elixir-format msgid "Members" msgstr "Mitglieder" +#: lib/mv_web/live/contribution_type_live/index.ex:48 #: lib/mv_web/live/custom_field_live/form.ex:51 #, elixir-autogen, elixir-format msgid "Name" @@ -309,16 +312,12 @@ msgstr "Name" msgid "New User" msgstr "Neue*r Benutzer*in" -#: lib/mv_web/live/user_live/show.ex:53 +#: lib/mv_web/live/user_live/show.ex:51 #, elixir-autogen, elixir-format msgid "Not enabled" msgstr "Nicht aktiviert" -#: lib/mv_web/live/user_live/show.ex:51 -#, elixir-autogen, elixir-format -msgid "Not set" -msgstr "Nicht gesetzt" - +#: lib/mv_web/live/contribution_period_live/show.ex:207 #: lib/mv_web/live/user_live/form.ex:107 #: lib/mv_web/live/user_live/form.ex:115 #: lib/mv_web/live/user_live/form.ex:224 @@ -326,18 +325,12 @@ msgstr "Nicht gesetzt" msgid "Note" msgstr "Hinweis" -#: lib/mv_web/live/user_live/index.html.heex:52 -#: lib/mv_web/live/user_live/show.ex:51 -#, elixir-autogen, elixir-format -msgid "OIDC ID" -msgstr "OIDC ID" - -#: lib/mv_web/live/user_live/show.ex:52 +#: lib/mv_web/live/user_live/show.ex:50 #, elixir-autogen, elixir-format msgid "Password Authentication" msgstr "Passwort-Authentifizierung" -#: lib/mv_web/components/layouts/navbar.ex:95 +#: lib/mv_web/components/layouts/navbar.ex:106 #, elixir-autogen, elixir-format msgid "Profil" msgstr "Profil" @@ -357,17 +350,17 @@ msgstr "Alle Mitglieder auswählen" msgid "Select member" msgstr "Mitglied auswählen" -#: lib/mv_web/components/layouts/navbar.ex:99 +#: lib/mv_web/components/layouts/navbar.ex:110 #, elixir-autogen, elixir-format msgid "Settings" msgstr "Einstellungen" -#: lib/mv_web/live/user_live/form.ex:249 +#: lib/mv_web/live/user_live/form.ex:250 #, elixir-autogen, elixir-format msgid "Save User" msgstr "Benutzer*in speichern" -#: lib/mv_web/live/user_live/show.ex:79 +#: lib/mv_web/live/user_live/show.ex:77 #, elixir-autogen, elixir-format msgid "Show User" msgstr "Benutzer*in anzeigen" @@ -387,7 +380,7 @@ msgstr "Nicht unterstützter Wertetyp: %{type}" msgid "Use this form to manage user records in your database." msgstr "Verwenden Sie dieses Formular, um Benutzer*innen-Datensätze zu verwalten." -#: lib/mv_web/live/user_live/form.ex:266 +#: lib/mv_web/live/user_live/form.ex:268 #: lib/mv_web/live/user_live/show.ex:34 #, elixir-autogen, elixir-format msgid "User" @@ -415,8 +408,7 @@ msgstr "aufsteigend" msgid "descending" msgstr "absteigend" -#: lib/mv_web/live/member_live/form.ex:241 -#: lib/mv_web/live/user_live/form.ex:265 +#: lib/mv_web/live/user_live/form.ex:267 #, elixir-autogen, elixir-format msgid "New" msgstr "Neue*r" @@ -492,8 +484,8 @@ msgid "User will be created without a password. Check 'Set Password' to add one. msgstr "Benutzer*in wird ohne Passwort erstellt. Aktivieren Sie 'Passwort setzen', um eines hinzuzufügen." #: lib/mv_web/live/user_live/form.ex:126 -#: lib/mv_web/live/user_live/index.html.heex:53 -#: lib/mv_web/live/user_live/show.ex:55 +#: lib/mv_web/live/user_live/index.html.heex:52 +#: lib/mv_web/live/user_live/show.ex:53 #, elixir-autogen, elixir-format msgid "Linked Member" msgstr "Verknüpftes Mitglied" @@ -503,8 +495,8 @@ msgstr "Verknüpftes Mitglied" msgid "Linked User" msgstr "Verknüpfte*r Benutzer*in" -#: lib/mv_web/live/user_live/index.html.heex:57 -#: lib/mv_web/live/user_live/show.ex:65 +#: lib/mv_web/live/user_live/index.html.heex:56 +#: lib/mv_web/live/user_live/show.ex:63 #, elixir-autogen, elixir-format msgid "No member linked" msgstr "Kein Mitglied verknüpft" @@ -525,14 +517,14 @@ msgstr "Zurück zur Mitgliederliste" msgid "Back to users list" msgstr "Zurück zur Benutzer*innen-Liste" -#: lib/mv_web/components/layouts/navbar.ex:33 -#: lib/mv_web/components/layouts/navbar.ex:39 +#: lib/mv_web/components/layouts/navbar.ex:44 +#: lib/mv_web/components/layouts/navbar.ex:50 #, elixir-autogen, elixir-format msgid "Select language" msgstr "Sprache auswählen" -#: lib/mv_web/components/layouts/navbar.ex:46 -#: lib/mv_web/components/layouts/navbar.ex:66 +#: lib/mv_web/components/layouts/navbar.ex:57 +#: lib/mv_web/components/layouts/navbar.ex:77 #, elixir-autogen, elixir-format msgid "Toggle dark mode" msgstr "Dunklen Modus umschalten" @@ -700,6 +692,7 @@ msgstr "Vereinsdaten" msgid "Manage global settings for the association." msgstr "Passe übergreifende Einstellungen für den Verein an." +#: lib/mv_web/live/contribution_settings_live.ex:102 #: lib/mv_web/live/global_settings_live.ex:56 #, elixir-autogen, elixir-format, fuzzy msgid "Save Settings" @@ -720,7 +713,7 @@ msgstr "Ein Mitglied mit dieser E-Mail-Adresse existiert bereits. Um mit einem a msgid "Available members" msgstr "Verfügbare Mitglieder" -#: lib/mv_web/live/user_live/form.ex:357 +#: lib/mv_web/live/user_live/form.ex:359 #, elixir-autogen, elixir-format msgid "Failed to link member: %{error}" msgstr "Fehler beim Verlinken des Mitglieds: %{error}" @@ -760,7 +753,7 @@ msgstr "Mitglied entverknüpfen" msgid "Unlinking scheduled" msgstr "Entverknüpfung geplant" -#: lib/mv_web/live/member_live/index.ex:159 +#: lib/mv_web/live/member_live/index.ex:160 #, elixir-autogen, elixir-format msgid "Copied %{count} email address to clipboard" msgid_plural "Copied %{count} email addresses to clipboard" @@ -777,12 +770,12 @@ msgstr "E-Mail-Adressen der ausgewählten Mitglieder kopieren" msgid "Copy emails" msgstr "E-Mails kopieren" -#: lib/mv_web/live/member_live/index.ex:148 +#: lib/mv_web/live/member_live/index.ex:149 #, elixir-autogen, elixir-format msgid "No email addresses found" msgstr "Keine E-Mail-Adressen gefunden" -#: lib/mv_web/live/member_live/index.ex:145 +#: lib/mv_web/live/member_live/index.ex:146 #, elixir-autogen, elixir-format msgid "No members selected" msgstr "Keine Mitglieder ausgewählt" @@ -797,7 +790,7 @@ msgstr "E-Mail-Programm mit BCC-Empfänger*innen öffnen" msgid "Open in email program" msgstr "Im E-Mail-Programm öffnen" -#: lib/mv_web/live/member_live/index.ex:168 +#: lib/mv_web/live/member_live/index.ex:169 #, elixir-autogen, elixir-format msgid "Tip: Paste email addresses into the BCC field for privacy compliance" msgstr "Tipp: E-Mail-Adressen ins BCC-Feld einfügen für Datenschutzkonformität" @@ -923,11 +916,458 @@ msgstr "monatlich" msgid "yearly" msgstr "jährlich" +#: lib/mv_web/live/member_live/form.ex:242 +#, elixir-autogen, elixir-format +msgid "Create Member" +msgstr "Mitglied erstellen" + +#: lib/mv_web/live/contribution_period_live/show.ex:107 +#, elixir-autogen, elixir-format +msgid "%{count} period selected" +msgid_plural "%{count} periods selected" +msgstr[0] "" +msgstr[1] "" + +#: lib/mv_web/live/contribution_type_live/index.ex:113 +#, elixir-autogen, elixir-format +msgid "About Contribution Types" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:138 +#: lib/mv_web/live/contribution_type_live/index.ex:53 +#, elixir-autogen, elixir-format +msgid "Amount" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:48 +#, elixir-autogen, elixir-format +msgid "Back to Settings" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:124 +#, elixir-autogen, elixir-format +msgid "Can be changed at any time. Amount changes affect future periods only." +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:77 +#, elixir-autogen, elixir-format +msgid "Cannot delete - members assigned" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:83 +#, elixir-autogen, elixir-format +msgid "Change Contribution Type" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:42 +#, elixir-autogen, elixir-format +msgid "Configure global settings for membership contributions." +msgstr "" + +#: lib/mv_web/components/layouts/navbar.ex:34 +#: lib/mv_web/live/contribution_settings_live.ex:27 +#: lib/mv_web/live/contribution_settings_live.ex:40 +#, elixir-autogen, elixir-format, fuzzy +msgid "Contribution Settings" +msgstr "Beitrag" + +#: lib/mv_web/live/contribution_period_live/show.ex:62 +#, elixir-autogen, elixir-format, fuzzy +msgid "Contribution Start" +msgstr "Beitrag" + +#: lib/mv_web/components/layouts/navbar.ex:32 +#: lib/mv_web/live/contribution_type_live/index.ex:25 +#: lib/mv_web/live/contribution_type_live/index.ex:36 +#, elixir-autogen, elixir-format, fuzzy +msgid "Contribution Types" +msgstr "Beitrag" + +#: lib/mv_web/live/contribution_settings_live.ex:224 +#, elixir-autogen, elixir-format, fuzzy +msgid "Contribution start" +msgstr "Beitrag" + +#: lib/mv_web/live/contribution_period_live/show.ex:41 +#, elixir-autogen, elixir-format, fuzzy +msgid "Contribution type" +msgstr "Beitrag" + +#: lib/mv_web/live/contribution_type_live/index.ex:117 +#, elixir-autogen, elixir-format +msgid "Contribution types define different membership fee structures. Each type has a fixed interval (monthly, quarterly, half-yearly, yearly) that cannot be changed after creation." +msgstr "" + +#: lib/mv_web/components/layouts/navbar.ex:30 +#, elixir-autogen, elixir-format, fuzzy +msgid "Contributions" +msgstr "Beitrag" + +#: lib/mv_web/live/contribution_period_live/show.ex:39 +#, elixir-autogen, elixir-format, fuzzy +msgid "Contributions for %{name}" +msgstr "Beitrag" + +#: lib/mv_web/live/contribution_period_live/show.ex:159 +#, elixir-autogen, elixir-format +msgid "Current" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:60 +#, elixir-autogen, elixir-format +msgid "Default Contribution Type" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:133 +#, elixir-autogen, elixir-format, fuzzy +msgid "Deletion" +msgstr "Löschen" + +#: lib/mv_web/live/contribution_settings_live.ex:173 +#, elixir-autogen, elixir-format +msgid "Example: Member Contribution View" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:113 +#, elixir-autogen, elixir-format +msgid "Examples" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:262 +#: lib/mv_web/live/contribution_type_live/index.ex:172 +#, elixir-autogen, elixir-format +msgid "Family" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:128 +#, elixir-autogen, elixir-format +msgid "Fixed after creation. Members can only switch between types with the same interval." +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:228 +#, elixir-autogen, elixir-format +msgid "Generated periods" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:52 +#, elixir-autogen, elixir-format, fuzzy +msgid "Global Settings" +msgstr "Vereinsdaten" + +#: lib/mv_web/live/contribution_period_live/show.ex:343 +#: lib/mv_web/live/contribution_settings_live.ex:275 +#: lib/mv_web/live/contribution_type_live/index.ex:203 +#, elixir-autogen, elixir-format +msgid "Half-yearly" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:181 +#, elixir-autogen, elixir-format +msgid "Half-yearly contribution for supporting members" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:87 +#: lib/mv_web/live/contribution_type_live/index.ex:188 +#, elixir-autogen, elixir-format +msgid "Honorary" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:85 +#, elixir-autogen, elixir-format +msgid "Include joining period" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:137 +#: lib/mv_web/live/contribution_type_live/index.ex:57 +#: lib/mv_web/live/contribution_type_live/index.ex:127 +#, elixir-autogen, elixir-format +msgid "Interval" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:220 +#, elixir-autogen, elixir-format, fuzzy +msgid "Joining date" +msgstr "Beitrittsdatum" + +#: lib/mv_web/live/contribution_period_live/show.ex:331 +#, elixir-autogen, elixir-format +msgid "Joining year - reduced to 0" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:38 +#, elixir-autogen, elixir-format +msgid "Manage contribution types for membership fees." +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:116 +#, elixir-autogen, elixir-format +msgid "Mark as Paid" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:120 +#, elixir-autogen, elixir-format +msgid "Mark as Suspended" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:124 +#, elixir-autogen, elixir-format +msgid "Mark as Unpaid" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:26 +#, elixir-autogen, elixir-format +msgid "Member Contributions" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:122 +#, elixir-autogen, elixir-format +msgid "Member pays for the year they joined" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:155 +#, elixir-autogen, elixir-format +msgid "Member pays from the joining month" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:144 +#, elixir-autogen, elixir-format +msgid "Member pays from the next full quarter" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:133 +#, elixir-autogen, elixir-format +msgid "Member pays from the next full year" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:43 +#, elixir-autogen, elixir-format, fuzzy +msgid "Member since" +msgstr "Mitglieder" + +#: lib/mv_web/live/contribution_period_live/show.ex:92 +#, elixir-autogen, elixir-format +msgid "Members can only switch between contribution types with the same payment interval (e.g., yearly to yearly). This prevents complex period overlaps." +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:341 +#: lib/mv_web/live/contribution_settings_live.ex:273 +#: lib/mv_web/live/contribution_type_live/index.ex:201 +#, elixir-autogen, elixir-format, fuzzy +msgid "Monthly" +msgstr "monatlich" + +#: lib/mv_web/live/contribution_settings_live.ex:150 +#, elixir-autogen, elixir-format +msgid "Monthly Interval - Joining Period Included" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:165 +#, elixir-autogen, elixir-format +msgid "Monthly fee for students and trainees" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:123 +#, elixir-autogen, elixir-format +msgid "Name & Amount" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:42 +#, elixir-autogen, elixir-format, fuzzy +msgid "New Contribution Type" +msgstr "Beitrag" + +#: lib/mv_web/live/contribution_type_live/index.ex:189 +#, elixir-autogen, elixir-format +msgid "No fee for honorary members" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:134 +#, elixir-autogen, elixir-format +msgid "Only possible if no members are assigned to this type." +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:70 +#, elixir-autogen, elixir-format +msgid "Open Contributions" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:301 +#, elixir-autogen, elixir-format +msgid "Paid via bank transfer" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:225 +#: lib/mv_web/live/contribution_settings_live.ex:197 +#: lib/mv_web/live/contribution_type_live/index.ex:97 +#, elixir-autogen, elixir-format +msgid "Preview Mockup" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:342 +#: lib/mv_web/live/contribution_settings_live.ex:274 +#: lib/mv_web/live/contribution_type_live/index.ex:202 +#, elixir-autogen, elixir-format +msgid "Quarterly" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:139 +#, elixir-autogen, elixir-format +msgid "Quarterly Interval - Joining Period Excluded" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:173 +#, elixir-autogen, elixir-format +msgid "Quarterly fee for family memberships" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:86 +#: lib/mv_web/live/contribution_settings_live.ex:250 +#: lib/mv_web/live/contribution_type_live/index.ex:156 +#, elixir-autogen, elixir-format +msgid "Reduced" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:157 +#, elixir-autogen, elixir-format +msgid "Reduced fee for unemployed, pensioners, or low income" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:275 +#: lib/mv_web/live/contribution_settings_live.ex:244 +#: lib/mv_web/live/contribution_type_live/index.ex:148 +#, elixir-autogen, elixir-format +msgid "Regular" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:204 +#, elixir-autogen, elixir-format +msgid "Reopen" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:176 +#, elixir-autogen, elixir-format +msgid "See how the contribution periods will be displayed for an individual member. This example shows Maria Weber with multiple contribution periods." +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:149 +#, elixir-autogen, elixir-format +msgid "Standard membership fee for regular members" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:139 +#, elixir-autogen, elixir-format +msgid "Status" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:256 +#: lib/mv_web/live/contribution_type_live/index.ex:164 +#, elixir-autogen, elixir-format +msgid "Student" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:180 +#, elixir-autogen, elixir-format +msgid "Supporting Member" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:195 +#, elixir-autogen, elixir-format +msgid "Suspend" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:259 +#, elixir-autogen, elixir-format +msgid "Suspended" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:69 +#, elixir-autogen, elixir-format +msgid "This contribution type is automatically assigned to all new members. Can be changed individually per member." +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:227 +#: lib/mv_web/live/contribution_settings_live.ex:199 +#: lib/mv_web/live/contribution_type_live/index.ex:99 +#, elixir-autogen, elixir-format +msgid "This page is not functional and only displays the planned features." +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:136 +#, elixir-autogen, elixir-format +msgid "Time Period" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:66 +#, elixir-autogen, elixir-format +msgid "Total Contributions" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:250 +#, elixir-autogen, elixir-format +msgid "Unpaid" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:183 +#, elixir-autogen, elixir-format +msgid "View Example Member" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:90 +#, elixir-autogen, elixir-format +msgid "When active: Members pay from the period of their joining." +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:93 +#, elixir-autogen, elixir-format +msgid "When inactive: Members pay from the next full period after joining." +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:98 +#, elixir-autogen, elixir-format +msgid "Why are not all contribution types shown?" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:85 +#: lib/mv_web/live/contribution_period_live/show.ex:86 +#: lib/mv_web/live/contribution_period_live/show.ex:87 +#: lib/mv_web/live/contribution_period_live/show.ex:344 +#: lib/mv_web/live/contribution_settings_live.ex:276 +#: lib/mv_web/live/contribution_type_live/index.ex:204 +#, elixir-autogen, elixir-format, fuzzy +msgid "Yearly" +msgstr "jährlich" + +#: lib/mv_web/live/contribution_settings_live.ex:128 +#, elixir-autogen, elixir-format +msgid "Yearly Interval - Joining Period Excluded" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:117 +#, elixir-autogen, elixir-format +msgid "Yearly Interval - Joining Period Included" +msgstr "" + +#~ #: lib/mv_web/live/user_live/show.ex:49 +#~ #, elixir-autogen, elixir-format +#~ msgid "ID" +#~ msgstr "ID" + #~ #: lib/mv_web/live/member_live/show.ex:47 #~ #, elixir-autogen, elixir-format #~ msgid "Id" #~ msgstr "ID" +#~ #: lib/mv_web/live/user_live/show.ex:51 +#~ #, elixir-autogen, elixir-format +#~ msgid "Not set" +#~ msgstr "Nicht gesetzt" + +#~ #: lib/mv_web/live/user_live/index.html.heex:52 +#~ #: lib/mv_web/live/user_live/show.ex:51 +#~ #, elixir-autogen, elixir-format +#~ msgid "OIDC ID" +#~ msgstr "OIDC ID" + #~ #: lib/mv_web/live/member_live/show.ex:33 #~ #, elixir-autogen, elixir-format #~ msgid "This is a member record from your database." diff --git a/priv/gettext/default.pot b/priv/gettext/default.pot index 9f0d0aa..731f1be 100644 --- a/priv/gettext/default.pot +++ b/priv/gettext/default.pot @@ -11,13 +11,14 @@ msgid "" msgstr "" -#: lib/mv_web/components/core_components.ex:386 +#: lib/mv_web/components/core_components.ex:387 +#: lib/mv_web/live/contribution_period_live/show.ex:141 #, elixir-autogen, elixir-format msgid "Actions" msgstr "" #: lib/mv_web/live/member_live/index.html.heex:248 -#: lib/mv_web/live/user_live/index.html.heex:72 +#: lib/mv_web/live/user_live/index.html.heex:71 #, elixir-autogen, elixir-format msgid "Are you sure?" msgstr "" @@ -34,32 +35,35 @@ msgstr "" msgid "City" msgstr "" +#: lib/mv_web/live/contribution_type_live/index.ex:78 #: lib/mv_web/live/member_live/index.html.heex:250 -#: lib/mv_web/live/user_live/index.html.heex:74 +#: lib/mv_web/live/user_live/index.html.heex:73 #, elixir-autogen, elixir-format msgid "Delete" msgstr "" -#: lib/mv_web/live/member_live/form.ex:241 +#: lib/mv_web/live/contribution_type_live/index.ex:66 #: lib/mv_web/live/member_live/index.html.heex:242 -#: lib/mv_web/live/user_live/form.ex:265 -#: lib/mv_web/live/user_live/index.html.heex:66 +#: lib/mv_web/live/user_live/form.ex:267 +#: lib/mv_web/live/user_live/index.html.heex:65 #, elixir-autogen, elixir-format msgid "Edit" msgstr "" +#: lib/mv_web/live/member_live/form.ex:242 #: lib/mv_web/live/member_live/show.ex:40 #: lib/mv_web/live/member_live/show.ex:197 #, elixir-autogen, elixir-format msgid "Edit Member" msgstr "" +#: lib/mv_web/live/contribution_period_live/show.ex:58 #: lib/mv_web/live/member_live/form.ex:106 #: lib/mv_web/live/member_live/index.html.heex:112 #: lib/mv_web/live/member_live/show.ex:75 #: lib/mv_web/live/user_live/form.ex:46 #: lib/mv_web/live/user_live/index.html.heex:44 -#: lib/mv_web/live/user_live/show.ex:50 +#: lib/mv_web/live/user_live/show.ex:49 #, elixir-autogen, elixir-format msgid "Email" msgstr "" @@ -90,7 +94,7 @@ msgid "New Member" msgstr "" #: lib/mv_web/live/member_live/index.html.heex:239 -#: lib/mv_web/live/user_live/index.html.heex:63 +#: lib/mv_web/live/user_live/index.html.heex:62 #, elixir-autogen, elixir-format msgid "Show" msgstr "" @@ -121,6 +125,7 @@ msgstr "" msgid "House Number" msgstr "" +#: lib/mv_web/live/contribution_period_live/show.ex:140 #: lib/mv_web/live/member_live/form.ex:126 #: lib/mv_web/live/member_live/show.ex:124 #, elixir-autogen, elixir-format @@ -129,6 +134,8 @@ msgstr "" #: lib/mv_web/live/components/payment_filter_component.ex:94 #: lib/mv_web/live/components/payment_filter_component.ex:144 +#: lib/mv_web/live/contribution_period_live/show.ex:186 +#: lib/mv_web/live/contribution_period_live/show.ex:241 #: lib/mv_web/live/member_live/form.ex:199 #: lib/mv_web/live/member_live/index.html.heex:229 #: lib/mv_web/live/member_live/show.ex:162 @@ -158,7 +165,7 @@ msgstr "" #: lib/mv_web/live/global_settings_live.ex:55 #: lib/mv_web/live/member_live/form.ex:48 #: lib/mv_web/live/member_live/form.ex:210 -#: lib/mv_web/live/user_live/form.ex:248 +#: lib/mv_web/live/user_live/form.ex:249 #, elixir-autogen, elixir-format msgid "Saving..." msgstr "" @@ -170,8 +177,8 @@ msgid "Street" msgstr "" #: lib/mv_web/live/member_live/index.html.heex:234 -#: lib/mv_web/live/member_live/index/formatter.ex:61 -#: lib/mv_web/live/member_live/show.ex:303 +#: lib/mv_web/live/member_live/index/formatter.ex:62 +#: lib/mv_web/live/member_live/show.ex:290 #, elixir-autogen, elixir-format msgid "No" msgstr "" @@ -182,8 +189,8 @@ msgid "Show Member" msgstr "" #: lib/mv_web/live/member_live/index.html.heex:234 -#: lib/mv_web/live/member_live/index/formatter.ex:60 -#: lib/mv_web/live/member_live/show.ex:303 +#: lib/mv_web/live/member_live/index/formatter.ex:61 +#: lib/mv_web/live/member_live/show.ex:290 #, elixir-autogen, elixir-format msgid "Yes" msgstr "" @@ -241,7 +248,7 @@ msgstr "" #: lib/mv_web/live/custom_field_live/index.ex:120 #: lib/mv_web/live/custom_field_value_live/form.ex:77 #: lib/mv_web/live/member_live/form.ex:208 -#: lib/mv_web/live/user_live/form.ex:251 +#: lib/mv_web/live/user_live/form.ex:252 #, elixir-autogen, elixir-format msgid "Cancel" msgstr "" @@ -261,22 +268,17 @@ msgstr "" msgid "Edit User" msgstr "" -#: lib/mv_web/live/user_live/show.ex:53 +#: lib/mv_web/live/user_live/show.ex:51 #, elixir-autogen, elixir-format msgid "Enabled" msgstr "" -#: lib/mv_web/live/user_live/show.ex:49 -#, elixir-autogen, elixir-format -msgid "ID" -msgstr "" - #: lib/mv_web/live/custom_field_live/form.ex:62 #, elixir-autogen, elixir-format msgid "Immutable" msgstr "" -#: lib/mv_web/components/layouts/navbar.ex:102 +#: lib/mv_web/components/layouts/navbar.ex:113 #, elixir-autogen, elixir-format msgid "Logout" msgstr "" @@ -288,18 +290,19 @@ msgid "Listing Users" msgstr "" #: lib/mv_web/live/custom_field_value_live/form.ex:60 -#: lib/mv_web/live/member_live/form.ex:242 #, elixir-autogen, elixir-format msgid "Member" msgstr "" #: lib/mv_web/components/layouts/navbar.ex:25 -#: lib/mv_web/live/member_live/index.ex:73 +#: lib/mv_web/live/contribution_type_live/index.ex:61 +#: lib/mv_web/live/member_live/index.ex:74 #: lib/mv_web/live/member_live/index.html.heex:3 #, elixir-autogen, elixir-format msgid "Members" msgstr "" +#: lib/mv_web/live/contribution_type_live/index.ex:48 #: lib/mv_web/live/custom_field_live/form.ex:51 #, elixir-autogen, elixir-format msgid "Name" @@ -310,16 +313,12 @@ msgstr "" msgid "New User" msgstr "" -#: lib/mv_web/live/user_live/show.ex:53 +#: lib/mv_web/live/user_live/show.ex:51 #, elixir-autogen, elixir-format msgid "Not enabled" msgstr "" -#: lib/mv_web/live/user_live/show.ex:51 -#, elixir-autogen, elixir-format -msgid "Not set" -msgstr "" - +#: lib/mv_web/live/contribution_period_live/show.ex:207 #: lib/mv_web/live/user_live/form.ex:107 #: lib/mv_web/live/user_live/form.ex:115 #: lib/mv_web/live/user_live/form.ex:224 @@ -327,18 +326,12 @@ msgstr "" msgid "Note" msgstr "" -#: lib/mv_web/live/user_live/index.html.heex:52 -#: lib/mv_web/live/user_live/show.ex:51 -#, elixir-autogen, elixir-format -msgid "OIDC ID" -msgstr "" - -#: lib/mv_web/live/user_live/show.ex:52 +#: lib/mv_web/live/user_live/show.ex:50 #, elixir-autogen, elixir-format msgid "Password Authentication" msgstr "" -#: lib/mv_web/components/layouts/navbar.ex:95 +#: lib/mv_web/components/layouts/navbar.ex:106 #, elixir-autogen, elixir-format msgid "Profil" msgstr "" @@ -358,17 +351,17 @@ msgstr "" msgid "Select member" msgstr "" -#: lib/mv_web/components/layouts/navbar.ex:99 +#: lib/mv_web/components/layouts/navbar.ex:110 #, elixir-autogen, elixir-format msgid "Settings" msgstr "" -#: lib/mv_web/live/user_live/form.ex:249 +#: lib/mv_web/live/user_live/form.ex:250 #, elixir-autogen, elixir-format msgid "Save User" msgstr "" -#: lib/mv_web/live/user_live/show.ex:79 +#: lib/mv_web/live/user_live/show.ex:77 #, elixir-autogen, elixir-format msgid "Show User" msgstr "" @@ -388,7 +381,7 @@ msgstr "" msgid "Use this form to manage user records in your database." msgstr "" -#: lib/mv_web/live/user_live/form.ex:266 +#: lib/mv_web/live/user_live/form.ex:268 #: lib/mv_web/live/user_live/show.ex:34 #, elixir-autogen, elixir-format msgid "User" @@ -416,8 +409,7 @@ msgstr "" msgid "descending" msgstr "" -#: lib/mv_web/live/member_live/form.ex:241 -#: lib/mv_web/live/user_live/form.ex:265 +#: lib/mv_web/live/user_live/form.ex:267 #, elixir-autogen, elixir-format msgid "New" msgstr "" @@ -493,8 +485,8 @@ msgid "User will be created without a password. Check 'Set Password' to add one. msgstr "" #: lib/mv_web/live/user_live/form.ex:126 -#: lib/mv_web/live/user_live/index.html.heex:53 -#: lib/mv_web/live/user_live/show.ex:55 +#: lib/mv_web/live/user_live/index.html.heex:52 +#: lib/mv_web/live/user_live/show.ex:53 #, elixir-autogen, elixir-format msgid "Linked Member" msgstr "" @@ -504,8 +496,8 @@ msgstr "" msgid "Linked User" msgstr "" -#: lib/mv_web/live/user_live/index.html.heex:57 -#: lib/mv_web/live/user_live/show.ex:65 +#: lib/mv_web/live/user_live/index.html.heex:56 +#: lib/mv_web/live/user_live/show.ex:63 #, elixir-autogen, elixir-format msgid "No member linked" msgstr "" @@ -526,14 +518,14 @@ msgstr "" msgid "Back to users list" msgstr "" -#: lib/mv_web/components/layouts/navbar.ex:33 -#: lib/mv_web/components/layouts/navbar.ex:39 +#: lib/mv_web/components/layouts/navbar.ex:44 +#: lib/mv_web/components/layouts/navbar.ex:50 #, elixir-autogen, elixir-format msgid "Select language" msgstr "" -#: lib/mv_web/components/layouts/navbar.ex:46 -#: lib/mv_web/components/layouts/navbar.ex:66 +#: lib/mv_web/components/layouts/navbar.ex:57 +#: lib/mv_web/components/layouts/navbar.ex:77 #, elixir-autogen, elixir-format msgid "Toggle dark mode" msgstr "" @@ -701,6 +693,7 @@ msgstr "" msgid "Manage global settings for the association." msgstr "" +#: lib/mv_web/live/contribution_settings_live.ex:102 #: lib/mv_web/live/global_settings_live.ex:56 #, elixir-autogen, elixir-format msgid "Save Settings" @@ -721,7 +714,7 @@ msgstr "" msgid "Available members" msgstr "" -#: lib/mv_web/live/user_live/form.ex:357 +#: lib/mv_web/live/user_live/form.ex:359 #, elixir-autogen, elixir-format msgid "Failed to link member: %{error}" msgstr "" @@ -761,7 +754,7 @@ msgstr "" msgid "Unlinking scheduled" msgstr "" -#: lib/mv_web/live/member_live/index.ex:159 +#: lib/mv_web/live/member_live/index.ex:160 #, elixir-autogen, elixir-format msgid "Copied %{count} email address to clipboard" msgid_plural "Copied %{count} email addresses to clipboard" @@ -778,12 +771,12 @@ msgstr "" msgid "Copy emails" msgstr "" -#: lib/mv_web/live/member_live/index.ex:148 +#: lib/mv_web/live/member_live/index.ex:149 #, elixir-autogen, elixir-format msgid "No email addresses found" msgstr "" -#: lib/mv_web/live/member_live/index.ex:145 +#: lib/mv_web/live/member_live/index.ex:146 #, elixir-autogen, elixir-format msgid "No members selected" msgstr "" @@ -798,7 +791,7 @@ msgstr "" msgid "Open in email program" msgstr "" -#: lib/mv_web/live/member_live/index.ex:168 +#: lib/mv_web/live/member_live/index.ex:169 #, elixir-autogen, elixir-format msgid "Tip: Paste email addresses into the BCC field for privacy compliance" msgstr "" @@ -923,3 +916,434 @@ msgstr "" #, elixir-autogen, elixir-format msgid "yearly" msgstr "" + +#: lib/mv_web/live/member_live/form.ex:242 +#, elixir-autogen, elixir-format +msgid "Create Member" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:107 +#, elixir-autogen, elixir-format +msgid "%{count} period selected" +msgid_plural "%{count} periods selected" +msgstr[0] "" +msgstr[1] "" + +#: lib/mv_web/live/contribution_type_live/index.ex:113 +#, elixir-autogen, elixir-format +msgid "About Contribution Types" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:138 +#: lib/mv_web/live/contribution_type_live/index.ex:53 +#, elixir-autogen, elixir-format +msgid "Amount" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:48 +#, elixir-autogen, elixir-format +msgid "Back to Settings" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:124 +#, elixir-autogen, elixir-format +msgid "Can be changed at any time. Amount changes affect future periods only." +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:77 +#, elixir-autogen, elixir-format +msgid "Cannot delete - members assigned" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:83 +#, elixir-autogen, elixir-format +msgid "Change Contribution Type" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:42 +#, elixir-autogen, elixir-format +msgid "Configure global settings for membership contributions." +msgstr "" + +#: lib/mv_web/components/layouts/navbar.ex:34 +#: lib/mv_web/live/contribution_settings_live.ex:27 +#: lib/mv_web/live/contribution_settings_live.ex:40 +#, elixir-autogen, elixir-format +msgid "Contribution Settings" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:62 +#, elixir-autogen, elixir-format +msgid "Contribution Start" +msgstr "" + +#: lib/mv_web/components/layouts/navbar.ex:32 +#: lib/mv_web/live/contribution_type_live/index.ex:25 +#: lib/mv_web/live/contribution_type_live/index.ex:36 +#, elixir-autogen, elixir-format +msgid "Contribution Types" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:224 +#, elixir-autogen, elixir-format +msgid "Contribution start" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:41 +#, elixir-autogen, elixir-format +msgid "Contribution type" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:117 +#, elixir-autogen, elixir-format +msgid "Contribution types define different membership fee structures. Each type has a fixed interval (monthly, quarterly, half-yearly, yearly) that cannot be changed after creation." +msgstr "" + +#: lib/mv_web/components/layouts/navbar.ex:30 +#, elixir-autogen, elixir-format +msgid "Contributions" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:39 +#, elixir-autogen, elixir-format +msgid "Contributions for %{name}" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:159 +#, elixir-autogen, elixir-format +msgid "Current" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:60 +#, elixir-autogen, elixir-format +msgid "Default Contribution Type" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:133 +#, elixir-autogen, elixir-format +msgid "Deletion" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:173 +#, elixir-autogen, elixir-format +msgid "Example: Member Contribution View" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:113 +#, elixir-autogen, elixir-format +msgid "Examples" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:262 +#: lib/mv_web/live/contribution_type_live/index.ex:172 +#, elixir-autogen, elixir-format +msgid "Family" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:128 +#, elixir-autogen, elixir-format +msgid "Fixed after creation. Members can only switch between types with the same interval." +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:228 +#, elixir-autogen, elixir-format +msgid "Generated periods" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:52 +#, elixir-autogen, elixir-format +msgid "Global Settings" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:343 +#: lib/mv_web/live/contribution_settings_live.ex:275 +#: lib/mv_web/live/contribution_type_live/index.ex:203 +#, elixir-autogen, elixir-format +msgid "Half-yearly" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:181 +#, elixir-autogen, elixir-format +msgid "Half-yearly contribution for supporting members" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:87 +#: lib/mv_web/live/contribution_type_live/index.ex:188 +#, elixir-autogen, elixir-format +msgid "Honorary" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:85 +#, elixir-autogen, elixir-format +msgid "Include joining period" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:137 +#: lib/mv_web/live/contribution_type_live/index.ex:57 +#: lib/mv_web/live/contribution_type_live/index.ex:127 +#, elixir-autogen, elixir-format +msgid "Interval" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:220 +#, elixir-autogen, elixir-format +msgid "Joining date" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:331 +#, elixir-autogen, elixir-format +msgid "Joining year - reduced to 0" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:38 +#, elixir-autogen, elixir-format +msgid "Manage contribution types for membership fees." +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:116 +#, elixir-autogen, elixir-format +msgid "Mark as Paid" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:120 +#, elixir-autogen, elixir-format +msgid "Mark as Suspended" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:124 +#, elixir-autogen, elixir-format +msgid "Mark as Unpaid" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:26 +#, elixir-autogen, elixir-format +msgid "Member Contributions" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:122 +#, elixir-autogen, elixir-format +msgid "Member pays for the year they joined" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:155 +#, elixir-autogen, elixir-format +msgid "Member pays from the joining month" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:144 +#, elixir-autogen, elixir-format +msgid "Member pays from the next full quarter" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:133 +#, elixir-autogen, elixir-format +msgid "Member pays from the next full year" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:43 +#, elixir-autogen, elixir-format +msgid "Member since" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:92 +#, elixir-autogen, elixir-format +msgid "Members can only switch between contribution types with the same payment interval (e.g., yearly to yearly). This prevents complex period overlaps." +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:341 +#: lib/mv_web/live/contribution_settings_live.ex:273 +#: lib/mv_web/live/contribution_type_live/index.ex:201 +#, elixir-autogen, elixir-format +msgid "Monthly" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:150 +#, elixir-autogen, elixir-format +msgid "Monthly Interval - Joining Period Included" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:165 +#, elixir-autogen, elixir-format +msgid "Monthly fee for students and trainees" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:123 +#, elixir-autogen, elixir-format +msgid "Name & Amount" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:42 +#, elixir-autogen, elixir-format +msgid "New Contribution Type" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:189 +#, elixir-autogen, elixir-format +msgid "No fee for honorary members" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:134 +#, elixir-autogen, elixir-format +msgid "Only possible if no members are assigned to this type." +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:70 +#, elixir-autogen, elixir-format +msgid "Open Contributions" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:301 +#, elixir-autogen, elixir-format +msgid "Paid via bank transfer" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:225 +#: lib/mv_web/live/contribution_settings_live.ex:197 +#: lib/mv_web/live/contribution_type_live/index.ex:97 +#, elixir-autogen, elixir-format +msgid "Preview Mockup" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:342 +#: lib/mv_web/live/contribution_settings_live.ex:274 +#: lib/mv_web/live/contribution_type_live/index.ex:202 +#, elixir-autogen, elixir-format +msgid "Quarterly" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:139 +#, elixir-autogen, elixir-format +msgid "Quarterly Interval - Joining Period Excluded" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:173 +#, elixir-autogen, elixir-format +msgid "Quarterly fee for family memberships" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:86 +#: lib/mv_web/live/contribution_settings_live.ex:250 +#: lib/mv_web/live/contribution_type_live/index.ex:156 +#, elixir-autogen, elixir-format +msgid "Reduced" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:157 +#, elixir-autogen, elixir-format +msgid "Reduced fee for unemployed, pensioners, or low income" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:275 +#: lib/mv_web/live/contribution_settings_live.ex:244 +#: lib/mv_web/live/contribution_type_live/index.ex:148 +#, elixir-autogen, elixir-format +msgid "Regular" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:204 +#, elixir-autogen, elixir-format +msgid "Reopen" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:176 +#, elixir-autogen, elixir-format +msgid "See how the contribution periods will be displayed for an individual member. This example shows Maria Weber with multiple contribution periods." +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:149 +#, elixir-autogen, elixir-format +msgid "Standard membership fee for regular members" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:139 +#, elixir-autogen, elixir-format +msgid "Status" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:256 +#: lib/mv_web/live/contribution_type_live/index.ex:164 +#, elixir-autogen, elixir-format +msgid "Student" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:180 +#, elixir-autogen, elixir-format +msgid "Supporting Member" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:195 +#, elixir-autogen, elixir-format +msgid "Suspend" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:259 +#, elixir-autogen, elixir-format +msgid "Suspended" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:69 +#, elixir-autogen, elixir-format +msgid "This contribution type is automatically assigned to all new members. Can be changed individually per member." +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:227 +#: lib/mv_web/live/contribution_settings_live.ex:199 +#: lib/mv_web/live/contribution_type_live/index.ex:99 +#, elixir-autogen, elixir-format +msgid "This page is not functional and only displays the planned features." +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:136 +#, elixir-autogen, elixir-format +msgid "Time Period" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:66 +#, elixir-autogen, elixir-format +msgid "Total Contributions" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:250 +#, elixir-autogen, elixir-format +msgid "Unpaid" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:183 +#, elixir-autogen, elixir-format +msgid "View Example Member" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:90 +#, elixir-autogen, elixir-format +msgid "When active: Members pay from the period of their joining." +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:93 +#, elixir-autogen, elixir-format +msgid "When inactive: Members pay from the next full period after joining." +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:98 +#, elixir-autogen, elixir-format +msgid "Why are not all contribution types shown?" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:85 +#: lib/mv_web/live/contribution_period_live/show.ex:86 +#: lib/mv_web/live/contribution_period_live/show.ex:87 +#: lib/mv_web/live/contribution_period_live/show.ex:344 +#: lib/mv_web/live/contribution_settings_live.ex:276 +#: lib/mv_web/live/contribution_type_live/index.ex:204 +#, elixir-autogen, elixir-format +msgid "Yearly" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:128 +#, elixir-autogen, elixir-format +msgid "Yearly Interval - Joining Period Excluded" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:117 +#, elixir-autogen, elixir-format +msgid "Yearly Interval - Joining Period Included" +msgstr "" diff --git a/priv/gettext/en/LC_MESSAGES/default.po b/priv/gettext/en/LC_MESSAGES/default.po index 9cb10a3..3c9be04 100644 --- a/priv/gettext/en/LC_MESSAGES/default.po +++ b/priv/gettext/en/LC_MESSAGES/default.po @@ -11,13 +11,14 @@ msgstr "" "Language: en\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: lib/mv_web/components/core_components.ex:386 +#: lib/mv_web/components/core_components.ex:387 +#: lib/mv_web/live/contribution_period_live/show.ex:141 #, elixir-autogen, elixir-format msgid "Actions" msgstr "" #: lib/mv_web/live/member_live/index.html.heex:248 -#: lib/mv_web/live/user_live/index.html.heex:72 +#: lib/mv_web/live/user_live/index.html.heex:71 #, elixir-autogen, elixir-format msgid "Are you sure?" msgstr "" @@ -34,32 +35,35 @@ msgstr "" msgid "City" msgstr "" +#: lib/mv_web/live/contribution_type_live/index.ex:78 #: lib/mv_web/live/member_live/index.html.heex:250 -#: lib/mv_web/live/user_live/index.html.heex:74 +#: lib/mv_web/live/user_live/index.html.heex:73 #, elixir-autogen, elixir-format msgid "Delete" msgstr "" -#: lib/mv_web/live/member_live/form.ex:241 +#: lib/mv_web/live/contribution_type_live/index.ex:66 #: lib/mv_web/live/member_live/index.html.heex:242 -#: lib/mv_web/live/user_live/form.ex:265 -#: lib/mv_web/live/user_live/index.html.heex:66 +#: lib/mv_web/live/user_live/form.ex:267 +#: lib/mv_web/live/user_live/index.html.heex:65 #, elixir-autogen, elixir-format msgid "Edit" msgstr "" +#: lib/mv_web/live/member_live/form.ex:242 #: lib/mv_web/live/member_live/show.ex:40 #: lib/mv_web/live/member_live/show.ex:197 #, elixir-autogen, elixir-format msgid "Edit Member" msgstr "" +#: lib/mv_web/live/contribution_period_live/show.ex:58 #: lib/mv_web/live/member_live/form.ex:106 #: lib/mv_web/live/member_live/index.html.heex:112 #: lib/mv_web/live/member_live/show.ex:75 #: lib/mv_web/live/user_live/form.ex:46 #: lib/mv_web/live/user_live/index.html.heex:44 -#: lib/mv_web/live/user_live/show.ex:50 +#: lib/mv_web/live/user_live/show.ex:49 #, elixir-autogen, elixir-format msgid "Email" msgstr "" @@ -90,7 +94,7 @@ msgid "New Member" msgstr "" #: lib/mv_web/live/member_live/index.html.heex:239 -#: lib/mv_web/live/user_live/index.html.heex:63 +#: lib/mv_web/live/user_live/index.html.heex:62 #, elixir-autogen, elixir-format msgid "Show" msgstr "" @@ -121,6 +125,7 @@ msgstr "" msgid "House Number" msgstr "" +#: lib/mv_web/live/contribution_period_live/show.ex:140 #: lib/mv_web/live/member_live/form.ex:126 #: lib/mv_web/live/member_live/show.ex:124 #, elixir-autogen, elixir-format @@ -129,6 +134,8 @@ msgstr "" #: lib/mv_web/live/components/payment_filter_component.ex:94 #: lib/mv_web/live/components/payment_filter_component.ex:144 +#: lib/mv_web/live/contribution_period_live/show.ex:186 +#: lib/mv_web/live/contribution_period_live/show.ex:241 #: lib/mv_web/live/member_live/form.ex:199 #: lib/mv_web/live/member_live/index.html.heex:229 #: lib/mv_web/live/member_live/show.ex:162 @@ -158,7 +165,7 @@ msgstr "" #: lib/mv_web/live/global_settings_live.ex:55 #: lib/mv_web/live/member_live/form.ex:48 #: lib/mv_web/live/member_live/form.ex:210 -#: lib/mv_web/live/user_live/form.ex:248 +#: lib/mv_web/live/user_live/form.ex:249 #, elixir-autogen, elixir-format msgid "Saving..." msgstr "" @@ -170,8 +177,8 @@ msgid "Street" msgstr "" #: lib/mv_web/live/member_live/index.html.heex:234 -#: lib/mv_web/live/member_live/index/formatter.ex:61 -#: lib/mv_web/live/member_live/show.ex:303 +#: lib/mv_web/live/member_live/index/formatter.ex:62 +#: lib/mv_web/live/member_live/show.ex:290 #, elixir-autogen, elixir-format msgid "No" msgstr "" @@ -182,8 +189,8 @@ msgid "Show Member" msgstr "" #: lib/mv_web/live/member_live/index.html.heex:234 -#: lib/mv_web/live/member_live/index/formatter.ex:60 -#: lib/mv_web/live/member_live/show.ex:303 +#: lib/mv_web/live/member_live/index/formatter.ex:61 +#: lib/mv_web/live/member_live/show.ex:290 #, elixir-autogen, elixir-format msgid "Yes" msgstr "" @@ -241,7 +248,7 @@ msgstr "" #: lib/mv_web/live/custom_field_live/index.ex:120 #: lib/mv_web/live/custom_field_value_live/form.ex:77 #: lib/mv_web/live/member_live/form.ex:208 -#: lib/mv_web/live/user_live/form.ex:251 +#: lib/mv_web/live/user_live/form.ex:252 #, elixir-autogen, elixir-format msgid "Cancel" msgstr "" @@ -261,22 +268,17 @@ msgstr "" msgid "Edit User" msgstr "" -#: lib/mv_web/live/user_live/show.ex:53 +#: lib/mv_web/live/user_live/show.ex:51 #, elixir-autogen, elixir-format msgid "Enabled" msgstr "" -#: lib/mv_web/live/user_live/show.ex:49 -#, elixir-autogen, elixir-format -msgid "ID" -msgstr "" - #: lib/mv_web/live/custom_field_live/form.ex:62 #, elixir-autogen, elixir-format msgid "Immutable" msgstr "" -#: lib/mv_web/components/layouts/navbar.ex:102 +#: lib/mv_web/components/layouts/navbar.ex:113 #, elixir-autogen, elixir-format msgid "Logout" msgstr "" @@ -288,18 +290,19 @@ msgid "Listing Users" msgstr "" #: lib/mv_web/live/custom_field_value_live/form.ex:60 -#: lib/mv_web/live/member_live/form.ex:242 #, elixir-autogen, elixir-format msgid "Member" msgstr "" #: lib/mv_web/components/layouts/navbar.ex:25 -#: lib/mv_web/live/member_live/index.ex:73 +#: lib/mv_web/live/contribution_type_live/index.ex:61 +#: lib/mv_web/live/member_live/index.ex:74 #: lib/mv_web/live/member_live/index.html.heex:3 #, elixir-autogen, elixir-format msgid "Members" msgstr "" +#: lib/mv_web/live/contribution_type_live/index.ex:48 #: lib/mv_web/live/custom_field_live/form.ex:51 #, elixir-autogen, elixir-format msgid "Name" @@ -310,16 +313,12 @@ msgstr "" msgid "New User" msgstr "" -#: lib/mv_web/live/user_live/show.ex:53 +#: lib/mv_web/live/user_live/show.ex:51 #, elixir-autogen, elixir-format msgid "Not enabled" msgstr "" -#: lib/mv_web/live/user_live/show.ex:51 -#, elixir-autogen, elixir-format, fuzzy -msgid "Not set" -msgstr "" - +#: lib/mv_web/live/contribution_period_live/show.ex:207 #: lib/mv_web/live/user_live/form.ex:107 #: lib/mv_web/live/user_live/form.ex:115 #: lib/mv_web/live/user_live/form.ex:224 @@ -327,18 +326,12 @@ msgstr "" msgid "Note" msgstr "" -#: lib/mv_web/live/user_live/index.html.heex:52 -#: lib/mv_web/live/user_live/show.ex:51 -#, elixir-autogen, elixir-format -msgid "OIDC ID" -msgstr "" - -#: lib/mv_web/live/user_live/show.ex:52 +#: lib/mv_web/live/user_live/show.ex:50 #, elixir-autogen, elixir-format msgid "Password Authentication" msgstr "" -#: lib/mv_web/components/layouts/navbar.ex:95 +#: lib/mv_web/components/layouts/navbar.ex:106 #, elixir-autogen, elixir-format msgid "Profil" msgstr "" @@ -358,17 +351,17 @@ msgstr "" msgid "Select member" msgstr "" -#: lib/mv_web/components/layouts/navbar.ex:99 +#: lib/mv_web/components/layouts/navbar.ex:110 #, elixir-autogen, elixir-format msgid "Settings" msgstr "" -#: lib/mv_web/live/user_live/form.ex:249 +#: lib/mv_web/live/user_live/form.ex:250 #, elixir-autogen, elixir-format, fuzzy msgid "Save User" msgstr "" -#: lib/mv_web/live/user_live/show.ex:79 +#: lib/mv_web/live/user_live/show.ex:77 #, elixir-autogen, elixir-format, fuzzy msgid "Show User" msgstr "" @@ -388,7 +381,7 @@ msgstr "" msgid "Use this form to manage user records in your database." msgstr "" -#: lib/mv_web/live/user_live/form.ex:266 +#: lib/mv_web/live/user_live/form.ex:268 #: lib/mv_web/live/user_live/show.ex:34 #, elixir-autogen, elixir-format msgid "User" @@ -416,8 +409,7 @@ msgstr "" msgid "descending" msgstr "" -#: lib/mv_web/live/member_live/form.ex:241 -#: lib/mv_web/live/user_live/form.ex:265 +#: lib/mv_web/live/user_live/form.ex:267 #, elixir-autogen, elixir-format msgid "New" msgstr "" @@ -493,8 +485,8 @@ msgid "User will be created without a password. Check 'Set Password' to add one. msgstr "User will be created without a password. Check 'Set Password' to add one." #: lib/mv_web/live/user_live/form.ex:126 -#: lib/mv_web/live/user_live/index.html.heex:53 -#: lib/mv_web/live/user_live/show.ex:55 +#: lib/mv_web/live/user_live/index.html.heex:52 +#: lib/mv_web/live/user_live/show.ex:53 #, elixir-autogen, elixir-format, fuzzy msgid "Linked Member" msgstr "" @@ -504,8 +496,8 @@ msgstr "" msgid "Linked User" msgstr "" -#: lib/mv_web/live/user_live/index.html.heex:57 -#: lib/mv_web/live/user_live/show.ex:65 +#: lib/mv_web/live/user_live/index.html.heex:56 +#: lib/mv_web/live/user_live/show.ex:63 #, elixir-autogen, elixir-format msgid "No member linked" msgstr "" @@ -526,14 +518,14 @@ msgstr "" msgid "Back to users list" msgstr "" -#: lib/mv_web/components/layouts/navbar.ex:33 -#: lib/mv_web/components/layouts/navbar.ex:39 +#: lib/mv_web/components/layouts/navbar.ex:44 +#: lib/mv_web/components/layouts/navbar.ex:50 #, elixir-autogen, elixir-format, fuzzy msgid "Select language" msgstr "" -#: lib/mv_web/components/layouts/navbar.ex:46 -#: lib/mv_web/components/layouts/navbar.ex:66 +#: lib/mv_web/components/layouts/navbar.ex:57 +#: lib/mv_web/components/layouts/navbar.ex:77 #, elixir-autogen, elixir-format msgid "Toggle dark mode" msgstr "" @@ -701,6 +693,7 @@ msgstr "" msgid "Manage global settings for the association." msgstr "" +#: lib/mv_web/live/contribution_settings_live.ex:102 #: lib/mv_web/live/global_settings_live.ex:56 #, elixir-autogen, elixir-format, fuzzy msgid "Save Settings" @@ -721,7 +714,7 @@ msgstr "" msgid "Available members" msgstr "" -#: lib/mv_web/live/user_live/form.ex:357 +#: lib/mv_web/live/user_live/form.ex:359 #, elixir-autogen, elixir-format msgid "Failed to link member: %{error}" msgstr "" @@ -761,7 +754,7 @@ msgstr "" msgid "Unlinking scheduled" msgstr "" -#: lib/mv_web/live/member_live/index.ex:159 +#: lib/mv_web/live/member_live/index.ex:160 #, elixir-autogen, elixir-format msgid "Copied %{count} email address to clipboard" msgid_plural "Copied %{count} email addresses to clipboard" @@ -778,12 +771,12 @@ msgstr "" msgid "Copy emails" msgstr "" -#: lib/mv_web/live/member_live/index.ex:148 +#: lib/mv_web/live/member_live/index.ex:149 #, elixir-autogen, elixir-format msgid "No email addresses found" msgstr "" -#: lib/mv_web/live/member_live/index.ex:145 +#: lib/mv_web/live/member_live/index.ex:146 #, elixir-autogen, elixir-format, fuzzy msgid "No members selected" msgstr "" @@ -798,7 +791,7 @@ msgstr "" msgid "Open in email program" msgstr "" -#: lib/mv_web/live/member_live/index.ex:168 +#: lib/mv_web/live/member_live/index.ex:169 #, elixir-autogen, elixir-format msgid "Tip: Paste email addresses into the BCC field for privacy compliance" msgstr "" @@ -924,11 +917,458 @@ msgstr "" msgid "yearly" msgstr "" +#: lib/mv_web/live/member_live/form.ex:242 +#, elixir-autogen, elixir-format +msgid "Create Member" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:107 +#, elixir-autogen, elixir-format +msgid "%{count} period selected" +msgid_plural "%{count} periods selected" +msgstr[0] "" +msgstr[1] "" + +#: lib/mv_web/live/contribution_type_live/index.ex:113 +#, elixir-autogen, elixir-format +msgid "About Contribution Types" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:138 +#: lib/mv_web/live/contribution_type_live/index.ex:53 +#, elixir-autogen, elixir-format +msgid "Amount" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:48 +#, elixir-autogen, elixir-format +msgid "Back to Settings" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:124 +#, elixir-autogen, elixir-format +msgid "Can be changed at any time. Amount changes affect future periods only." +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:77 +#, elixir-autogen, elixir-format +msgid "Cannot delete - members assigned" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:83 +#, elixir-autogen, elixir-format +msgid "Change Contribution Type" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:42 +#, elixir-autogen, elixir-format +msgid "Configure global settings for membership contributions." +msgstr "" + +#: lib/mv_web/components/layouts/navbar.ex:34 +#: lib/mv_web/live/contribution_settings_live.ex:27 +#: lib/mv_web/live/contribution_settings_live.ex:40 +#, elixir-autogen, elixir-format, fuzzy +msgid "Contribution Settings" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:62 +#, elixir-autogen, elixir-format, fuzzy +msgid "Contribution Start" +msgstr "" + +#: lib/mv_web/components/layouts/navbar.ex:32 +#: lib/mv_web/live/contribution_type_live/index.ex:25 +#: lib/mv_web/live/contribution_type_live/index.ex:36 +#, elixir-autogen, elixir-format, fuzzy +msgid "Contribution Types" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:224 +#, elixir-autogen, elixir-format, fuzzy +msgid "Contribution start" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:41 +#, elixir-autogen, elixir-format, fuzzy +msgid "Contribution type" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:117 +#, elixir-autogen, elixir-format +msgid "Contribution types define different membership fee structures. Each type has a fixed interval (monthly, quarterly, half-yearly, yearly) that cannot be changed after creation." +msgstr "" + +#: lib/mv_web/components/layouts/navbar.ex:30 +#, elixir-autogen, elixir-format, fuzzy +msgid "Contributions" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:39 +#, elixir-autogen, elixir-format, fuzzy +msgid "Contributions for %{name}" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:159 +#, elixir-autogen, elixir-format +msgid "Current" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:60 +#, elixir-autogen, elixir-format +msgid "Default Contribution Type" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:133 +#, elixir-autogen, elixir-format, fuzzy +msgid "Deletion" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:173 +#, elixir-autogen, elixir-format +msgid "Example: Member Contribution View" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:113 +#, elixir-autogen, elixir-format +msgid "Examples" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:262 +#: lib/mv_web/live/contribution_type_live/index.ex:172 +#, elixir-autogen, elixir-format +msgid "Family" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:128 +#, elixir-autogen, elixir-format +msgid "Fixed after creation. Members can only switch between types with the same interval." +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:228 +#, elixir-autogen, elixir-format +msgid "Generated periods" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:52 +#, elixir-autogen, elixir-format, fuzzy +msgid "Global Settings" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:343 +#: lib/mv_web/live/contribution_settings_live.ex:275 +#: lib/mv_web/live/contribution_type_live/index.ex:203 +#, elixir-autogen, elixir-format +msgid "Half-yearly" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:181 +#, elixir-autogen, elixir-format +msgid "Half-yearly contribution for supporting members" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:87 +#: lib/mv_web/live/contribution_type_live/index.ex:188 +#, elixir-autogen, elixir-format +msgid "Honorary" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:85 +#, elixir-autogen, elixir-format +msgid "Include joining period" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:137 +#: lib/mv_web/live/contribution_type_live/index.ex:57 +#: lib/mv_web/live/contribution_type_live/index.ex:127 +#, elixir-autogen, elixir-format +msgid "Interval" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:220 +#, elixir-autogen, elixir-format, fuzzy +msgid "Joining date" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:331 +#, elixir-autogen, elixir-format +msgid "Joining year - reduced to 0" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:38 +#, elixir-autogen, elixir-format +msgid "Manage contribution types for membership fees." +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:116 +#, elixir-autogen, elixir-format +msgid "Mark as Paid" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:120 +#, elixir-autogen, elixir-format +msgid "Mark as Suspended" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:124 +#, elixir-autogen, elixir-format +msgid "Mark as Unpaid" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:26 +#, elixir-autogen, elixir-format +msgid "Member Contributions" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:122 +#, elixir-autogen, elixir-format +msgid "Member pays for the year they joined" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:155 +#, elixir-autogen, elixir-format +msgid "Member pays from the joining month" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:144 +#, elixir-autogen, elixir-format +msgid "Member pays from the next full quarter" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:133 +#, elixir-autogen, elixir-format +msgid "Member pays from the next full year" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:43 +#, elixir-autogen, elixir-format, fuzzy +msgid "Member since" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:92 +#, elixir-autogen, elixir-format +msgid "Members can only switch between contribution types with the same payment interval (e.g., yearly to yearly). This prevents complex period overlaps." +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:341 +#: lib/mv_web/live/contribution_settings_live.ex:273 +#: lib/mv_web/live/contribution_type_live/index.ex:201 +#, elixir-autogen, elixir-format, fuzzy +msgid "Monthly" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:150 +#, elixir-autogen, elixir-format +msgid "Monthly Interval - Joining Period Included" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:165 +#, elixir-autogen, elixir-format +msgid "Monthly fee for students and trainees" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:123 +#, elixir-autogen, elixir-format +msgid "Name & Amount" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:42 +#, elixir-autogen, elixir-format, fuzzy +msgid "New Contribution Type" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:189 +#, elixir-autogen, elixir-format +msgid "No fee for honorary members" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:134 +#, elixir-autogen, elixir-format +msgid "Only possible if no members are assigned to this type." +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:70 +#, elixir-autogen, elixir-format +msgid "Open Contributions" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:301 +#, elixir-autogen, elixir-format +msgid "Paid via bank transfer" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:225 +#: lib/mv_web/live/contribution_settings_live.ex:197 +#: lib/mv_web/live/contribution_type_live/index.ex:97 +#, elixir-autogen, elixir-format +msgid "Preview Mockup" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:342 +#: lib/mv_web/live/contribution_settings_live.ex:274 +#: lib/mv_web/live/contribution_type_live/index.ex:202 +#, elixir-autogen, elixir-format +msgid "Quarterly" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:139 +#, elixir-autogen, elixir-format +msgid "Quarterly Interval - Joining Period Excluded" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:173 +#, elixir-autogen, elixir-format +msgid "Quarterly fee for family memberships" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:86 +#: lib/mv_web/live/contribution_settings_live.ex:250 +#: lib/mv_web/live/contribution_type_live/index.ex:156 +#, elixir-autogen, elixir-format +msgid "Reduced" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:157 +#, elixir-autogen, elixir-format +msgid "Reduced fee for unemployed, pensioners, or low income" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:275 +#: lib/mv_web/live/contribution_settings_live.ex:244 +#: lib/mv_web/live/contribution_type_live/index.ex:148 +#, elixir-autogen, elixir-format +msgid "Regular" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:204 +#, elixir-autogen, elixir-format +msgid "Reopen" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:176 +#, elixir-autogen, elixir-format +msgid "See how the contribution periods will be displayed for an individual member. This example shows Maria Weber with multiple contribution periods." +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:149 +#, elixir-autogen, elixir-format +msgid "Standard membership fee for regular members" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:139 +#, elixir-autogen, elixir-format +msgid "Status" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:256 +#: lib/mv_web/live/contribution_type_live/index.ex:164 +#, elixir-autogen, elixir-format +msgid "Student" +msgstr "" + +#: lib/mv_web/live/contribution_type_live/index.ex:180 +#, elixir-autogen, elixir-format +msgid "Supporting Member" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:195 +#, elixir-autogen, elixir-format +msgid "Suspend" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:259 +#, elixir-autogen, elixir-format +msgid "Suspended" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:69 +#, elixir-autogen, elixir-format +msgid "This contribution type is automatically assigned to all new members. Can be changed individually per member." +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:227 +#: lib/mv_web/live/contribution_settings_live.ex:199 +#: lib/mv_web/live/contribution_type_live/index.ex:99 +#, elixir-autogen, elixir-format +msgid "This page is not functional and only displays the planned features." +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:136 +#, elixir-autogen, elixir-format +msgid "Time Period" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:66 +#, elixir-autogen, elixir-format +msgid "Total Contributions" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:250 +#, elixir-autogen, elixir-format +msgid "Unpaid" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:183 +#, elixir-autogen, elixir-format +msgid "View Example Member" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:90 +#, elixir-autogen, elixir-format +msgid "When active: Members pay from the period of their joining." +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:93 +#, elixir-autogen, elixir-format +msgid "When inactive: Members pay from the next full period after joining." +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:98 +#, elixir-autogen, elixir-format +msgid "Why are not all contribution types shown?" +msgstr "" + +#: lib/mv_web/live/contribution_period_live/show.ex:85 +#: lib/mv_web/live/contribution_period_live/show.ex:86 +#: lib/mv_web/live/contribution_period_live/show.ex:87 +#: lib/mv_web/live/contribution_period_live/show.ex:344 +#: lib/mv_web/live/contribution_settings_live.ex:276 +#: lib/mv_web/live/contribution_type_live/index.ex:204 +#, elixir-autogen, elixir-format, fuzzy +msgid "Yearly" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:128 +#, elixir-autogen, elixir-format +msgid "Yearly Interval - Joining Period Excluded" +msgstr "" + +#: lib/mv_web/live/contribution_settings_live.ex:117 +#, elixir-autogen, elixir-format +msgid "Yearly Interval - Joining Period Included" +msgstr "" + +#~ #: lib/mv_web/live/user_live/show.ex:49 +#~ #, elixir-autogen, elixir-format +#~ msgid "ID" +#~ msgstr "" + #~ #: lib/mv_web/live/member_live/show.ex:47 #~ #, elixir-autogen, elixir-format #~ msgid "Id" #~ msgstr "" +#~ #: lib/mv_web/live/user_live/show.ex:51 +#~ #, elixir-autogen, elixir-format, fuzzy +#~ msgid "Not set" +#~ msgstr "" + +#~ #: lib/mv_web/live/user_live/index.html.heex:52 +#~ #: lib/mv_web/live/user_live/show.ex:51 +#~ #, elixir-autogen, elixir-format +#~ msgid "OIDC ID" +#~ msgstr "" + #~ #: lib/mv_web/live/member_live/show.ex:33 #~ #, elixir-autogen, elixir-format #~ msgid "This is a member record from your database."