Current section

Files

Jump to
corex lib components pin_input translation.ex
Raw

lib/components/pin_input/translation.ex

defmodule Corex.PinInput.Translation do
@moduledoc """
Translatable strings for [`Corex.PinInput`](Corex.PinInput.html).
Pass `translation={%Corex.PinInput.Translation{}}` to override any field. Omitted fields use gettext defaults (see table).
| Field | Default | Used for |
| ----- | ------- | -------- |
| `digit` | Digit %{digit} | Per-cell `aria-label` (`%{digit}` is the 1-based index at render) |
Partial override example:
translation={%Corex.PinInput.Translation{
digit: Corex.Gettext.gettext("Cell %{digit}", digit: "%{digit}")
}}
"""
alias Corex.Gettext
defstruct [:digit]
@type t :: %__MODULE__{digit: String.t()}
@doc "Merges partial fields with gettext defaults."
def resolve(nil), do: default()
def resolve(%__MODULE__{} = partial), do: merge(partial, default())
defp default do
%__MODULE__{digit: Gettext.gettext("Digit %{digit}", digit: "%{digit}")}
end
defp merge(%__MODULE__{} = partial, %__MODULE__{} = default) do
%__MODULE__{digit: Corex.Translation.take(partial.digit, default.digit)}
end
end