mitgliederverwaltung/lib/mv_web/translations/member_fields.ex
Moritz 098b3b0a2a
Remove paid field from members
Remove paid field from Member resource, database migration,
tests, seeds, and UI. This field is no longer needed as payment
status is now tracked via membership fee cycles.
2025-12-18 15:11:02 +01:00

40 lines
1.3 KiB
Elixir

defmodule MvWeb.Translations.MemberFields do
@moduledoc """
Helper module to dynamically translate member field names.
## Features
- Translates technical field names (atoms) to human-friendly localized text
- Used primarily in the field visibility dropdown component
## Example
iex> MvWeb.Translations.MemberFields.label(:first_name)
"Vorname" # when locale is "de"
iex> MvWeb.Translations.MemberFields.label(:first_name)
"First Name" # when locale is "en"
"""
use Gettext, backend: MvWeb.Gettext
@spec label(atom()) :: String.t()
def label(:first_name), do: gettext("First Name")
def label(:last_name), do: gettext("Last Name")
def label(:email), do: gettext("Email")
def label(:phone_number), do: gettext("Phone")
def label(:join_date), do: gettext("Join Date")
def label(:exit_date), do: gettext("Exit Date")
def label(:notes), do: gettext("Notes")
def label(:city), do: gettext("City")
def label(:street), do: gettext("Street")
def label(:house_number), do: gettext("House Number")
def label(:postal_code), do: gettext("Postal Code")
# Fallback for unknown fields
def label(field) do
field
|> to_string()
|> String.replace("_", " ")
|> String.split()
|> Enum.map_join(" ", &String.capitalize/1)
end
end