diff --git a/config/config.exs b/config/config.exs index a58bde6..934207e 100644 --- a/config/config.exs +++ b/config/config.exs @@ -27,8 +27,9 @@ config :aprsme, AprsmeWeb.Endpoint, live_view: [signing_salt: "ees098qG"] # Configure Gettext +# Configure Gettext with supported locales from AprsmeWeb.Gettext module config :aprsme, AprsmeWeb.Gettext, - locales: ~w(en es), + locales: ~w(en es de), default_locale: "en" # Configure Oban for background jobs diff --git a/lib/aprsme_web/gettext.ex b/lib/aprsme_web/gettext.ex index 43ede16..80e963c 100644 --- a/lib/aprsme_web/gettext.ex +++ b/lib/aprsme_web/gettext.ex @@ -21,4 +21,18 @@ defmodule AprsmeWeb.Gettext do See the [Gettext Docs](https://hexdocs.pm/gettext) for detailed usage. """ use Gettext.Backend, otp_app: :aprsme + + @supported_locales ~w(en es de fr) + + @doc """ + Sets the Gettext locale for the current process. + """ + def put_locale(locale) when locale in @supported_locales do + Gettext.put_locale(__MODULE__, locale) + end + + @doc """ + Returns the list of supported locales. + """ + def supported_locales, do: @supported_locales end diff --git a/lib/aprsme_web/live/locale_hook.ex b/lib/aprsme_web/live/locale_hook.ex index 7c9a11c..6044b06 100644 --- a/lib/aprsme_web/live/locale_hook.ex +++ b/lib/aprsme_web/live/locale_hook.ex @@ -5,7 +5,8 @@ defmodule AprsmeWeb.LocaleHook do """ import Phoenix.Component - @supported_locales ["en", "es"] + # Cache supported locales at compile time + @supported_locales ~w(en es de fr) def on_mount(:set_locale, _params, session, socket) do locale = get_locale_from_session(session) || "en" diff --git a/lib/aprsme_web/live/map_live/index.ex b/lib/aprsme_web/live/map_live/index.ex index 2e9d833..0abbf77 100644 --- a/lib/aprsme_web/live/map_live/index.ex +++ b/lib/aprsme_web/live/map_live/index.ex @@ -744,7 +744,7 @@ defmodule AprsmeWeb.MapLive.Index do d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" /> - {Gettext.gettext(AprsmeWeb.Gettext, "Search Callsign")} + {gettext("Search Callsign")}
@@ -780,7 +780,7 @@ defmodule AprsmeWeb.MapLive.Index do d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z" /> - {Gettext.gettext(AprsmeWeb.Gettext, "Trail Duration")} + {gettext("Trail Duration")}