Packages

Simplify handling localized routes in Elixir Phoenix applications, with and without LiveView

Current section

Files

Jump to
phoenix_multilingual lib phoenix_multilingual metadata.ex
Raw

lib/phoenix_multilingual/metadata.ex

defmodule PhoenixMultilingual.Metadata do
@moduledoc """
A struct to hold multilingual metadata for a route.
"""
@enforce_keys [:locale]
defstruct [:locale, :view_override]
@type t :: %__MODULE__{
locale: String.t(),
view_override: atom() | nil
}
def new(locale) when is_binary(locale) do
%__MODULE__{locale: locale}
end
def new(view_name, locale) when is_atom(view_name) and is_binary(locale) do
%__MODULE__{locale: locale, view_override: view_name}
end
def new(view_name, locale) when is_binary(view_name) do
view_atom = String.to_existing_atom(view_name)
new(view_atom, locale)
end
def new(view_name, locale) when is_atom(locale) do
locale_string = Atom.to_string(locale)
new(view_name, locale_string)
end
end