mitgliederverwaltung/lib/mv_web/translations/member_fields.ex
Simon 1675d66b67
Some checks failed
continuous-integration/drone/push Build is failing
translate field names for visibility dropdown
2025-12-11 00:51:26 +01:00

41 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(:paid), do: gettext("Paid")
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